Now on revision 111926. 2 tag(s) updated. ------------------------------------------------------------ revno: 111926 committer: Paul Eggert branch nick: trunk timestamp: Sat 2013-03-02 23:26:39 -0800 message: * bzrmerge.el (bzrmerge-apply): Omit Latin-1 char from diagnostic. If there were a real need, it should be UTF-8 anyway. diff: === modified file 'admin/ChangeLog' --- admin/ChangeLog 2013-02-25 05:55:37 +0000 +++ admin/ChangeLog 2013-03-03 07:26:39 +0000 @@ -1,3 +1,8 @@ +2013-03-03 Paul Eggert + + * bzrmerge.el (bzrmerge-apply): Omit Latin-1 char from diagnostic. + If there were a real need, it should be UTF-8 anyway. + 2013-02-25 Paul Eggert Simplify data_start configuration (Bug#13783). === modified file 'admin/bzrmerge.el' --- admin/bzrmerge.el 2013-01-01 09:11:05 +0000 +++ admin/bzrmerge.el 2013-03-03 07:26:39 +0000 @@ -320,7 +320,7 @@ ;; bzrmerge-add-metadata does not work when there ;; are conflicts. (display-warning 'bzrmerge "Resolve conflicts manually. -ĦBEWARE! Important metadata is kept in this Emacs session! +BEWARE! Important metadata is kept in this Emacs session! Do not commit without re-running `M-x bzrmerge' first!" :warning bzrmerge-warning-buffer)) (error "Resolve conflicts manually"))))) ------------------------------------------------------------ revno: 111925 committer: Paul Eggert branch nick: trunk timestamp: Sat 2013-03-02 22:40:21 -0800 message: Spelling fixes. diff: === modified file 'doc/misc/tramp.texi' --- doc/misc/tramp.texi 2013-03-01 21:14:59 +0000 +++ doc/misc/tramp.texi 2013-03-03 06:40:21 +0000 @@ -1009,7 +1009,7 @@ runs under the permissions of the @command{adbd} process on the Android device. If a user name is specified, @value{tramp} applies an @command{su} on the device. This does not work with all Android -devices, especially with nonrooted ones. In that case, an error +devices, especially with unrooted ones. In that case, an error message is displayed. If there is exactly one Android device connected to the local machine, === modified file 'etc/MH-E-NEWS' --- etc/MH-E-NEWS 2013-03-03 00:02:19 +0000 +++ etc/MH-E-NEWS 2013-03-03 06:40:21 +0000 @@ -14,7 +14,7 @@ The function `mh-rmail' now switches to `+inbox' as expected (closes SF #271). -*** Problem forwarding a messsage +*** Problem forwarding a message Forwarding messages resulted in the error: `(wrong-type-argument number-or-marker-p nil).' This has been fixed by setting the mail @@ -1005,7 +1005,7 @@ *** mh-speedbar-selected-folder-with-unseen-messages Renamed from `mh-speedbar-selected-folder-with-unseen-messages-face' -per new Emacs conventions. +per new Emacs conventions. @@ -1118,7 +1118,7 @@ *** Face Variable Names Now Follow Current Conventions -The -face suffix has been dropped from all face names. +The -face suffix has been dropped from all face names. *** Swish Fixes @@ -3379,4 +3379,3 @@ mode: outline paragraph-separate: "[ ]*$" end: - === modified file 'lisp/textmodes/ispell.el' --- lisp/textmodes/ispell.el 2013-03-01 17:46:57 +0000 +++ lisp/textmodes/ispell.el 2013-03-03 06:40:21 +0000 @@ -1157,7 +1157,7 @@ (use-for-dicts (list dict)) (dict-args-cdr (cdr (ispell-parse-hunspell-affix-file dict))) newlist) - ;; Get a list of unitialized dicts using the same affix file. + ;; Get a list of uninitialized dicts using the same affix file. (dolist (dict-equiv-alist-entry ispell-hunspell-dictionary-equivs-alist) (let ((dict-equiv-key (car dict-equiv-alist-entry)) (dict-equiv-value (cadr dict-equiv-alist-entry))) ------------------------------------------------------------ revno: 111924 committer: Glenn Morris branch nick: trunk timestamp: Sat 2013-03-02 18:43:30 -0800 message: * make-dist: Remove lzma (it's replaced by xz). diff: === modified file 'ChangeLog' --- ChangeLog 2013-03-01 15:16:43 +0000 +++ ChangeLog 2013-03-03 02:43:30 +0000 @@ -1,3 +1,7 @@ +2013-03-03 Glenn Morris + + * make-dist: Remove lzma (it's replaced by xz). + 2013-03-01 Paul Eggert Merge from gnulib, incorporating: === modified file 'make-dist' --- make-dist 2013-02-01 03:58:50 +0000 +++ make-dist 2013-03-03 02:43:30 +0000 @@ -83,10 +83,6 @@ "--bzip2") default_gzip="bzip2" ;; - ## Same with lzma. - "--lzma") - default_gzip="lzma" - ;; ## Same with xz. "--xz") default_gzip="xz" @@ -107,7 +103,6 @@ echo "" echo " --bzip2 use bzip2 instead of gzip" echo " --clean-up delete staging directories when done" - echo " --lzma use lzma instead of gzip" echo " --xz use xz instead of gzip" echo " --no-compress don't compress" echo " --newer=TIME don't include files older than TIME" @@ -518,7 +513,6 @@ fi case "${default_gzip}" in bzip2) gzip_extension=.bz2 ;; - lzma) gzip_extension=.lzma ;; xz) gzip_extension=.xz ;; gzip) gzip_extension=.gz ; default_gzip="gzip --best";; *) gzip_extension= ;; ------------------------------------------------------------ revno: 111923 [merge] committer: Glenn Morris branch nick: trunk timestamp: Sat 2013-03-02 18:39:57 -0800 message: Merge from emacs-24; up to r111314 diff: === modified file 'doc/lispintro/ChangeLog' --- doc/lispintro/ChangeLog 2013-01-02 16:13:04 +0000 +++ doc/lispintro/ChangeLog 2013-03-03 02:39:57 +0000 @@ -1,3 +1,8 @@ +2013-03-03 Glenn Morris + + * emacs-lisp-intro.texi (Digression into C): Update example. + (defcustom): Fix typo. + 2012-12-22 Glenn Morris * Makefile.in (srcs): New variable, adding doclicense.texi. === modified file 'doc/lispintro/emacs-lisp-intro.texi' --- doc/lispintro/emacs-lisp-intro.texi 2013-02-22 17:13:05 +0000 +++ doc/lispintro/emacs-lisp-intro.texi 2013-03-03 02:39:57 +0000 @@ -9116,8 +9116,8 @@ system. Since it is very simple, I will digress briefly from Lisp and describe it here. -@c GNU Emacs 22 in /usr/local/src/emacs/src/editfns.c -@c the DEFUN for buffer-substring-no-properties +@c GNU Emacs 24 in src/editfns.c +@c the DEFUN for delete-and-extract-region @need 1500 Like many of the other Emacs primitives, @@ -9127,22 +9127,15 @@ @smallexample @group -DEFUN ("buffer-substring-no-properties", Fbuffer_substring_no_properties, - Sbuffer_substring_no_properties, 2, 2, 0, - doc: /* Return the characters of part of the buffer, -without the text properties. -The two arguments START and END are character positions; -they can be in either order. */) - (start, end) - Lisp_Object start, end; +DEFUN ("delete-and-extract-region", Fdelete_and_extract_region, + Sdelete_and_extract_region, 2, 2, 0, + doc: /* Delete the text between START and END and return it. */) + (Lisp_Object start, Lisp_Object end) @{ - register int b, e; - validate_region (&start, &end); - b = XINT (start); - e = XINT (end); - - return make_buffer_string (b, e, 0); + if (XINT (start) == XINT (end)) + return empty_unibyte_string; + return del_range_1 (XINT (start), XINT (end), 1, 1); @} @end group @end smallexample @@ -9192,20 +9185,9 @@ @item The seventh part is a documentation string, just like the one for a -function written in Emacs Lisp, except that every newline must be -written explicitly as @samp{\n} followed by a backslash and carriage -return. - -@need 1000 -Thus, the first two lines of documentation for @code{goto-char} are -written like this: - -@smallexample -@group - "Set point to POSITION, a number or marker.\n\ -Beginning of buffer is position (point-min), end is (point-max)." -@end group -@end smallexample +function written in Emacs Lisp. This is written as a C comment. (When +you build Emacs, the program @command{lib-src/make-docfile} extracts +these comments and uses them to make the ``real'' documentation.) @end itemize @need 1200 @@ -9218,15 +9200,15 @@ @group validate_region (&start, &end); if (XINT (start) == XINT (end)) - return build_string (""); + return empty_unibyte_string; return del_range_1 (XINT (start), XINT (end), 1, 1); @end group @end smallexample -The @code{validate_region} function checks whether the values +The @code{validate_region} function checks whether the values passed as the beginning and end of the region are the proper type and are within range. If the beginning and end positions are the same, -then return and empty string. +then return an empty string. The @code{del_range_1} function actually deletes the text. It is a complex function we will not look into. It updates the buffer and @@ -17010,7 +16992,7 @@ "Normal hook run when entering Text mode and many related modes." :type 'hook :options '(turn-on-auto-fill flyspell-mode) - :group 'data) + :group 'wp) @end group @end smallexample === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2013-02-28 06:30:48 +0000 +++ doc/lispref/ChangeLog 2013-03-03 02:39:57 +0000 @@ -1,3 +1,7 @@ +2013-03-03 Glenn Morris + + * objects.texi (Symbol Type): Fix typo. + 2013-02-28 Bastien Guerry * variables.texi (File Local Variables): Fix reference. === modified file 'doc/lispref/objects.texi' --- doc/lispref/objects.texi 2013-02-13 02:25:02 +0000 +++ doc/lispref/objects.texi 2013-03-03 02:09:31 +0000 @@ -565,8 +565,8 @@ @end quotation Here are several examples of symbol names. Note that the @samp{+} in -the fifth example is escaped to prevent it from being read as a number. -This is not necessary in the fourth example because the rest of the name +the fourth example is escaped to prevent it from being read as a number. +This is not necessary in the sixth example because the rest of the name makes it invalid as a number. @example ------------------------------------------------------------ revno: 111922 committer: Glenn Morris branch nick: trunk timestamp: Sat 2013-03-02 18:38:33 -0800 message: Fix date of merged ChangeLog entry diff: === modified file 'lisp/mh-e/ChangeLog' --- lisp/mh-e/ChangeLog 2013-03-03 00:12:29 +0000 +++ lisp/mh-e/ChangeLog 2013-03-03 02:38:33 +0000 @@ -4,7 +4,7 @@ * mh-e.el (Version, mh-version): Update for release 8.5. -2012-12-10 Jeffrey C Honig +2013-03-02 Jeffrey C Honig * mh-folder.el (mh-inc-folder): Revert SF #2321115, SF #250 which processed pending deletes and refiles. Call to ------------------------------------------------------------ revno: 111921 [merge] tags: mh-e-doc-8.5, mh-e-8.5 committer: Bill Wohler branch nick: trunk timestamp: Sat 2013-03-02 16:12:29 -0800 message: Merge from mh-e; up to r106762. diff: === modified file 'etc/ChangeLog' --- etc/ChangeLog 2013-03-02 20:41:53 +0000 +++ etc/ChangeLog 2013-03-03 00:02:19 +0000 @@ -1,3 +1,9 @@ +2013-03-02 Bill Wohler + + Release MH-E version 8.5. + + * NEWS, MH-E-NEWS: Update for MH-E release 8.5. + 2013-03-02 Paul Eggert * NEWS: The lock for FILE is now .#FILE or .#-FILE (Bug#13807). === modified file 'etc/MH-E-NEWS' --- etc/MH-E-NEWS 2013-01-02 16:13:04 +0000 +++ etc/MH-E-NEWS 2013-03-03 00:02:19 +0000 @@ -3,6 +3,25 @@ Copyright (C) 2001-2013 Free Software Foundation, Inc. See the end of the file for license conditions. +* Changes in MH-E 8.5 + +Version 8.5 fixes bugs when incorporating or forwarding mail. + +** Bug Fixes in MH-E 8.5 + +*** mh-rmail doesn't switch to +inbox + +The function `mh-rmail' now switches to `+inbox' as expected (closes +SF #271). + +*** Problem forwarding a messsage + +Forwarding messages resulted in the error: `(wrong-type-argument +number-or-marker-p nil).' This has been fixed by setting the mail +separator (closes SF #270). + + + * Changes in MH-E 8.4 Version 8.4 postpones junk processing and merges in your components === modified file 'etc/NEWS' --- etc/NEWS 2013-03-02 20:41:53 +0000 +++ etc/NEWS 2013-03-03 00:02:19 +0000 @@ -159,7 +159,7 @@ *** `C-x 8 RET' in Isearch mode reads a character by its Unicode name and adds it to the search string. -** MH-E has been updated to MH-E version 8.4. +** MH-E has been updated to MH-E version 8.5. See MH-E-NEWS for details. --- === modified file 'lisp/mh-e/ChangeLog' --- lisp/mh-e/ChangeLog 2013-01-23 08:49:34 +0000 +++ lisp/mh-e/ChangeLog 2013-03-03 00:12:29 +0000 @@ -1,3 +1,19 @@ +2013-03-02 Bill Wohler + + Release MH-E version 8.5. + + * mh-e.el (Version, mh-version): Update for release 8.5. + +2012-12-10 Jeffrey C Honig + + * mh-folder.el (mh-inc-folder): Revert SF #2321115, SF #250 + which processed pending deletes and refiles. Call to + mh-process-or-undo-commands to insure that pending changes are + properly tagged after including new mail (closes SF #271). + + * mh-comp.el: Insure that mail-header-separator is set before + invoking any mml functions (closes SF #270). + 2013-01-23 Dmitry Antipov * mh-acros.el (mh-do-at-event-location): Use point-marker. === modified file 'lisp/mh-e/mh-comp.el' --- lisp/mh-e/mh-comp.el 2013-01-02 16:13:04 +0000 +++ lisp/mh-e/mh-comp.el 2013-02-18 18:11:43 +0000 @@ -587,6 +587,13 @@ (mh-forwarded-letter-subject orig-from orig-subject))) (mh-insert-fields "Subject:" forw-subject) (goto-char (point-min)) + ;; Set the local value of mh-mail-header-separator according to what is + ;; present in the buffer... + (set (make-local-variable 'mh-mail-header-separator) + (save-excursion + (goto-char (mh-mail-header-end)) + (buffer-substring-no-properties (point) (mh-line-end-position)))) + (set (make-local-variable 'mail-header-separator) mh-mail-header-separator) ;override sendmail.el ;; If using MML, translate MH-style directive (if (equal mh-compose-insertion 'mml) (save-excursion === modified file 'lisp/mh-e/mh-e.el' --- lisp/mh-e/mh-e.el 2013-01-02 16:13:04 +0000 +++ lisp/mh-e/mh-e.el 2013-03-03 00:04:12 +0000 @@ -5,7 +5,7 @@ ;; Author: Bill Wohler ;; Maintainer: Bill Wohler -;; Version: 8.4 +;; Version: 8.5 ;; Keywords: mail ;; This file is part of GNU Emacs. @@ -127,7 +127,7 @@ ;; Try to keep variables local to a single file. Provide accessors if ;; variables are shared. Use this section as a last resort. -(defconst mh-version "8.4" "Version number of MH-E.") +(defconst mh-version "8.5" "Version number of MH-E.") ;; Variants === modified file 'lisp/mh-e/mh-folder.el' --- lisp/mh-e/mh-folder.el 2013-01-02 16:13:04 +0000 +++ lisp/mh-e/mh-folder.el 2013-02-18 18:11:43 +0000 @@ -774,7 +774,7 @@ return-value)) ;;;###mh-autoload -(defun mh-inc-folder (&optional file folder dont-exec-pending) +(defun mh-inc-folder (&optional file folder) "Incorporate new mail into a folder. You can incorporate mail from any file into the current folder by @@ -785,10 +785,7 @@ mail. Do not call this function from outside MH-E; use \\[mh-rmail] -instead. - -In a program, the processing of outstanding commands is not performed -if DONT-EXEC-PENDING is non-nil." +instead." (interactive (list (if current-prefix-arg (expand-file-name (read-file-name "inc mail from file: " @@ -797,8 +794,6 @@ (mh-prompt-for-folder "inc mail into" mh-inbox t)))) (if (not folder) (setq folder mh-inbox)) - (unless dont-exec-pending - (mh-process-or-undo-commands folder)) (let ((threading-needed-flag nil)) (let ((config (current-window-configuration))) (when (and mh-show-buffer (get-buffer mh-show-buffer)) @@ -820,6 +815,8 @@ nil)))) (mh-toggle-threads)) (beginning-of-line) + (when (mh-outstanding-commands-p) + (mh-notate-deleted-and-refiled)) (if (and mh-showing-mode (looking-at mh-scan-valid-regexp)) (mh-show)) (run-hooks 'mh-inc-folder-hook))) ------------------------------------------------------------ revno: 111920 committer: Bill Wohler branch nick: trunk timestamp: Sat 2013-03-02 15:20:11 -0800 message: * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for release 8.5. * mh-e.texi (Preface, Conventions, Getting Started) (Using This Manual, Folder Selection, Viewing, Aliases) (Identities, Speedbar, Menu Bar, Tool Bar, Scan Line Formats) (Bug Reports, Mailing Lists, MH FAQ and Support, Getting MH-E): Update URLs. diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2013-03-01 21:14:59 +0000 +++ doc/misc/ChangeLog 2013-03-02 23:20:11 +0000 @@ -1,3 +1,16 @@ +2013-03-02 Bill Wohler + + Release MH-E manual version 8.5. + + * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for + release 8.5. + + * mh-e.texi (Preface, Conventions, Getting Started) + (Using This Manual, Folder Selection, Viewing, Aliases) + (Identities, Speedbar, Menu Bar, Tool Bar, Scan Line Formats) + (Bug Reports, Mailing Lists, MH FAQ and Support, Getting MH-E): + Update URLs. + 2013-03-01 Michael Albinus * tramp.texi (Inline methods): Remove "ssh1", "ssh2", "plink1" === modified file 'doc/misc/mh-e.texi' --- doc/misc/mh-e.texi 2013-01-02 16:13:04 +0000 +++ doc/misc/mh-e.texi 2013-03-02 23:20:11 +0000 @@ -8,12 +8,12 @@ @c %**end of header @c Version of the software and manual. -@set VERSION 8.4 +@set VERSION 8.5 @c Edition of the manual. It is either empty for the first edition or @c has the form ", nth Edition" (without the quotes). @set EDITION -@set UPDATED 2012-11-25 -@set UPDATE-MONTH November, 2012 +@set UPDATED 2013-03-02 +@set UPDATE-MONTH March, 2013 @c Other variables. @set MH-BOOK-HOME http://rand-mh.sourceforge.net/book/mh @@ -236,7 +236,7 @@ @ref{top, , GNU Emacs Manual, emacs, GNU Emacs Manual}, @end ifinfo @ifhtml -@uref{http://www.gnu.org/software/emacs/manual/html_node/, +@uref{http://www.gnu.org/software/emacs/manual/html_node/emacs/, @cite{GNU Emacs Manual}}, @end ifhtml from the Free Software Foundation. @@ -255,9 +255,9 @@ @command{info} command (@samp{info mh-e}) or within Emacs (@kbd{C-h i m mh-e @key{RET}}). The online version is available at @uref{http://mh-e.sourceforge.net/manual/, SourceForge}. Another great -online resource is the book @uref{http://www.ics.uci.edu/~mh/book/, -@cite{MH & nmh: Email for Users & Programmers}} (also known as -@dfn{the MH book}). +online resource is the book +@uref{http://rand-mh.sourceforge.net/book/, @cite{MH & nmh: Email for +Users & Programmers}} (also known as @dfn{the MH book}). I hope you enjoy this manual! If you have any comments, or suggestions for this document, please let me know. @@ -384,7 +384,7 @@ @end ifnothtml @ifhtml See section -@uref{http://www.gnu.org/software/emacs/manual/html_node/Easy-Customization.html, +@uref{http://www.gnu.org/software/emacs/manual/html_node/emacs/Easy-Customization.html, Easy Customization} in @cite{The GNU Emacs Manual}. @end ifhtml @xref{Options}. @@ -404,7 +404,7 @@ @end ifnothtml @ifhtml See section -@uref{http://www.gnu.org/software/emacs/manual/html_node/Face-Customization.html, +@uref{http://www.gnu.org/software/emacs/manual/html_node/emacs/Face-Customization.html, Face Customization} in @cite{The GNU Emacs Manual}. @end ifhtml @@ -422,7 +422,7 @@ @end ifnothtml @ifhtml See section -@uref{http://www.gnu.org/software/emacs/manual/html_node/Hooks.html, +@uref{http://www.gnu.org/software/emacs/manual/html_node/emacs/Hooks.html, Hooks} in @cite{The GNU Emacs Manual} @end ifhtml for a description about @dfn{normal hooks} and @dfn{abnormal hooks}. @@ -473,7 +473,7 @@ @end ifnothtml @ifhtml See the section -@uref{http://www.gnu.org/software/emacs/manual/html_node/Completion.html, +@uref{http://www.gnu.org/software/emacs/manual/html_node/emacs/Completion.html, Completion} in @cite{The GNU Emacs Manual}. @end ifhtml Note that @key{SPC} cannot be used for completing filenames and @@ -550,12 +550,12 @@ @cindex GNU mailutils MH If you don't have MH on your system already, you must install a -variant of MH@. The Debian mh-e package does this for you automatically -(@pxref{Getting MH-E}). Most people use +variant of MH@. The Debian mh-e package does this for you +automatically (@pxref{Getting MH-E}). Most people use @uref{http://www.nongnu.org/nmh/, nmh}, but you may be interested in -trying out @uref{http://www.gnu.org/software/mailutils/, GNU mailutils -MH}, which supports IMAP@. Your GNU/Linux distribution probably has -packages for both of these. +trying out @uref{http://mailutils.org/, GNU mailutils MH}, which +supports IMAP@. Your GNU/Linux distribution probably has packages for +both of these. @cindex @command{install-mh} @cindex MH commands, @command{install-mh} @@ -1121,27 +1121,27 @@ @footnote{The @cite{GNU Emacs Lisp Reference Manual} may be available online in the Info system by typing @kbd{C-h i m Emacs Lisp @key{RET}}. It is also available online at @* -@uref{http://www.gnu.org/software/emacs/elisp-manual/html_node/}. You -can also order a printed manual, which has the desirable side-effect -of helping to support the Free Software Foundation which made all this -great software available. You can find an order form by running -@kbd{C-h C-d}, or you can request an order form from @i{gnu at +@uref{http://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/elisp/}. +You can also order a printed manual, which has the desirable +side-effect of helping to support the Free Software Foundation which +made all this great software available. You can find an order form by +running @kbd{C-h C-d}, or you can request an order form from @i{gnu at gnu.org}.} @end iftex @ifinfo @footnote{@xref{Top, The GNU Emacs Lisp Reference Manual, , elisp, GNU Emacs Lisp Reference Manual}, which may be available online in the Info system. It is also available online at -@uref{http://www.gnu.org/software/emacs/elisp-manual/html_node/}. You -can also order a printed manual, which has the desirable side-effect -of helping to support the Free Software Foundation which made all this -great software available. You can find an order form by running -@kbd{C-h C-d}, or you can request an order form from @i{gnu at +@uref{http://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/elisp/}. +You can also order a printed manual, which has the desirable +side-effect of helping to support the Free Software Foundation which +made all this great software available. You can find an order form by +running @kbd{C-h C-d}, or you can request an order form from @i{gnu at gnu.org}.} @end ifinfo @ifhtml @footnote{The -@uref{http://www.gnu.org/software/emacs/elisp-manual/html_node/, +@uref{http://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/elisp/, The GNU Emacs Lisp Reference Manual} may also be available online in the Info system by typing @kbd{C-h i m Emacs Lisp @key{RET}}. You can also order a printed manual, which has the desirable side-effect of @@ -1311,7 +1311,7 @@ @end ifnothtml @ifhtml (see the section -@uref{http://www.gnu.org/software/emacs/manual/html_node/Completion.html, +@uref{http://www.gnu.org/software/emacs/manual/html_node/emacs/Completion.html, Completion} in @cite{The GNU Emacs Manual}). @end ifhtml In addition, MH-E has several ways of choosing a suitable default so @@ -2089,8 +2089,7 @@ suffix; otherwise, the element can be used to render invisible an entire class of fields that start with the same prefix. If you think a header field should be generally ignored, please update -@uref{https://sourceforge.net/tracker/index.php?func=detail&aid=1916032&group_id=13357&atid=113357, -SF #1916032}. +@uref{https://sourceforge.net/p/mh-e/bugs/245/, SF #245}. @cindex header field, @samp{Face:} @cindex header field, @samp{X-Face:} @@ -2142,12 +2141,12 @@ @samp{X-Face:} fields are present@footnote{The display of the images requires the @uref{http://www.gnu.org/software/wget/wget.html, @command{wget} program} to fetch the image and the @command{convert} -program from the @uref{http://www.imagemagick.org/, ImageMagick -suite}.}. Of the three header fields this is the most efficient in -terms of network usage since the image doesn't need to be transmitted -with every single mail. The option @code{mh-fetch-x-image-url} -controls the fetching of the @samp{X-Image-URL:} header field image -with the following values: +program from the @uref{http://www.imagemagick.org/script/index.php, +ImageMagick suite}.}. Of the three header fields this is the most +efficient in terms of network usage since the image doesn't need to be +transmitted with every single mail. The option +@code{mh-fetch-x-image-url} controls the fetching of the +@samp{X-Image-URL:} header field image with the following values: @table @samp @item Ask Before Fetching @@ -6025,7 +6024,7 @@ @end ifnothtml @ifhtml (see the section -@uref{http://www.gnu.org/software/emacs/manual/html_node/Regexps.html, +@uref{http://www.gnu.org/software/emacs/manual/html_node/emacs/Regexps.html, Syntax of Regular Expressions} in @cite{The GNU Emacs Manual}). @end ifhtml @@ -6175,7 +6174,7 @@ @end ifnothtml @ifhtml (see the section -@uref{http://www.gnu.org/software/emacs/manual/html_node/Regexps.html, +@uref{http://www.gnu.org/software/emacs/manual/html_node/emacs/Regexps.html, Syntax of Regular Expressions} in @cite{The GNU Emacs Manual}). @end ifhtml @@ -6283,7 +6282,7 @@ @end ifnothtml @ifhtml (see the section -@uref{http://www.gnu.org/software/emacs/manual/html_node/Speedbar.html, +@uref{http://www.gnu.org/software/emacs/manual/html_node/emacs/Speedbar.html, Speedbar Frames} in @cite{The GNU Emacs Manual}) @end ifhtml to view your folders. To bring up the speedbar, run @kbd{M-x speedbar @@ -6415,7 +6414,7 @@ @end ifnothtml @ifhtml see the section -@uref{http://www.gnu.org/software/emacs/manual/html_node/Menu-Bar.html, +@uref{http://www.gnu.org/software/emacs/manual/html_node/emacs/Menu-Bar.html, The Menu Bar} in @cite{The GNU Emacs Manual}. @end ifhtml @@ -6437,7 +6436,7 @@ @end ifnothtml @ifhtml see the section -@uref{http://www.gnu.org/software/emacs/manual/html_node/Tool-Bars.html, +@uref{http://www.gnu.org/software/emacs/manual/html_node/emacs/Tool-Bars.html, Tool Bars} in @cite{The GNU Emacs Manual}. @end ifhtml @@ -8219,7 +8218,7 @@ @end ifnothtml @ifhtml section -@uref{http://www.gnu.org/software/emacs/manual/html_node/Regexps.html, +@uref{http://www.gnu.org/software/emacs/manual/html_node/emacs/Regexps.html, Syntax of Regular Expressions} in @cite{The GNU Emacs Manual}. @end ifhtml @@ -8712,12 +8711,11 @@ @kindex M-x mh-version Bug reports should be filed at -@uref{https://sourceforge.net/tracker/?group_id=13357&atid=113357, -SourceForge}. You need to be a SourceForge user to submit bug reports, -but this is easy enough to do that it shouldn't be a restriction for -you. Please include the output of @kbd{M-x mh-version} -(@pxref{Miscellaneous}) in any bug report you send unless you're 110% -positive we won't ask for it. +@uref{https://sourceforge.net/p/mh-e/bugs/, SourceForge}. You need to +be a SourceForge user to submit bug reports, but this is easy enough +to do that it shouldn't be a restriction for you. Please include the +output of @kbd{M-x mh-version} (@pxref{Miscellaneous}) in any bug +report you send unless you're 110% positive we won't ask for it. @node Mailing Lists, MH FAQ and Support, Bug Reports, Odds and Ends @appendixsec MH-E Mailing Lists @@ -8728,7 +8726,7 @@ There are several mailing lists for MH-E@. They are @i{mh-e-users at lists.sourceforge.net}, @i{mh-e-announce at lists.sourceforge.net}, and @i{mh-e-devel at lists.sourceforge.net}. You can subscribe or view -the archives at @uref{https://sourceforge.net/mail/?group_id=13357, +the archives at @uref{https://sourceforge.net/p/mh-e/mailman/, SourceForge}. Do not report bugs on these lists; please submit them via SourceForge (@pxref{Bug Reports}). @@ -8746,11 +8744,10 @@ @cindex support -You can find FAQs on MH-E at the -@uref{https://sourceforge.net/tracker/?group_id=13357&atid=213357, -Support Requests} page on SourceForge. If you don't find the answer to -your question, file a support request and your question will become a -new FAQ! +You can find FAQs on MH-E by searching for @i{labels:support} on the +@uref{https://sourceforge.net/p/mh-e/bugs/search/?q=labels%3Asupport, +Tickets} page on SourceForge. If you don't find the answer to your +question, file a ticket and your question will become a new FAQ! @node Getting MH-E, , MH FAQ and Support, Odds and Ends @appendixsec Getting MH-E @@ -8768,13 +8765,13 @@ @cindex release notes New MH-E releases are always available for downloading at -@uref{https://sourceforge.net/project/showfiles.php?group_id=13357, -SourceForge} before they appear in an Emacs release. You can read the -release notes on that page to determine if the given release of MH-E -is already installed in your version of Emacs. You can also read the -change log to see if you are interested in what the given release of -MH-E has to offer (although we have no doubt that you will be -extremely interested in all new releases). +@uref{https://sourceforge.net/projects/mh-e/files/, SourceForge} +before they appear in an Emacs release. You can read the release notes +on that page to determine if the given release of MH-E is already +installed in your version of Emacs. You can also read the change log +to see if you are interested in what the given release of MH-E has to +offer (although we have no doubt that you will be extremely interested +in all new releases). @cindex Debian @@ -8802,10 +8799,10 @@ @cindex documentation In addition to the mh-e package, the -@uref{https://sourceforge.net/project/showfiles.php?group_id=13357, -SourceForge} site also contains doc and contrib packages. The former -is the latest release of this manual, and the latter contains a few -contributed packages you might find useful. +@uref{https://sourceforge.net/projects/mh-e/files/, SourceForge} site +also contains doc and contrib packages. The former is the latest +release of this manual, and the latter contains a few contributed +packages you might find useful. @node History, GFDL, Odds and Ends, Top @appendix History of MH-E ------------------------------------------------------------ revno: 111919 committer: Paul Eggert branch nick: trunk timestamp: Sat 2013-03-02 13:05:52 -0800 message: * filelock.c (lock_file): Don't access freed storage. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-02 20:41:53 +0000 +++ src/ChangeLog 2013-03-02 21:05:52 +0000 @@ -27,6 +27,7 @@ that's not portable. (lock_file): Document that this function can return if lock creation fails. + (lock_file): Don't access freed storage. 2013-03-02 Andreas Schwab === modified file 'src/filelock.c' --- src/filelock.c 2013-03-02 20:41:53 +0000 +++ src/filelock.c 2013-03-02 21:05:52 +0000 @@ -597,11 +597,9 @@ void lock_file (Lisp_Object fn) { - register Lisp_Object attack, orig_fn, encoded_fn; - register char *lfname, *locker; - ptrdiff_t locker_size; + Lisp_Object orig_fn, encoded_fn; + char *lfname; lock_info_type lock_info; - printmax_t pid; struct gcpro gcpro1; USE_SAFE_ALLOCA; @@ -642,32 +640,29 @@ call1 (intern ("ask-user-about-supersession-threat"), fn); } + + /* Try to lock the lock. */ + if (0 < lock_if_free (&lock_info, lfname)) + { + /* Someone else has the lock. Consider breaking it. */ + ptrdiff_t locker_size = (strlen (lock_info.user) + strlen (lock_info.host) + + INT_STRLEN_BOUND (printmax_t) + + sizeof "@ (pid )"); + char *locker = SAFE_ALLOCA (locker_size); + printmax_t pid = lock_info.pid; + Lisp_Object attack; + esprintf (locker, "%s@%s (pid %"pMd")", + lock_info.user, lock_info.host, pid); + FREE_LOCK_INFO (lock_info); + + attack = call2 (intern ("ask-user-about-lock"), fn, build_string (locker)); + /* Take the lock if the user said so. */ + if (!NILP (attack)) + lock_file_1 (lfname, 1); + } + UNGCPRO; - - /* Try to lock the lock. */ - if (lock_if_free (&lock_info, lfname) <= 0) - /* Return now if we have locked it, or if lock creation failed */ - return; - - /* Else consider breaking the lock */ - locker_size = (strlen (lock_info.user) + strlen (lock_info.host) - + INT_STRLEN_BOUND (printmax_t) - + sizeof "@ (pid )"); - locker = SAFE_ALLOCA (locker_size); - pid = lock_info.pid; - esprintf (locker, "%s@%s (pid %"pMd")", - lock_info.user, lock_info.host, pid); - FREE_LOCK_INFO (lock_info); - - attack = call2 (intern ("ask-user-about-lock"), fn, build_string (locker)); SAFE_FREE (); - if (!NILP (attack)) - /* User says take the lock */ - { - lock_file_1 (lfname, 1); - return; - } - /* User says ignore the lock */ } void ------------------------------------------------------------ revno: 111918 fixes bug: http://debbugs.gnu.org/13807 committer: Paul Eggert branch nick: trunk timestamp: Sat 2013-03-02 12:41:53 -0800 message: The lock for FILE is now .#FILE or .#-FILE. The old approach, which fell back on DIR/.#FILE.0 through DIR/.#FILE.9, had race conditions that could not be easily fixed. If DIR/.#FILE is a non-symlink file, Emacs now does not create a lock file for DIR/FILE; that is, DIR/FILE is no longer partly protected by a lock if DIR/.#FILE is a non-symlink file ("partly" because the locking mechanism was never reliable in that case). This patch fixes this and other bugs discovered by a code inspection that was prompted by . Also, this patch switches to .#-FILE (not .#FILE) on MS-Windows, to avoid interoperability problems between the MS-Windows and non-MS-Windows implementations. MS-Windows and non-MS-Windows instances of Emacs now ignore each others' locks. * etc/NEWS: Document this. * src/filelock.c (defined_WINDOWSNT): New constant. (MAKE_LOCK_NAME, fill_in_lock_file_name): Don't create DIR/.#FILE.0 through DIR/.#FILE.9. Instead, create DIR/.#FILE symlinks on non-MS-Windows hosts, and DIR/.#-FILE regular files on MS-Windows hosts. (MAKE_LOCK_NAME, unlock_file, Ffile_locked_p): Use SAFE_ALLOCA to avoid problems with long file names. (MAX_LFINFO): Now a local constant, not a global macro. (IS_LOCK_FILE): Remove. (lock_file_1): Don't inspect errno if symlink call succeeds; that's not portable. (lock_file): Document that this function can return if lock creation fails. diff: === modified file 'etc/ChangeLog' --- etc/ChangeLog 2013-03-02 20:10:05 +0000 +++ etc/ChangeLog 2013-03-02 20:41:53 +0000 @@ -1,3 +1,7 @@ +2013-03-02 Paul Eggert + + * NEWS: The lock for FILE is now .#FILE or .#-FILE (Bug#13807). + 2013-03-01 Michael Albinus * NEWS: Fix Tramp "adb" entry. Extend list of discontinued Tramp === modified file 'etc/NEWS' --- etc/NEWS 2013-03-02 20:10:05 +0000 +++ etc/NEWS 2013-03-02 20:41:53 +0000 @@ -320,6 +320,18 @@ ** The `defalias-fset-function' property lets you catch calls to defalias and redirect them to your own function instead of `fset'. +** The lock for 'DIR/FILE' is now 'DIR/.#FILE' or 'DIR/.#-FILE'. +When you edit DIR/FILE, Emacs normally creates a symbolic link +DIR/.#FILE as a lock that warns other instances of Emacs that DIR/FILE +is being edited. Formerly, if there was already a non-symlink file +named DIR/.#FILE, Emacs fell back on the lock names DIR/.#FILE.0 +through DIR/.#FILE.9. These fallbacks have been removed, so that +Emacs now no longer locks DIR/FILE in that case. + +On MS-Windows the lock is a regular file DIR/.#-FILE, not a symlink. +MS-Windows and non-MS-Windows implementations of Emacs ignore each +other's locks. + ** The 9th element returned by `file-attributes' is now unspecified. Formerly, it was t if the file's gid would change if file were deleted and recreated. This value has been inaccurate for years on many === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-02 20:10:05 +0000 +++ src/ChangeLog 2013-03-02 20:41:53 +0000 @@ -1,3 +1,33 @@ +2013-03-02 Paul Eggert + + The lock for FILE is now .#FILE or .#-FILE (Bug#13807). + The old approach, which fell back on DIR/.#FILE.0 through + DIR/.#FILE.9, had race conditions that could not be easily fixed. + If DIR/.#FILE is a non-symlink file, Emacs now does not create a + lock file for DIR/FILE; that is, DIR/FILE is no longer partly + protected by a lock if DIR/.#FILE is a non-symlink file ("partly" + because the locking mechanism was never reliable in that case). + This patch fixes this and other bugs discovered by a code + inspection that was prompted by + . + Also, this patch switches to .#-FILE (not .#FILE) on MS-Windows, + to avoid interoperability problems between the MS-Windows and + non-MS-Windows implementations. MS-Windows and non-MS-Windows + instances of Emacs now ignore each others' locks. + * filelock.c (defined_WINDOWSNT): New constant. + (MAKE_LOCK_NAME, fill_in_lock_file_name): + Don't create DIR/.#FILE.0 through DIR/.#FILE.9. Instead, create + DIR/.#FILE symlinks on non-MS-Windows hosts, and DIR/.#-FILE + regular files on MS-Windows hosts. + (MAKE_LOCK_NAME, unlock_file, Ffile_locked_p): + Use SAFE_ALLOCA to avoid problems with long file names. + (MAX_LFINFO): Now a local constant, not a global macro. + (IS_LOCK_FILE): Remove. + (lock_file_1): Don't inspect errno if symlink call succeeds; + that's not portable. + (lock_file): Document that this function can return if lock + creation fails. + 2013-03-02 Andreas Schwab * lisp.h (XPNTR) [!USE_LSB_TAG]: Remove extra paren. (Bug#13734) === modified file 'src/filelock.c' --- src/filelock.c 2013-02-27 18:37:31 +0000 +++ src/filelock.c 2013-03-02 20:41:53 +0000 @@ -64,7 +64,8 @@ #define WTMP_FILE "/var/log/wtmp" #endif -/* The strategy: to lock a file FN, create a symlink .#FN in FN's +/* On non-MS-Windows systems, use a symbolic link to represent a lock. + The strategy: to lock a file FN, create a symlink .#FN in FN's directory, with link data `user@host.pid'. This avoids a single mount (== failure) point for lock files. @@ -97,7 +98,12 @@ has contributed this implementation for Emacs), and was designed by Ethan Jacobson, Kimbo Mundy, and others. - --karl@cs.umb.edu/karl@hq.ileaf.com. */ + --karl@cs.umb.edu/karl@hq.ileaf.com. + + On MS-Windows, symbolic links do not work well, so instead of a + symlink .#FN -> 'user@host.pid', the lock is a regular file .#-FN + with contents 'user@host.pid'. MS-Windows and non-MS-Windows + versions of Emacs ignore each other's locks. */ /* Return the time of the last system boot. */ @@ -291,55 +297,31 @@ /* Free the two dynamically-allocated pieces in PTR. */ #define FREE_LOCK_INFO(i) do { xfree ((i).user); xfree ((i).host); } while (0) +#ifdef WINDOWSNT +enum { defined_WINDOWSNT = 1 }; +#else +enum { defined_WINDOWSNT = 0 }; +#endif /* Write the name of the lock file for FNAME into LOCKNAME. Length - will be that of FN plus two more for the leading `.#' plus 1 for - the trailing period plus one for the digit after it plus one for - the null. */ -#define MAKE_LOCK_NAME(LOCKNAME, FNAME) \ - (LOCKNAME = alloca (SBYTES (FNAME) + 2 + 1 + 1 + 1), \ - fill_in_lock_file_name (LOCKNAME, (FNAME))) - -#ifdef WINDOWSNT -/* 256 chars for user, 1024 chars for host, 10 digits for each of 2 int's. */ -#define MAX_LFINFO (256 + 1024 + 10 + 10 + 2) - /* min size: .@PID */ -#define IS_LOCK_FILE(ST) (MAX_LFINFO >= (ST).st_size && (ST).st_size >= 3) -#else -#define IS_LOCK_FILE(ST) S_ISLNK ((ST).st_mode) -#endif + will be that of FNAME plus two more for the leading ".#", + plus one for "-" if MS-Windows, plus one for the null. */ +#define MAKE_LOCK_NAME(lockname, fname) \ + (lockname = SAFE_ALLOCA (SBYTES (fname) + 2 + defined_WINDOWSNT + 1), \ + fill_in_lock_file_name (lockname, fname)) static void -fill_in_lock_file_name (register char *lockfile, register Lisp_Object fn) +fill_in_lock_file_name (char *lockfile, Lisp_Object fn) { - ptrdiff_t length = SBYTES (fn); - register char *p; - struct stat st; - int count = 0; - - strcpy (lockfile, SSDATA (fn)); - - /* Shift the nondirectory part of the file name (including the null) - right two characters. Here is one of the places where we'd have to - do something to support 14-character-max file names. */ - for (p = lockfile + length; p != lockfile && *p != '/'; p--) - p[2] = *p; - - /* Insert the `.#'. */ - p[1] = '.'; - p[2] = '#'; - - p = lockfile + length + 2; - - while (lstat (lockfile, &st) == 0 && !IS_LOCK_FILE (st)) - { - if (count > 9) - { - *p = '\0'; - return; - } - sprintf (p, ".%d", count++); - } + char *last_slash = memrchr (SSDATA (fn), '/', SBYTES (fn)); + char *base = last_slash + 1; + ptrdiff_t dirlen = base - SSDATA (fn); + memcpy (lockfile, SSDATA (fn), dirlen); + lockfile[dirlen] = '.'; + lockfile[dirlen + 1] = '#'; + if (defined_WINDOWSNT) + lockfile[dirlen + 2] = '-'; + strcpy (lockfile + dirlen + 2 + defined_WINDOWSNT, base); } static int @@ -356,8 +338,8 @@ { /* Deny everybody else any kind of access to the file until we are done writing it and close the handle. This makes the entire - open/write/close operation atomic, as far as other processes - are concerned. */ + open/write/close operation atomic, as far as other WINDOWSNT + processes are concerned. */ int fd = _sopen (lfname, _O_WRONLY | _O_BINARY | _O_CREAT | _O_EXCL | _O_NOINHERIT, _SH_DENYRW, S_IREAD | S_IWRITE); @@ -380,7 +362,7 @@ } #else err = symlink (lock_info_str, lfname); - if (errno == EEXIST && force) + if (err != 0 && errno == EEXIST && force) { unlink (lfname); err = symlink (lock_info_str, lfname); @@ -440,6 +422,8 @@ #else int fd = emacs_open (lfname, O_RDONLY | O_BINARY, S_IREAD); ssize_t nbytes; + /* 256 chars for user, 1024 chars for host, 10 digits for each of 2 int's. */ + enum { MAX_LFINFO = 256 + 1024 + 10 + 10 + 2 }; char lfinfo[MAX_LFINFO + 1]; if (fd < 0) @@ -601,6 +585,7 @@ decided to go ahead without locking. When this returns, either the lock is locked for us, + or lock creation failed, or the user has said to go ahead without locking. If the file is locked by someone else, this calls @@ -686,9 +671,10 @@ } void -unlock_file (register Lisp_Object fn) +unlock_file (Lisp_Object fn) { - register char *lfname; + char *lfname; + USE_SAFE_ALLOCA; fn = Fexpand_file_name (fn, Qnil); fn = ENCODE_FILE (fn); @@ -697,6 +683,8 @@ if (current_lock_owner (0, lfname) == 2) unlink (lfname); + + SAFE_FREE (); } void @@ -762,9 +750,10 @@ (Lisp_Object filename) { Lisp_Object ret; - register char *lfname; + char *lfname; int owner; lock_info_type locker; + USE_SAFE_ALLOCA; filename = Fexpand_file_name (filename, Qnil); @@ -781,6 +770,7 @@ if (owner > 0) FREE_LOCK_INFO (locker); + SAFE_FREE (); return ret; } ------------------------------------------------------------ revno: 111917 [merge] committer: Glenn Morris branch nick: trunk timestamp: Sat 2013-03-02 12:10:05 -0800 message: Merge from emacs-24; up to r111311 diff: === modified file 'etc/NEWS' --- etc/NEWS 2013-03-01 08:24:19 +0000 +++ etc/NEWS 2013-03-02 20:10:05 +0000 @@ -780,6 +780,29 @@ *** The constant `rst-version' describes the rst.el package version. +** Ruby mode + +*** Support for percent literals and recognition of regular expressions +in method calls without parentheses with more methods, including Cucumber +steps definitions. + +*** Improved syntax highlighting and indentation. + +*** New command `ruby-toggle-block', bound to `C-c {'. + +*** Some non-standard keybindings/commands have been removed: + +**** `ruby-electric-brace'; use `electric-indent-mode' instead. + +**** `ruby-mark-defun'; use `mark-defun'. + +**** `ruby-beginning-of-defun' and `ruby-end-of-defun' are replaced by +appropriate settings for the variables `beginning-of-defun-function' +and `end-of-defun-function'. + +**** Non-standard keybindings for `backward-kill-word', `comment-region', +`reindent-then-newline-and-indent' and `newline' have been removed. + ** Shell Script mode *** Pairing of parens/quotes uses `electric-pair-mode' instead of skeleton-pair. === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-02 18:39:34 +0000 +++ src/ChangeLog 2013-03-02 20:10:05 +0000 @@ -1,3 +1,7 @@ +2013-03-02 Andreas Schwab + + * lisp.h (XPNTR) [!USE_LSB_TAG]: Remove extra paren. (Bug#13734) + 2013-03-02 Paul Eggert * textprop.c: Use bool for booleans. === modified file 'src/lisp.h' --- src/lisp.h 2013-03-02 09:02:12 +0000 +++ src/lisp.h 2013-03-02 20:10:05 +0000 @@ -507,7 +507,7 @@ /* DATA_SEG_BITS forces extra bits to be or'd in with any pointers which were stored in a Lisp_Object. */ -#define XPNTR(a) ((uintptr_t) ((XLI (a) & VALMASK)) | DATA_SEG_BITS)) +#define XPNTR(a) ((uintptr_t) ((XLI (a) & VALMASK) | DATA_SEG_BITS)) #endif /* not USE_LSB_TAG */ ------------------------------------------------------------ revno: 111916 committer: Paul Eggert branch nick: trunk timestamp: Sat 2013-03-02 10:39:34 -0800 message: * textprop.c: Use bool for booleans. (validate_interval_range, Fadd_text_properties) (Fremove_text_properties): Prefer bool to int when either works. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-02 09:28:53 +0000 +++ src/ChangeLog 2013-03-02 18:39:34 +0000 @@ -1,3 +1,9 @@ +2013-03-02 Paul Eggert + + * textprop.c: Use bool for booleans. + (validate_interval_range, Fadd_text_properties) + (Fremove_text_properties): Prefer bool to int when either works. + 2013-03-02 Eli Zaretskii * textprop.c (Fadd_text_properties, Fremove_text_properties): If === modified file 'src/intervals.h' --- src/intervals.h 2013-02-26 03:09:08 +0000 +++ src/intervals.h 2013-03-02 18:39:34 +0000 @@ -259,7 +259,7 @@ extern INTERVAL update_interval (INTERVAL, ptrdiff_t); extern void set_intervals_multibyte (bool); extern INTERVAL validate_interval_range (Lisp_Object, Lisp_Object *, - Lisp_Object *, int); + Lisp_Object *, bool); extern INTERVAL interval_of (ptrdiff_t, Lisp_Object); /* Defined in xdisp.c. */ === modified file 'src/textprop.c' --- src/textprop.c 2013-03-02 09:28:53 +0000 +++ src/textprop.c 2013-03-02 18:39:34 +0000 @@ -125,9 +125,10 @@ #define hard 1 INTERVAL -validate_interval_range (Lisp_Object object, Lisp_Object *begin, Lisp_Object *end, int force) +validate_interval_range (Lisp_Object object, Lisp_Object *begin, + Lisp_Object *end, bool force) { - register INTERVAL i; + INTERVAL i; ptrdiff_t searchpos; CHECK_STRING_OR_BUFFER (object); @@ -1131,7 +1132,7 @@ ptrdiff_t s, len; bool modified = 0; struct gcpro gcpro1; - int first_time = 1; + bool first_time = 1; properties = validate_plist (properties); if (NILP (properties)) @@ -1446,7 +1447,7 @@ INTERVAL i, unchanged; ptrdiff_t s, len; bool modified = 0; - int first_time = 1; + bool first_time = 1; if (NILP (object)) XSETBUFFER (object, current_buffer); ------------------------------------------------------------ revno: 111915 committer: Glenn Morris branch nick: trunk timestamp: Sat 2013-03-02 06:17:34 -0500 message: Auto-commit of generated files. diff: === modified file 'autogen/config.in' --- autogen/config.in 2013-02-25 11:17:36 +0000 +++ autogen/config.in 2013-03-02 11:17:34 +0000 @@ -1130,6 +1130,9 @@ /* Define to 1 if you have the `_ftime' function. */ #undef HAVE__FTIME +/* Define to 1 if you have the `_putenv' function. */ +#undef HAVE__PUTENV + /* Define to 1 if _setjmp and _longjmp work. */ #undef HAVE__SETJMP @@ -1570,13 +1573,16 @@ _GL_INLINE_HEADER_END contains useful stuff to put in the same include file, after uses of _GL_INLINE. + Suppress extern inline with HP-UX cc, as it appears to be broken; see + . + Suppress the use of extern inline on Apple's platforms, as Libc-825.25 (2012-09-19) is incompatible with it; see . Perhaps Apple will fix this some day. */ #if ((__GNUC__ \ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ - : 199901L <= __STDC_VERSION__) \ + : 199901L <= __STDC_VERSION__ && !defined __HP_cc) \ && !defined __APPLE__) # define _GL_INLINE inline # define _GL_EXTERN_INLINE extern inline === modified file 'autogen/configure' --- autogen/configure 2013-02-28 11:17:37 +0000 +++ autogen/configure 2013-03-02 11:17:34 +0000 @@ -23273,6 +23273,19 @@ gl_LIBOBJS="$gl_LIBOBJS putenv.$ac_objext" + + for ac_func in _putenv +do : + ac_fn_c_check_func "$LINENO" "_putenv" "ac_cv_func__putenv" +if test "x$ac_cv_func__putenv" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE__PUTENV 1 +_ACEOF + +fi +done + + fi ------------------------------------------------------------ revno: 111914 fixes bug: http://debbugs.gnu.org/13743 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2013-03-02 11:28:53 +0200 message: Protect against changes of interval tree when adding/removing text props. src/textprop.c (Fadd_text_properties, Fremove_text_properties): If the interval tree changes as a side effect of calling modify_region, re-do processing starting from the call to validate_interval_range. (Bug#13743) diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-02 09:02:12 +0000 +++ src/ChangeLog 2013-03-02 09:28:53 +0000 @@ -1,3 +1,10 @@ +2013-03-02 Eli Zaretskii + + * textprop.c (Fadd_text_properties, Fremove_text_properties): If + the interval tree changes as a side effect of calling + modify_region, re-do processing starting from the call to + validate_interval_range. (Bug#13743) + 2013-02-28 Eli Zaretskii * w32.c (sys_open): Don't reset the flags for FD in fd_info[]. === modified file 'src/textprop.c' --- src/textprop.c 2013-02-26 03:09:08 +0000 +++ src/textprop.c 2013-03-02 09:28:53 +0000 @@ -1131,6 +1131,7 @@ ptrdiff_t s, len; bool modified = 0; struct gcpro gcpro1; + int first_time = 1; properties = validate_plist (properties); if (NILP (properties)) @@ -1139,6 +1140,7 @@ if (NILP (object)) XSETBUFFER (object, current_buffer); + retry: i = validate_interval_range (object, &start, &end, hard); if (!i) return Qnil; @@ -1174,8 +1176,25 @@ copy_properties (unchanged, i); } - if (BUFFERP (object)) - modify_region (object, start, end); + if (BUFFERP (object) && first_time) + { + ptrdiff_t prev_total_length = TOTAL_LENGTH (i); + ptrdiff_t prev_pos = i->position; + + modify_region (object, start, end); + /* If someone called us recursively as a side effect of + modify_region, and changed the intervals behind our back + (could happen if lock_file, called by prepare_to_modify_buffer, + triggers redisplay, and that calls add-text-properties again + in the same buffer), we cannot continue with I, because its + data changed. So we restart the interval analysis anew. */ + if (TOTAL_LENGTH (i) != prev_total_length + || i->position != prev_pos) + { + first_time = 0; + goto retry; + } + } /* We are at the beginning of interval I, with LEN chars to scan. */ for (;;) @@ -1427,10 +1446,12 @@ INTERVAL i, unchanged; ptrdiff_t s, len; bool modified = 0; + int first_time = 1; if (NILP (object)) XSETBUFFER (object, current_buffer); + retry: i = validate_interval_range (object, &start, &end, soft); if (!i) return Qnil; @@ -1462,8 +1483,25 @@ copy_properties (unchanged, i); } - if (BUFFERP (object)) - modify_region (object, start, end); + if (BUFFERP (object) && first_time) + { + ptrdiff_t prev_total_length = TOTAL_LENGTH (i); + ptrdiff_t prev_pos = i->position; + + modify_region (object, start, end); + /* If someone called us recursively as a side effect of + modify_region, and changed the intervals behind our back + (could happen if lock_file, called by prepare_to_modify_buffer, + triggers redisplay, and that calls add-text-properties again + in the same buffer), we cannot continue with I, because its + data changed. So we restart the interval analysis anew. */ + if (TOTAL_LENGTH (i) != prev_total_length + || i->position != prev_pos) + { + first_time = 0; + goto retry; + } + } /* We are at the beginning of an interval, with len to scan */ for (;;) ------------------------------------------------------------ revno: 111913 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2013-03-02 11:02:12 +0200 message: Revert last commit; fixed on emacs-24 branch instead. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-02 08:19:45 +0000 +++ src/ChangeLog 2013-03-02 09:02:12 +0000 @@ -1,7 +1,3 @@ -2013-03-02 Eli Zaretskii - - * lisp.h (XPNTR) [!USE_LSB_TAG]: Fix parentheses nesting. (Bug#13734) - 2013-02-28 Eli Zaretskii * w32.c (sys_open): Don't reset the flags for FD in fd_info[]. === modified file 'src/lisp.h' --- src/lisp.h 2013-03-02 08:19:45 +0000 +++ src/lisp.h 2013-03-02 09:02:12 +0000 @@ -507,7 +507,7 @@ /* DATA_SEG_BITS forces extra bits to be or'd in with any pointers which were stored in a Lisp_Object. */ -#define XPNTR(a) ((uintptr_t) ((XLI (a) & VALMASK) | DATA_SEG_BITS)) +#define XPNTR(a) ((uintptr_t) ((XLI (a) & VALMASK)) | DATA_SEG_BITS)) #endif /* not USE_LSB_TAG */ ------------------------------------------------------------ revno: 111912 fixes bug: http://debbugs.gnu.org/13734 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2013-03-02 10:19:45 +0200 message: Fix bug #13734 with errors in lisp.h macro expansion. src/lisp.h (XPNTR) [!USE_LSB_TAG]: Fix parentheses nesting. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-02-28 06:30:48 +0000 +++ src/ChangeLog 2013-03-02 08:19:45 +0000 @@ -1,3 +1,7 @@ +2013-03-02 Eli Zaretskii + + * lisp.h (XPNTR) [!USE_LSB_TAG]: Fix parentheses nesting. (Bug#13734) + 2013-02-28 Eli Zaretskii * w32.c (sys_open): Don't reset the flags for FD in fd_info[]. === modified file 'src/lisp.h' --- src/lisp.h 2013-02-27 07:42:43 +0000 +++ src/lisp.h 2013-03-02 08:19:45 +0000 @@ -507,7 +507,7 @@ /* DATA_SEG_BITS forces extra bits to be or'd in with any pointers which were stored in a Lisp_Object. */ -#define XPNTR(a) ((uintptr_t) ((XLI (a) & VALMASK)) | DATA_SEG_BITS)) +#define XPNTR(a) ((uintptr_t) ((XLI (a) & VALMASK) | DATA_SEG_BITS)) #endif /* not USE_LSB_TAG */ ------------------------------------------------------------ revno: 111911 committer: Bastien Guerry branch nick: trunk timestamp: Sat 2013-03-02 08:19:10 +0100 message: Fix typo in comment (bug#13851). Thanks to Reuben Thomas for reporting this. diff: === modified file 'lisp/emacs-lisp/nadvice.el' --- lisp/emacs-lisp/nadvice.el 2013-01-15 06:05:22 +0000 +++ lisp/emacs-lisp/nadvice.el 2013-03-02 07:19:10 +0000 @@ -23,7 +23,7 @@ ;; This package lets you add behavior (which we call "piece of advice") to ;; existing functions, like the old `advice.el' package, but with much fewer -;; bells ans whistles. It comes in 2 parts: +;; bells and whistles. It comes in 2 parts: ;; ;; - The first part lets you add/remove functions, similarly to ;; add/remove-hook, from any "place" (i.e. as accepted by `setf') that ------------------------------------------------------------ Use --include-merged or -n0 to see merged revisions.