------------------------------------------------------------ revno: 117324 fixes bug: http://debbugs.gnu.org/13948 committer: Nicolas Richard branch nick: trunk timestamp: Thu 2014-06-12 17:54:37 +0200 message: (describe-key) Mention the keymap in which the binding was found. * lisp/help.el (help--key-binding-keymap): New function. (help--binding-locus): New function. (describe-key): Mention the keymap in which the binding was found. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-12 14:35:09 +0000 +++ lisp/ChangeLog 2014-06-12 15:54:37 +0000 @@ -1,3 +1,10 @@ +2014-06-12 Nicolas Richard + + * help.el (help--key-binding-keymap): New function. + (help--binding-locus): New function. + (describe-key): Mention the keymap in which the binding was + found. (bug#13948) + 2014-06-12 Stefan Monnier * hippie-exp.el (he--all-buffers): New function. === modified file 'lisp/help.el' --- lisp/help.el 2014-06-12 02:18:54 +0000 +++ lisp/help.el 2014-06-12 15:54:37 +0000 @@ -646,6 +646,68 @@ (princ (format "%s%s is undefined" key-desc mouse-msg)) (princ (format "%s%s runs the command %S" key-desc mouse-msg defn))))) +(defun help--key-binding-keymap (key &optional accept-default no-remap position) + "Return a keymap holding a binding for KEY within current keymaps. +The effect of the arguments KEY, ACCEPT-DEFAULT, NO-REMAP and +POSITION is as documented in the function `key-binding'." + (let* ((active-maps (current-active-maps t position)) + map found) + ;; We loop over active maps like key-binding does. + (while (and + (not found) + (setq map (pop active-maps))) + (setq found (lookup-key map key accept-default)) + (when (integerp found) + ;; The first `found' characters of KEY were found but not the + ;; whole sequence. + (setq found nil))) + (when found + (if (and (symbolp found) + (not no-remap) + (command-remapping found)) + ;; The user might want to know in which map the binding is + ;; found, or in which map the remapping is found. The + ;; default is to show the latter. + (key-binding-keymap (vector 'remap found)) + map)))) + +(defun help--binding-locus (key position) + "Describe in which keymap KEY is defined. +Return a symbol pointing to that keymap if one exists ; otherwise +return nil." + (let ((map (key-binding-keymap key t nil position))) + (when map + (catch 'found + (let ((advertised-syms (nconc + (list 'overriding-terminal-local-map + 'overriding-local-map) + (delq nil + (mapcar + (lambda (mode-and-map) + (let ((mode (car mode-and-map))) + (when (symbol-value mode) + (intern-soft + (format "%s-map" mode))))) + minor-mode-map-alist)) + (list 'global-map + (intern-soft (format "%s-map" major-mode))))) + found) + ;; Look into these advertised symbols first. + (dolist (sym advertised-syms) + (when (and + (boundp sym) + (eq map (symbol-value sym))) + (throw 'found sym))) + ;; Only look in other symbols otherwise. + (mapatoms + (lambda (x) + (when (and (boundp x) + ;; Avoid let-bound symbols. + (special-variable-p x) + (eq (symbol-value x) map)) + (throw 'found x)))) + nil))))) + (defun describe-key (&optional key untranslated up-event) "Display documentation of the function invoked by KEY. KEY can be any kind of a key sequence; it can include keyboard events, @@ -708,6 +770,7 @@ (mouse-msg (if (or (memq 'click modifiers) (memq 'down modifiers) (memq 'drag modifiers)) " at that spot" "")) (defn (key-binding key t)) + key-locus key-locus-up key-locus-up-tricky defn-up defn-up-tricky ev-type mouse-1-remapped mouse-1-tricky) @@ -746,15 +809,19 @@ (setcar up-event (elt mouse-1-remapped 0))) (t (setcar up-event 'mouse-2)))) (setq defn-up (key-binding sequence nil nil (event-start up-event))) + (setq key-locus-up (help--binding-locus sequence (event-start up-event))) (when mouse-1-tricky (setq sequence (vector up-event)) (aset sequence 0 'mouse-1) - (setq defn-up-tricky (key-binding sequence nil nil (event-start up-event)))))) + (setq defn-up-tricky (key-binding sequence nil nil (event-start up-event))) + (setq key-locus-up-tricky (help--binding-locus sequence (event-start up-event)))))) + (setq key-locus (help--binding-locus key (event-start event))) (with-help-window (help-buffer) (princ (help-key-description key untranslated)) - (princ (format "\ -%s runs the command %S, which is " - mouse-msg defn)) + (princ (format "%s runs the command %S%s, which is " + mouse-msg defn (if key-locus + (format " (found in %s)" key-locus) + ""))) (describe-function-1 defn) (when up-event (unless (or (null defn-up) @@ -764,13 +831,15 @@ ----------------- up-event %s---------------- -%s%s%s runs the command %S, which is " +%s%s%s runs the command %S%s, which is " (if mouse-1-tricky "(short click) " "") (key-description (vector up-event)) mouse-msg (if mouse-1-remapped " is remapped to , which" "") - defn-up)) + defn-up (if key-locus-up + (format " (found in %s)" key-locus-up) + ""))) (describe-function-1 defn-up)) (unless (or (null defn-up-tricky) (integerp defn-up-tricky) @@ -780,10 +849,12 @@ ----------------- up-event (long click) ---------------- Pressing <%S>%s for longer than %d milli-seconds -runs the command %S, which is " +runs the command %S%s, which is " ev-type mouse-msg mouse-1-click-follows-link - defn-up-tricky)) + defn-up-tricky (if key-locus-up-tricky + (format " (found in %s)" key-locus-up-tricky) + ""))) (describe-function-1 defn-up-tricky))))))) (defun describe-mode (&optional buffer) ------------------------------------------------------------ revno: 117323 committer: Stefan Monnier branch nick: trunk timestamp: Thu 2014-06-12 10:55:48 -0400 message: * src/keymap.c (silly_event_symbol_error): Don't recommend the use of strings. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-11 19:33:14 +0000 +++ src/ChangeLog 2014-06-12 14:55:48 +0000 @@ -1,3 +1,8 @@ +2014-06-12 Stefan Monnier + + * keymap.c (silly_event_symbol_error): Don't recommend the use + of strings. + 2014-06-11 Eli Zaretskii * xdisp.c (set_cursor_from_row): Fix an off-by-one error when @@ -12,7 +17,7 @@ * nsterm.m (run): Always compile for Cocoa. Use runtime check to determine 10.9 (Bug#17751). - * macfont.m (macfont_draw): positions where not freed. + * macfont.m (macfont_draw): Positions were not freed. 2014-06-10 Dmitry Antipov @@ -650,8 +655,8 @@ was moved to Fgarbage_collect. (Fgarbage_collect): Calculate the end address of the stack portion that needs to be examined by mark_stack, and pass that address to - garbage_collect_1, which will pass it to mark_stack. See - http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00270.html + garbage_collect_1, which will pass it to mark_stack. + See http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00270.html for more details about the underlying problems. In particular, this avoids dumping Emacs with the large hash-table whose value is held in purify-flag for most of the time loadup.el runs. === modified file 'src/keymap.c' --- src/keymap.c 2014-04-05 19:30:36 +0000 +++ src/keymap.c 2014-06-12 14:55:48 +0000 @@ -1383,9 +1383,7 @@ c = reorder_modifiers (c); keystring = concat2 (build_string (new_mods), XCDR (assoc)); - error ((modifiers & ~meta_modifier - ? "To bind the key %s, use [?%s], not [%s]" - : "To bind the key %s, use \"%s\", not [%s]"), + error ("To bind the key %s, use [?%s], not [%s]", SDATA (SYMBOL_NAME (c)), SDATA (keystring), SDATA (SYMBOL_NAME (c))); } ------------------------------------------------------------ revno: 117322 committer: Stefan Monnier branch nick: trunk timestamp: Thu 2014-06-12 10:35:09 -0400 message: * lisp/hippie-exp.el (he--all-buffers): New function. (try-expand-line-all-buffers, try-expand-list-all-buffers) (try-expand-dabbrev-all-buffers): Use it. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-12 13:45:52 +0000 +++ lisp/ChangeLog 2014-06-12 14:35:09 +0000 @@ -1,3 +1,9 @@ +2014-06-12 Stefan Monnier + + * hippie-exp.el (he--all-buffers): New function. + (try-expand-line-all-buffers, try-expand-list-all-buffers) + (try-expand-dabbrev-all-buffers): Use it. + 2014-06-12 Emilio C. Lopes * hippie-exp.el (try-expand-line-all-buffers) === modified file 'lisp/hippie-exp.el' --- lisp/hippie-exp.el 2014-06-12 13:45:52 +0000 +++ lisp/hippie-exp.el 2014-06-12 14:35:09 +0000 @@ -637,17 +637,27 @@ The argument OLD has to be nil the first call of this function, and t for subsequent calls (for further possible completions of the same string). It returns t if a new completion is found, nil otherwise." + (he--all-buffers + old + (lambda () (he-line-beg (and (get-buffer-process (current-buffer)) + comint-use-prompt-regexp + comint-prompt-regexp))) + (lambda (string) + (he-line-search string + (and (get-buffer-process (current-buffer)) + comint-use-prompt-regexp + comint-prompt-regexp) + nil)))) + +(defun he--all-buffers (old beg-function search-function) (let ((expansion ()) - (strip-prompt (and (get-buffer-process (current-buffer)) - comint-use-prompt-regexp - comint-prompt-regexp)) - (buf (current-buffer)) + (buf (current-buffer)) (only-buffers hippie-expand-only-buffers) (ignore-buffers hippie-expand-ignore-buffers) - (orig-case-fold-search case-fold-search)) + (orig-case-fold-search case-fold-search)) (if (not old) - (progn - (he-init-string (he-line-beg strip-prompt) (point)) + (progn + (he-init-string (funcall beg-function) (point)) (setq he-search-bufs (buffer-list)) (setq he-searched-n-bufs 0) (set-marker he-search-loc 1 (car he-search-bufs)))) @@ -656,24 +666,20 @@ (while (and he-search-bufs (not expansion) (or (not hippie-expand-max-buffers) - (< he-searched-n-bufs hippie-expand-max-buffers))) - (set-buffer (car he-search-bufs)) - (if (and (not (eq (current-buffer) buf)) - (if only-buffers - (he-buffer-member only-buffers) - (not (he-buffer-member ignore-buffers)))) - (save-excursion - (save-restriction - (if hippie-expand-no-restriction + (< he-searched-n-bufs hippie-expand-max-buffers))) + (set-buffer (car he-search-bufs)) + (if (and (not (eq (current-buffer) buf)) + (if only-buffers + (he-buffer-member only-buffers) + (not (he-buffer-member ignore-buffers)))) + (save-excursion + (save-restriction + (if hippie-expand-no-restriction (widen)) (goto-char he-search-loc) - (setq strip-prompt (and (get-buffer-process (current-buffer)) - comint-use-prompt-regexp - comint-prompt-regexp)) (setq expansion (let ((case-fold-search orig-case-fold-search)) - (he-line-search he-search-string - strip-prompt nil))) + (funcall search-function he-search-string))) (set-marker he-search-loc (point)) (if (not expansion) (progn @@ -688,9 +694,9 @@ (progn (if old (he-reset-string)) ()) - (progn - (he-substitute-string expansion t) - t)))) + (progn + (he-substitute-string expansion t) + t)))) (defun he-line-search (str strip-prompt reverse) (let ((result ())) @@ -771,55 +777,9 @@ The argument OLD has to be nil the first call of this function, and t for subsequent calls (for further possible completions of the same string). It returns t if a new completion is found, nil otherwise." - (let ((expansion ()) - (buf (current-buffer)) - (only-buffers hippie-expand-only-buffers) - (ignore-buffers hippie-expand-ignore-buffers) - (orig-case-fold-search case-fold-search)) - (if (not old) - (progn - (he-init-string (he-list-beg) (point)) - (setq he-search-bufs (buffer-list)) - (setq he-searched-n-bufs 0) - (set-marker he-search-loc 1 (car he-search-bufs)))) - - (if (not (equal he-search-string "")) - (while (and he-search-bufs - (not expansion) - (or (not hippie-expand-max-buffers) - (< he-searched-n-bufs hippie-expand-max-buffers))) - (set-buffer (car he-search-bufs)) - (if (and (not (eq (current-buffer) buf)) - (if only-buffers - (he-buffer-member only-buffers) - (not (he-buffer-member ignore-buffers)))) - (save-excursion - (save-restriction - (if hippie-expand-no-restriction - (widen)) - (goto-char he-search-loc) - (setq expansion - (let ((case-fold-search orig-case-fold-search)) - (he-list-search he-search-string nil))) - (set-marker he-search-loc (point)) - (if (not expansion) - (progn - (setq he-search-bufs (cdr he-search-bufs)) - (setq he-searched-n-bufs (1+ he-searched-n-bufs)) - (set-marker he-search-loc 1 (car he-search-bufs)))))) - (setq he-search-bufs (cdr he-search-bufs)) - (set-marker he-search-loc 1 (car he-search-bufs))))) - - (set-buffer buf) - (if (not expansion) - (progn - (if old (he-reset-string)) - ()) - (progn - (he-substitute-string expansion t) - t)))) - -(defun he-list-search (str reverse) + (he--all-buffers old #'he-list-beg #'he-list-search)) + +(defun he-list-search (str &optional reverse) (let ((result ()) beg pos err) (while (and (not result) @@ -928,53 +888,7 @@ The argument OLD has to be nil the first call of this function, and t for subsequent calls (for further possible expansions of the same string). It returns t if a new expansion is found, nil otherwise." - (let ((expansion ()) - (buf (current-buffer)) - (only-buffers hippie-expand-only-buffers) - (ignore-buffers hippie-expand-ignore-buffers) - (orig-case-fold-search case-fold-search)) - (if (not old) - (progn - (he-init-string (he-dabbrev-beg) (point)) - (setq he-search-bufs (buffer-list)) - (setq he-searched-n-bufs 0) - (set-marker he-search-loc 1 (car he-search-bufs)))) - - (if (not (equal he-search-string "")) - (while (and he-search-bufs - (not expansion) - (or (not hippie-expand-max-buffers) - (< he-searched-n-bufs hippie-expand-max-buffers))) - (set-buffer (car he-search-bufs)) - (if (and (not (eq (current-buffer) buf)) - (if only-buffers - (he-buffer-member only-buffers) - (not (he-buffer-member ignore-buffers)))) - (save-excursion - (save-restriction - (if hippie-expand-no-restriction - (widen)) - (goto-char he-search-loc) - (setq expansion - (let ((case-fold-search orig-case-fold-search)) - (he-dabbrev-search he-search-string nil))) - (set-marker he-search-loc (point)) - (if (not expansion) - (progn - (setq he-search-bufs (cdr he-search-bufs)) - (setq he-searched-n-bufs (1+ he-searched-n-bufs)) - (set-marker he-search-loc 1 (car he-search-bufs)))))) - (setq he-search-bufs (cdr he-search-bufs)) - (set-marker he-search-loc 1 (car he-search-bufs))))) - - (set-buffer buf) - (if (not expansion) - (progn - (if old (he-reset-string)) - ()) - (progn - (he-substitute-string expansion t) - t)))) + (he--all-buffers old #'he-dabbrev-beg #'he-dabbrev-search)) ;; Thanks go to Jeff Dairiki who ;; suggested this one. ------------------------------------------------------------ revno: 117321 author: Emilio C. Lopes committer: Stefan Monnier branch nick: trunk timestamp: Thu 2014-06-12 09:45:52 -0400 message: * lisp/hippie-exp.el (try-expand-line-all-buffers) (try-expand-list-all-buffers, try-expand-dabbrev-all-buffers): Read hippie-expand-only-buffers and hippie-expand-ignore-buffers in the original buffer, in case they're buffer-local. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-12 06:04:48 +0000 +++ lisp/ChangeLog 2014-06-12 13:45:52 +0000 @@ -1,10 +1,17 @@ +2014-06-12 Emilio C. Lopes + + * hippie-exp.el (try-expand-line-all-buffers) + (try-expand-list-all-buffers, try-expand-dabbrev-all-buffers): + Read hippie-expand-only-buffers and hippie-expand-ignore-buffers in the + original buffer, in case they're buffer-local. + 2014-06-12 Vincent Belaïche * ses.el (ses-initial-global-parameters-re): New defconst, a specific regexp is needed now that ses.el can handle both - file-format 2 --- ie. no local printers --- and 3 --- i.e. may have local printers. - (ses-localvars): Add local variables needed for local printer - handling. + file-format 2 --- ie. no local printers --- and 3 --- i.e. may have + local printers. + (ses-localvars): Add local variables needed for local printer handling. (ses-set-localvars): Handle hashmap initialisation. (ses-paramlines-plist): Add param-line for number of local printers. (ses-paramfmt-plist): New defconst, needed for code factorization @@ -19,10 +26,11 @@ (ses-printer-validate, ses-call-printer): Add support for local printer functions. (ses-file-format-extend-paramter-list): New defun. - (ses-set-parameter): Use const `ses-paramfmt-plist' for code factorization. - (ses-load): Add support for local - printer functions. - (ses-read-printer): Update docstring and add support for local printer functions. + (ses-set-parameter): Use const `ses-paramfmt-plist' for code + factorization. + (ses-load): Add support for local printer functions. + (ses-read-printer): Update docstring and add support for local printer + functions. (ses-refresh-local-printer, ses-define-local-printer): New defun. (ses-safe-printer): Add support for local printer functions. === modified file 'lisp/hippie-exp.el' --- lisp/hippie-exp.el 2014-05-23 18:14:24 +0000 +++ lisp/hippie-exp.el 2014-06-12 13:45:52 +0000 @@ -639,12 +639,14 @@ string). It returns t if a new completion is found, nil otherwise." (let ((expansion ()) (strip-prompt (and (get-buffer-process (current-buffer)) - comint-use-prompt-regexp - comint-prompt-regexp)) - (buf (current-buffer)) - (orig-case-fold-search case-fold-search)) + comint-use-prompt-regexp + comint-prompt-regexp)) + (buf (current-buffer)) + (only-buffers hippie-expand-only-buffers) + (ignore-buffers hippie-expand-ignore-buffers) + (orig-case-fold-search case-fold-search)) (if (not old) - (progn + (progn (he-init-string (he-line-beg strip-prompt) (point)) (setq he-search-bufs (buffer-list)) (setq he-searched-n-bufs 0) @@ -654,15 +656,15 @@ (while (and he-search-bufs (not expansion) (or (not hippie-expand-max-buffers) - (< he-searched-n-bufs hippie-expand-max-buffers))) - (set-buffer (car he-search-bufs)) - (if (and (not (eq (current-buffer) buf)) - (if hippie-expand-only-buffers - (he-buffer-member hippie-expand-only-buffers) - (not (he-buffer-member hippie-expand-ignore-buffers)))) - (save-excursion - (save-restriction - (if hippie-expand-no-restriction + (< he-searched-n-bufs hippie-expand-max-buffers))) + (set-buffer (car he-search-bufs)) + (if (and (not (eq (current-buffer) buf)) + (if only-buffers + (he-buffer-member only-buffers) + (not (he-buffer-member ignore-buffers)))) + (save-excursion + (save-restriction + (if hippie-expand-no-restriction (widen)) (goto-char he-search-loc) (setq strip-prompt (and (get-buffer-process (current-buffer)) @@ -770,10 +772,12 @@ for subsequent calls (for further possible completions of the same string). It returns t if a new completion is found, nil otherwise." (let ((expansion ()) - (buf (current-buffer)) - (orig-case-fold-search case-fold-search)) + (buf (current-buffer)) + (only-buffers hippie-expand-only-buffers) + (ignore-buffers hippie-expand-ignore-buffers) + (orig-case-fold-search case-fold-search)) (if (not old) - (progn + (progn (he-init-string (he-list-beg) (point)) (setq he-search-bufs (buffer-list)) (setq he-searched-n-bufs 0) @@ -786,9 +790,9 @@ (< he-searched-n-bufs hippie-expand-max-buffers))) (set-buffer (car he-search-bufs)) (if (and (not (eq (current-buffer) buf)) - (if hippie-expand-only-buffers - (he-buffer-member hippie-expand-only-buffers) - (not (he-buffer-member hippie-expand-ignore-buffers)))) + (if only-buffers + (he-buffer-member only-buffers) + (not (he-buffer-member ignore-buffers)))) (save-excursion (save-restriction (if hippie-expand-no-restriction @@ -811,9 +815,9 @@ (progn (if old (he-reset-string)) ()) - (progn - (he-substitute-string expansion t) - t)))) + (progn + (he-substitute-string expansion t) + t)))) (defun he-list-search (str reverse) (let ((result ()) @@ -925,10 +929,12 @@ for subsequent calls (for further possible expansions of the same string). It returns t if a new expansion is found, nil otherwise." (let ((expansion ()) - (buf (current-buffer)) - (orig-case-fold-search case-fold-search)) + (buf (current-buffer)) + (only-buffers hippie-expand-only-buffers) + (ignore-buffers hippie-expand-ignore-buffers) + (orig-case-fold-search case-fold-search)) (if (not old) - (progn + (progn (he-init-string (he-dabbrev-beg) (point)) (setq he-search-bufs (buffer-list)) (setq he-searched-n-bufs 0) @@ -941,9 +947,9 @@ (< he-searched-n-bufs hippie-expand-max-buffers))) (set-buffer (car he-search-bufs)) (if (and (not (eq (current-buffer) buf)) - (if hippie-expand-only-buffers - (he-buffer-member hippie-expand-only-buffers) - (not (he-buffer-member hippie-expand-ignore-buffers)))) + (if only-buffers + (he-buffer-member only-buffers) + (not (he-buffer-member ignore-buffers)))) (save-excursion (save-restriction (if hippie-expand-no-restriction @@ -966,9 +972,9 @@ (progn (if old (he-reset-string)) ()) - (progn - (he-substitute-string expansion t) - t)))) + (progn + (he-substitute-string expansion t) + t)))) ;; Thanks go to Jeff Dairiki who ;; suggested this one. ------------------------------------------------------------ revno: 117320 committer: Vincent Belaïche branch nick: trunk timestamp: Thu 2014-06-12 08:04:48 +0200 message: Adding support for SES local printer functions diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2014-06-12 01:00:57 +0000 +++ doc/misc/ChangeLog 2014-06-12 06:04:48 +0000 @@ -1,3 +1,7 @@ +2014-06-12 Vincent Belaïche + + * ses.texi: Adding documentation for SES local printer functions. + 2014-06-12 Glenn Morris * Makefile.in: Use GNU Make features to reduce duplication. === modified file 'doc/misc/ses.texi' --- doc/misc/ses.texi 2014-06-10 02:20:31 +0000 +++ doc/misc/ses.texi 2014-06-12 06:04:48 +0000 @@ -435,6 +435,13 @@ Centering with tildes (~) and spill-over. @end table +You can define printer function local to a sheet with command +@code{ses-define-local-printer}. For instance define printer +@samp{foo} to @code{"%.2f"} and then use symbol @samp{foo} as a +printer function. Then, if you call again +@code{ses-define-local-printer} on @samp{foo} to redefine it as +@code{"%.3f"} all the cells using printer @samp{foo} will be reprinted +accordingly. @node Clearing cells @section Clearing cells === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-12 02:35:26 +0000 +++ lisp/ChangeLog 2014-06-12 06:04:48 +0000 @@ -1,3 +1,31 @@ +2014-06-12 Vincent Belaïche + + * ses.el (ses-initial-global-parameters-re): New defconst, a + specific regexp is needed now that ses.el can handle both + file-format 2 --- ie. no local printers --- and 3 --- i.e. may have local printers. + (ses-localvars): Add local variables needed for local printer + handling. + (ses-set-localvars): Handle hashmap initialisation. + (ses-paramlines-plist): Add param-line for number of local printers. + (ses-paramfmt-plist): New defconst, needed for code factorization + between functions `ses-set-parameter' and + `ses-file-format-extend-paramter-list' + (ses-make-local-printer-info): New defsubst. + (ses-locprn-get-compiled, ses-locprn-compiled-aset) + (ses-locprn-get-def, ses-locprn-def-aset, ses-locprn-get-number) + (ses-cell-printer-aset): New defmacro. + (ses-local-printer-compile): New defun. + (ses-local-printer): New defmacro. + (ses-printer-validate, ses-call-printer): Add support for local + printer functions. + (ses-file-format-extend-paramter-list): New defun. + (ses-set-parameter): Use const `ses-paramfmt-plist' for code factorization. + (ses-load): Add support for local + printer functions. + (ses-read-printer): Update docstring and add support for local printer functions. + (ses-refresh-local-printer, ses-define-local-printer): New defun. + (ses-safe-printer): Add support for local printer functions. + 2014-06-12 Ivan Andrus * ffap.el (ffap-lax-url): New var (bug#17723). === modified file 'lisp/ses.el' --- lisp/ses.el 2014-01-25 19:15:42 +0000 +++ lisp/ses.el 2014-06-12 06:04:48 +0000 @@ -239,6 +239,10 @@ "\n( ;Global parameters (these are read first)\n 2 ;SES file-format\n 1 ;numrows\n 1 ;numcols\n)\n\n" "Initial contents for the three-element list at the bottom of the data area.") +(defconst ses-initial-global-parameters-re + "\n( ;Global parameters (these are read first)\n [23] ;SES file-format\n [0-9]+ ;numrows\n [0-9]+ ;numcols\n\\( [0-9]+ ;numlocprn\n\\)?)\n\n" + "Match Global parameters for .") + (defconst ses-initial-file-trailer ";; Local Variables:\n;; mode: ses\n;; End:\n" "Initial contents for the file-trailer area at the bottom of the file.") @@ -277,6 +281,12 @@ '(ses--blank-line ses--cells ses--col-printers ses--col-widths ses--curcell ses--curcell-overlay ses--default-printer + (ses--local-printer-hashmap . :hashmap) + ;; the list is there to remember the order of local printers like there + ;; are written to the SES filen which service the hashmap does not + ;; provide. + ses--local-printer-list + (ses--numlocprn . 0); count of local printers ses--deferred-narrow ses--deferred-recalc ses--deferred-write ses--file-format ses--named-cell-hashmap @@ -299,7 +309,20 @@ ((symbolp x) (set (make-local-variable x) nil)) ((consp x) - (set (make-local-variable (car x)) (cdr x))) + (cond + ((integerp (cdr x)) + (set (make-local-variable (car x)) (cdr x))) + ((eq (cdr x) :hashmap) + (set (make-local-variable (car x)) + (if (boundp (car x)) + (let ((xv (symbol-value (car x)))) + (if (hash-table-p xv) + (clrhash xv) + (warn "Unexpected value of symbol %S, should be a hash table" x) + (make-hash-table :test 'eq))) + (make-hash-table :test 'eq)))) + (t (error "Unexpected initializer `%S' in list `ses-localvars' for entry %S" + (cdr x) (car x)) ) )) (t (error "Unexpected elements `%S' in list `ses-localvars'" x)))))) (eval-when-compile ; silence compiler @@ -311,10 +334,21 @@ (defconst ses-paramlines-plist '(ses--col-widths -5 ses--col-printers -4 ses--default-printer -3 ses--header-row -2 ses--file-format 1 ses--numrows 2 - ses--numcols 3) + ses--numcols 3 ses--numlocprn 4) "Offsets from 'Global parameters' line to various parameter lines in the data area of a spreadsheet.") +(defconst ses-paramfmt-plist + '(ses--col-widths "(ses-column-widths %S)" + ses--col-printers "(ses-column-printers %S)" + ses--default-printer "(ses-default-printer %S)" + ses--header-row "(ses-header-row %S)" + ses--file-format " %S ;SES file-format" + ses--numrows " %S ;numrows" + ses--numcols " %S ;numcols" + ses--numlocprn " %S ;numlocprn") + "Formats of 'Global parameters' various parameters in the data +area of a spreadsheet.") ;; ;; "Side-effect variables". They are set in one function, altered in @@ -355,6 +389,30 @@ property-list) (vector symbol formula printer references property-list)) +(defsubst ses-make-local-printer-info (def &optional compiled-def number) + (let ((v (vector def + (or compiled-def (ses-local-printer-compile def)) + (or number ses--numlocprn) + nil))) + (push v ses--local-printer-list) + (aset v 3 ses--local-printer-list) + v)) + +(defmacro ses-locprn-get-compiled (locprn) + `(aref ,locprn 1)) + +(defmacro ses-locprn-compiled-aset (locprn compiled) + `(aset ,locprn 1 ,compiled)) + +(defmacro ses-locprn-get-def (locprn) + `(aref ,locprn 0)) + +(defmacro ses-locprn-def-aset (locprn def) + `(aset ,locprn 0 ,def)) + +(defmacro ses-locprn-get-number (locprn) + `(aref ,locprn 2)) + (defmacro ses-cell-symbol (row &optional col) "From a CELL or a pair (ROW,COL), get the symbol that names the local-variable holding its value. (0,0) => A1." `(aref ,(if col `(ses-get-cell ,row ,col) row) 0)) @@ -372,6 +430,10 @@ "From a CELL or a pair (ROW,COL), get the function that prints its value." `(aref ,(if col `(ses-get-cell ,row ,col) row) 2)) +(defmacro ses-cell-printer-aset (cell printer) + "From a CELL set the printer that prints its value." + `(aset ,cell 2 ,printer)) + (defmacro ses-cell-references (row &optional col) "From a CELL or a pair (ROW,COL), get the list of symbols for cells whose functions refer to its value." @@ -551,6 +613,29 @@ (set sym value) sym) +(defun ses-local-printer-compile (printer) + "Convert local printer function into faster printer +definition." + (cond + ((functionp printer) printer) + ((stringp printer) + `(lambda (x) (format ,printer x))) + (t (error "Invalid printer %S" printer)))) + +(defmacro ses-local-printer (printer-name printer-def) + "Define a local printer with name PRINTER-NAME and definition +PRINTER-DEF. Return the printer info." + (or + (and (symbolp printer-name) + (ses-printer-validate printer-def)) + (error "Invalid local printer definition")) + (and (gethash printer-name ses--local-printer-hashmap) + (error "Duplicate printer definition %S" printer-name)) + (add-to-list 'ses-read-printer-history (symbol-name printer-name)) + (puthash printer-name + (ses-make-local-printer-info (ses-safe-printer printer-def)) + ses--local-printer-hashmap)) + (defmacro ses-column-widths (widths) "Load the vector of column widths from the spreadsheet file. This is a macro to prevent propagate-on-load viruses." @@ -664,6 +749,8 @@ "Signal an error if PRINTER is not a valid SES cell printer." (or (not printer) (stringp printer) + ;; printer is a local printer + (and (symbolp printer) (gethash printer ses--local-printer-hashmap)) (functionp printer) (and (stringp (car-safe printer)) (not (cdr printer))) (error "Invalid printer function")) @@ -1261,7 +1348,13 @@ (format (car printer) value) "")) (t - (setq value (funcall printer (or value ""))) + (setq value (funcall + (or (and (symbolp printer) + (let ((locprn (gethash printer ses--local-printer-hashmap))) + (and locprn + (ses-locprn-get-compiled locprn)))) + printer) + (or value ""))) (if (stringp value) value (or (stringp (car-safe value)) @@ -1334,6 +1427,23 @@ (goto-char ses--params-marker) (forward-line def)))) +(defun ses-file-format-extend-paramter-list (new-file-format) + "Extend the global parameters list when file format is updated +from 2 to 3. This happens when local printer function are added +to a sheet that was created with SES version 2. This is not +undoable. Return nil when there was no change, and non nil otherwise." + (save-excursion + (cond + ((and (= ses--file-format 2) (= 3 new-file-format)) + (ses-set-parameter 'ses--file-format 3) + (message "Upgrading from SES-2 to SES-3 file format") + (ses-widen) + (goto-char ses--params-marker) + (forward-line (plist-get ses-paramlines-plist 'ses--numlocprn )) + (insert (format (plist-get ses-paramfmt-plist 'ses--numlocprn) ses--numlocprn) + ?\n) + t) ))) + (defun ses-set-parameter (def value &optional elem) "Set parameter DEF to VALUE (with undo) and write the value to the data area. See `ses-goto-data' for meaning of DEF. Newlines in the data are escaped. @@ -1343,13 +1453,7 @@ ;; in case one of them is being changed. (ses-goto-data def) (let ((inhibit-read-only t) - (fmt (plist-get '(ses--col-widths "(ses-column-widths %S)" - ses--col-printers "(ses-column-printers %S)" - ses--default-printer "(ses-default-printer %S)" - ses--header-row "(ses-header-row %S)" - ses--file-format " %S ;SES file-format" - ses--numrows " %S ;numrows" - ses--numcols " %S ;numcols") + (fmt (plist-get ses-paramfmt-plist def)) oldval) (if elem @@ -1735,29 +1839,38 @@ (search-backward ";; Local Variables:\n" nil t) (backward-list 1) (setq ses--params-marker (point-marker)) - (let ((params (ignore-errors (read (current-buffer))))) - (or (and (= (safe-length params) 3) + (let* ((params (ignore-errors (read (current-buffer)))) + (params-len (safe-length params))) + (or (and (>= params-len 3) + (<= params-len 4) (numberp (car params)) (numberp (cadr params)) (>= (cadr params) 0) (numberp (nth 2 params)) - (> (nth 2 params) 0)) + (> (nth 2 params) 0) + (or (<= params-len 3) + (let ((numlocprn (nth 3 params))) + (and (integerp numlocprn) (>= numlocprn 0))))) (error "Invalid SES file")) (setq ses--file-format (car params) ses--numrows (cadr params) - ses--numcols (nth 2 params)) + ses--numcols (nth 2 params) + ses--numlocprn (or (nth 3 params) 0)) (when (= ses--file-format 1) (let (buffer-undo-list) ; This is not undoable. (ses-goto-data 'ses--header-row) (insert "(ses-header-row 0)\n") - (ses-set-parameter 'ses--file-format 2) - (message "Upgrading from SES-1 file format"))) - (or (= ses--file-format 2) + (ses-set-parameter 'ses--file-format 3) + (message "Upgrading from SES-1 to SES-2 file format"))) + (or (<= ses--file-format 3) (error "This file needs a newer version of the SES library code")) ;; Initialize cell array. (setq ses--cells (make-vector ses--numrows nil)) (dotimes (row ses--numrows) - (aset ses--cells row (make-vector ses--numcols nil)))) + (aset ses--cells row (make-vector ses--numcols nil))) + ;; initialize local printer map. + (clrhash ses--local-printer-hashmap)) + ;; Skip over print area, which we assume is correct. (goto-char (point-min)) (forward-line ses--numrows) @@ -1768,7 +1881,22 @@ (forward-char (1- (length ses-print-data-boundary))) ;; Initialize printer and symbol lists. (mapc 'ses-printer-record ses-standard-printer-functions) - (setq ses--symbolic-formulas nil) + (setq ses--symbolic-formulas nil) + + ;; Load local printer definitions. + ;; This must be loaded *BEFORE* cells and column printers because the latters + ;; may call them. + (save-excursion + (forward-line (* ses--numrows (1+ ses--numcols))) + (let ((numlocprn ses--numlocprn)) + (setq ses--numlocprn 0) + (dotimes (lp numlocprn) + (let ((x (read (current-buffer)))) + (or (and (looking-at-p "\n") + (eq (car-safe x) 'ses-local-printer) + (eval x)) + (error "local printer-def error")) + (setq ses--numlocprn (1+ ses--numlocprn)))))) ;; Load cell definitions. (dotimes (row ses--numrows) (dotimes (col ses--numcols) @@ -1781,6 +1909,8 @@ (eval x))) (or (looking-at-p "\n\n") (error "Missing blank line between rows"))) + ;; Skip local printer function declaration --- that were already loaded. + (forward-line (+ 2 ses--numlocprn)) ;; Load global parameters. (let ((widths (read (current-buffer))) (n1 (char-after (point))) @@ -1805,8 +1935,7 @@ (1value (eval head-row))) ;; Should be back at global-params. (forward-char 1) - (or (looking-at-p (replace-regexp-in-string "1" "[0-9]+" - ses-initial-global-parameters)) + (or (looking-at-p ses-initial-global-parameters-re) (error "Problem with column-defs or global-params")) ;; Check for overall newline count in definitions area. (forward-line 3) @@ -2390,8 +2519,10 @@ ;;---------------------------------------------------------------------------- (defun ses-read-printer (prompt default) - "Common code for `ses-read-cell-printer', `ses-read-column-printer', and `ses-read-default-printer'. -PROMPT should end with \": \". Result is t if operation was canceled." + "Common code for functions `ses-read-cell-printer', `ses-read-column-printer', +`ses-read-default-printer' and `ses-define-local-printer'. +PROMPT should end with \": \". Result is t if operation was +canceled." (barf-if-buffer-read-only) (if (eq default t) (setq default "") @@ -2411,6 +2542,7 @@ (or (not new) (stringp new) (stringp (car-safe new)) + (and (symbolp new) (gethash new ses--local-printer-hashmap)) (ses-warn-unsafe new 'unsafep-function) (setq new t))) new)) @@ -3344,6 +3476,71 @@ (symbol-name new-name))) (force-mode-line-update))) +(defun ses-refresh-local-printer (name compiled-value) + "Refresh printout of spreadsheet for all cells with printer + defined to local printer named NAME using the value COMPILED-VALUE for this printer" + (message "Refreshing cells using printer %S" name) + (let (new-print) + (dotimes (row ses--numrows) + (dotimes (col ses--numcols) + (let ((cell-printer (ses-cell-printer row col))) + (when (eq cell-printer name) + (unless new-print + (setq new-print t) + (ses-begin-change)) + (ses-print-cell row col))))))) + +(defun ses-define-local-printer (printer-name) + "Define a local printer with name PRINTER-NAME." + (interactive "*SEnter printer name: ") + (let* ((cur-printer (gethash printer-name ses--local-printer-hashmap)) + (default (and (vectorp cur-printer) (ses-locprn-get-def cur-printer))) + printer-def-text + create-printer + (new-printer (ses-read-printer (format "Enter definition of printer %S: " printer-name) default))) + (cond + ;; cancelled operation => do nothing + ((eq new-printer t)) + ;; no change => do nothing + ((and (vectorp cur-printer) (equal new-printer default))) + ;; re-defined printer + ((vectorp cur-printer) + (setq create-printer 0) + (ses-locprn-def-aset cur-printer new-printer) + (ses-refresh-local-printer + printer-name + (ses-locprn-compiled-aset cur-printer (ses-local-printer-compile new-printer)))) + ;; new definition + (t + (setq create-printer 1) + (puthash printer-name + (setq cur-printer + (ses-make-local-printer-info new-printer)) + ses--local-printer-hashmap))) + (when create-printer + (setq printer-def-text + (concat + "(ses-local-printer " + (symbol-name printer-name) + " " + (prin1-to-string (ses-locprn-get-def cur-printer)) + ")")) + (save-excursion + (ses-goto-data ses--numrows + (ses-locprn-get-number cur-printer)) + (let ((inhibit-read-only t)) + ;; Special undo since it's outside the narrowed buffer. + (let (buffer-undo-list) + (if (= create-printer 0) + (delete-region (point) (line-end-position)) + (insert ?\n) + (backward-char)) + (insert printer-def-text) + (when (= create-printer 1) + (ses-file-format-extend-paramter-list 3) + (ses-set-parameter 'ses--numlocprn (+ ses--numlocprn create-printer))) ))))) ) + + ;;---------------------------------------------------------------------------- ;; Checking formulas for safety ;;---------------------------------------------------------------------------- @@ -3353,6 +3550,7 @@ (if (or (stringp printer) (stringp (car-safe printer)) (not printer) + (and (symbolp printer) (gethash printer ses--local-printer-hashmap)) (ses-warn-unsafe printer 'unsafep-function)) printer 'ses-unsafe)) ------------------------------------------------------------ revno: 117319 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17672 author: Matthias Meulien committer: Stefan Monnier branch nick: trunk timestamp: Wed 2014-06-11 22:35:26 -0400 message: * lisp/progmodes/python.el (import skeleton): New skeleton. (python-mode-map): Bind it. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-12 02:29:50 +0000 +++ lisp/ChangeLog 2014-06-12 02:35:26 +0000 @@ -6,6 +6,9 @@ 2014-06-12 Matthias Meulien + * progmodes/python.el (import skeleton): New skeleton (bug#17672). + (python-mode-map): Bind it. + * progmodes/python.el (class skeleton): Don't erase last char of class name (bug#17683). === modified file 'lisp/progmodes/python.el' --- lisp/progmodes/python.el 2014-06-12 02:24:24 +0000 +++ lisp/progmodes/python.el 2014-06-12 02:35:26 +0000 @@ -155,15 +155,13 @@ ;; the shell completion in background so you should run ;; `python-shell-send-buffer' from time to time to get better results. -;; Skeletons: 6 skeletons are provided for simple inserting of class, -;; def, for, if, try and while. These skeletons are integrated with -;; abbrev. If you have `abbrev-mode' activated and +;; Skeletons: skeletons are provided for simple inserting of things like class, +;; def, for, import, if, try, and while. These skeletons are +;; integrated with abbrev. If you have `abbrev-mode' activated and ;; `python-skeleton-autoinsert' is set to t, then whenever you type ;; the name of any of those defined and hit SPC, they will be ;; automatically expanded. As an alternative you can use the defined -;; skeleton commands: `python-skeleton-class', `python-skeleton-def' -;; `python-skeleton-for', `python-skeleton-if', `python-skeleton-try' -;; and `python-skeleton-while'. +;; skeleton commands: `python-skeleton-'. ;; FFAP: You can find the filename for a given module when using ffap ;; out of the box. This feature needs an inferior python shell @@ -253,6 +251,7 @@ (define-key map "\C-c\C-td" 'python-skeleton-def) (define-key map "\C-c\C-tf" 'python-skeleton-for) (define-key map "\C-c\C-ti" 'python-skeleton-if) + (define-key map "\C-c\C-tm" 'python-skeleton-import) (define-key map "\C-c\C-tt" 'python-skeleton-try) (define-key map "\C-c\C-tw" 'python-skeleton-while) ;; Shell interaction @@ -2957,6 +2956,12 @@ > _ \n '(python-skeleton--else) | ^) +(python-skeleton-define import nil + "Import from module: " + "from " str & " " | -5 + "import " + ("Identifier: " str ", ") -2 \n _) + (python-skeleton-define try nil nil "try:" \n ------------------------------------------------------------ revno: 117318 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17723 author: Ivan Andrus committer: Stefan Monnier branch nick: trunk timestamp: Wed 2014-06-11 22:29:50 -0400 message: * lisp/ffap.el (ffap-lax-url): New var. (ffap-url-at-point): Use it. (ffap-file-at-point): Avoid returning just "/". diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-12 02:24:24 +0000 +++ lisp/ChangeLog 2014-06-12 02:29:50 +0000 @@ -1,3 +1,9 @@ +2014-06-12 Ivan Andrus + + * ffap.el (ffap-lax-url): New var (bug#17723). + (ffap-url-at-point): Use it. + (ffap-file-at-point): Avoid returning just "/". + 2014-06-12 Matthias Meulien * progmodes/python.el (class skeleton): Don't erase last char of class === modified file 'lisp/ffap.el' --- lisp/ffap.el 2014-03-21 01:12:57 +0000 +++ lisp/ffap.el 2014-06-12 02:29:50 +0000 @@ -163,6 +163,12 @@ :group 'ffap :version "24.3") +(defcustom ffap-lax-url nil + "If non-nil, allow lax URL matching." + :type 'boolean + :group 'ffap + :version "24.5") + (defcustom ffap-ftp-default-user "anonymous" "User name in FTP file names generated by `ffap-host-to-path'. Note this name may be omitted if it equals the default @@ -1096,7 +1102,7 @@ (w3-view-this-url t)) (let ((thing-at-point-beginning-of-url-regexp ffap-url-regexp) (thing-at-point-default-mail-uri-scheme ffap-foo-at-bar-prefix)) - (thing-at-point-url-at-point t + (thing-at-point-url-at-point ffap-lax-url (if (use-region-p) (cons (region-beginning) (region-end)))))))) @@ -1253,7 +1259,8 @@ (not (ffap-file-exists-string dir)) (not (equal dir (setq dir (file-name-directory (directory-file-name dir))))))) - (ffap-file-exists-string dir))) + (and (not (string= dir "/")) + (ffap-file-exists-string dir)))) ) (set-match-data data)))) ------------------------------------------------------------ revno: 117317 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17683 author: Matthias Meulien committer: Stefan Monnier branch nick: trunk timestamp: Wed 2014-06-11 22:24:24 -0400 message: * lisp/progmodes/python.el (class skeleton): Don't erase last char of class name. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-12 02:18:54 +0000 +++ lisp/ChangeLog 2014-06-12 02:24:24 +0000 @@ -1,3 +1,8 @@ +2014-06-12 Matthias Meulien + + * progmodes/python.el (class skeleton): Don't erase last char of class + name (bug#17683). + 2014-06-12 Cameron Desautels (tiny change) * help.el (where-is): Use `default' arg of completing-read (bug#17705). === modified file 'lisp/progmodes/python.el' --- lisp/progmodes/python.el 2014-06-12 01:45:33 +0000 +++ lisp/progmodes/python.el 2014-06-12 02:24:24 +0000 @@ -2983,7 +2983,7 @@ "class " str "(" ("Inheritance, %s: " (unless (equal ?\( (char-before)) ", ") str) - & ")" | -2 + & ")" | -1 ":" \n "\"\"\"" - "\"\"\"" \n > _ \n) ------------------------------------------------------------ revno: 117316 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17705 author: Cameron Desautels committer: Stefan Monnier branch nick: trunk timestamp: Wed 2014-06-11 22:18:54 -0400 message: * lisp/help.el (where-is): Use `default' arg of completing-read. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-12 02:14:45 +0000 +++ lisp/ChangeLog 2014-06-12 02:18:54 +0000 @@ -1,3 +1,7 @@ +2014-06-12 Cameron Desautels (tiny change) + + * help.el (where-is): Use `default' arg of completing-read (bug#17705). + 2014-06-12 Kevin Ryde * files.el (auto-mode-alist): Map .ad files to xdefaults-mode === modified file 'lisp/help.el' --- lisp/help.el 2014-04-09 03:37:56 +0000 +++ lisp/help.el 2014-06-12 02:18:54 +0000 @@ -517,8 +517,10 @@ (if fn (format "Where is command (default %s): " fn) "Where is command: ") - obarray 'commandp t)) - (list (if (equal val "") fn (intern val)) current-prefix-arg))) + obarray 'commandp t nil nil + (and fn (symbol-name fn)))) + (list (unless (equal val "") (intern val)) + current-prefix-arg))) (unless definition (error "No command")) (let ((func (indirect-function definition)) (defs nil) ------------------------------------------------------------ revno: 117315 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17745 author: Kevin Ryde committer: Stefan Monnier branch nick: trunk timestamp: Wed 2014-06-11 22:14:45 -0400 message: * lisp/files.el (auto-mode-alist): Map .ad files to xdefaults-mode. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-12 01:47:28 +0000 +++ lisp/ChangeLog 2014-06-12 02:14:45 +0000 @@ -1,3 +1,8 @@ +2014-06-12 Kevin Ryde + + * files.el (auto-mode-alist): Map .ad files to xdefaults-mode + (bug#17745). + 2014-06-12 Stefan Monnier * international/mule-cmds.el: Use lexical-binding. === modified file 'lisp/files.el' --- lisp/files.el 2014-06-08 23:41:43 +0000 +++ lisp/files.el 2014-06-12 02:14:45 +0000 @@ -2440,7 +2440,7 @@ ("/\\.\\(?:enigma\\|gltron\\|gtk\\|hxplayer\\|net\\|neverball\\|qt/.+\\|realplayer\\|scummvm\\|sversion\\|sylpheed/.+\\|xmp\\)rc\\'" . conf-mode) ("/\\.\\(?:gdbtkinit\\|grip\\|orbital/.+txt\\|rhosts\\|tuxracer/options\\)\\'" . conf-mode) ("/\\.?X\\(?:default\\|resource\\|re\\)s\\>" . conf-xdefaults-mode) - ("/X11.+app-defaults/" . conf-xdefaults-mode) + ("/X11.+app-defaults/\\|\\.ad\\'" . conf-xdefaults-mode) ("/X11.+locale/.+/Compose\\'" . conf-colon-mode) ;; this contains everything twice, with space and with colon :-( ("/X11.+locale/compose\\.dir\\'" . conf-javaprop-mode) ------------------------------------------------------------ revno: 117314 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2014-06-11 21:47:28 -0400 message: * lisp/international/mule-cmds.el: Use lexical-binding. (ucs-names): Simplify. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-12 01:45:33 +0000 +++ lisp/ChangeLog 2014-06-12 01:47:28 +0000 @@ -1,3 +1,8 @@ +2014-06-12 Stefan Monnier + + * international/mule-cmds.el: Use lexical-binding. + (ucs-names): Simplify. + 2014-05-18 Eric Hanchrow * progmodes/python.el (run-python): Use read-shell-command. === modified file 'lisp/international/mule-cmds.el' --- lisp/international/mule-cmds.el 2014-06-06 14:25:39 +0000 +++ lisp/international/mule-cmds.el 2014-06-12 01:47:28 +0000 @@ -1,4 +1,4 @@ -;;; mule-cmds.el --- commands for multilingual environment -*-coding: utf-8 -*- +;;; mule-cmds.el --- commands for multilingual environment -*- lexical-binding:t -*- ;; Copyright (C) 1997-2014 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, @@ -2909,16 +2909,14 @@ (defun ucs-names () "Return alist of (CHAR-NAME . CHAR-CODE) pairs cached in `ucs-names'." (or ucs-names - (let ((bmp-ranges + (let ((ranges '((#x0000 . #x33FF) ;; (#x3400 . #x4DBF) CJK Ideographs Extension A (#x4DC0 . #x4DFF) ;; (#x4E00 . #x9FFF) CJK Unified Ideographs (#xA000 . #xD7FF) ;; (#xD800 . #xFAFF) Surrogate/Private - (#xFB00 . #xFFFD))) - (upper-ranges - '((#x10000 . #x134FF) + (#xFB00 . #x134FF) ;; (#x13500 . #x167FF) unused (#x16800 . #x16A3F) ;; (#x16A40 . #x1AFFF) unused @@ -2928,23 +2926,20 @@ ;; (#x20000 . #xDFFFF) CJK Ideograph Extension A, B, etc, unused (#xE0000 . #xE01FF))) (gc-cons-threshold 10000000) - c end name names) - (dolist (range bmp-ranges) - (setq c (car range) - end (cdr range)) - (while (<= c end) - (if (setq name (get-char-code-property c 'name)) - (push (cons name c) names)) - (if (setq name (get-char-code-property c 'old-name)) - (push (cons name c) names)) - (setq c (1+ c)))) - (dolist (range upper-ranges) - (setq c (car range) - end (cdr range)) - (while (<= c end) - (if (setq name (get-char-code-property c 'name)) - (push (cons name c) names)) - (setq c (1+ c)))) + names) + (dolist (range ranges) + (let ((c (car range)) + (end (cdr range))) + (while (<= c end) + (let ((new-name (get-char-code-property c 'name)) + (old-name (get-char-code-property c 'old-name))) + ;; In theory this code could end up pushing an "old-name" that + ;; shadows a "new-name" but in practice every time an + ;; `old-name' conflicts with a `new-name', the newer one has a + ;; higher code, so it gets pushed later! + (if new-name (push (cons new-name c) names)) + (if old-name (push (cons old-name c) names)) + (setq c (1+ c)))))) ;; Special case for "BELL" which is apparently the only char which ;; doesn't have a new name and whose old-name is shadowed by a newer ;; char with that name. ------------------------------------------------------------ revno: 117313 author: Eric Hanchrow committer: Stefan Monnier branch nick: trunk timestamp: Wed 2014-06-11 21:45:33 -0400 message: * lisp/progmodes/python.el (run-python): Use read-shell-command. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-11 21:51:44 +0000 +++ lisp/ChangeLog 2014-06-12 01:45:33 +0000 @@ -1,3 +1,7 @@ +2014-05-18 Eric Hanchrow + + * progmodes/python.el (run-python): Use read-shell-command. + 2014-06-11 Stefan Monnier * rect.el: Make it possible to move bounds past EOL or into TABs. === modified file 'lisp/progmodes/python.el' --- lisp/progmodes/python.el 2014-05-14 18:17:05 +0000 +++ lisp/progmodes/python.el 2014-06-12 01:45:33 +0000 @@ -2005,7 +2005,7 @@ (interactive (if current-prefix-arg (list - (read-string "Run Python: " (python-shell-parse-command)) + (read-shell-command "Run Python: " (python-shell-parse-command)) (y-or-n-p "Make dedicated process? ") (= (prefix-numeric-value current-prefix-arg) 4)) (list (python-shell-parse-command) nil t))) ------------------------------------------------------------ revno: 117312 committer: Glenn Morris branch nick: trunk timestamp: Wed 2014-06-11 21:00:57 -0400 message: Simplify doc/misc/Makefile.in with GNU Make features * doc/misc/Makefile.in (mkinfodir): Remove. (${buildinfodir}): Generate using an order-only prerequisite. (.dvi.ps): Replace with pattern rule. ($INFO_TARGETS): Mark as PHONY. (${buildinfodir}): New rule. (EXTRA_OPTS, need_emacsver, need_emacsver_prefix): New variables. (${buildinfodir}/%.info, %.dvi, %.pdf, %.html, %.ps): New pattern rules, replacing numerous previous explicit rules. (info_template): New definition. (gnus.dvi, gnus.pdf): Use distinct intermediate files. (mostlyclean): Adjust for above gnus change. diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2014-06-11 19:33:14 +0000 +++ doc/misc/ChangeLog 2014-06-12 01:00:57 +0000 @@ -1,3 +1,18 @@ +2014-06-12 Glenn Morris + + * Makefile.in: Use GNU Make features to reduce duplication. + (mkinfodir): Remove. + (${buildinfodir}): Generate using an order-only prerequisite. + (.dvi.ps): Replace with pattern rule. + ($INFO_TARGETS): Mark as PHONY. + (${buildinfodir}): New rule. + (EXTRA_OPTS, need_emacsver, need_emacsver_prefix): New variables. + (${buildinfodir}/%.info, %.dvi, %.pdf, %.html, %.ps): + New pattern rules, replacing numerous previous explicit rules. + (info_template): New definition. + (gnus.dvi, gnus.pdf): Use distinct intermediate files. + (mostlyclean): Adjust for above gnus change. + 2014-06-11 Glenn Morris * Makefile.in (INFO_INSTALL): Update for 2013-08-28 DOCMISC_W32 change. === modified file 'doc/misc/Makefile.in' --- doc/misc/Makefile.in 2014-06-11 19:33:14 +0000 +++ doc/misc/Makefile.in 2014-06-12 01:00:57 +0000 @@ -19,15 +19,18 @@ SHELL = @SHELL@ -# Where to find the source code. $(srcdir) will be the man-aux -# subdirectory of the source tree. This is -# set by the configure script's `--srcdir' option. +# Where to find the source code. $(srcdir) will be the doc/misc subdirectory +# of the source tree. This is set by configure's `--srcdir' option. srcdir=@srcdir@ version=@version@ ## Where the output files go. +## Note that all the Info targets build the Info files in srcdir. +## There is no provision for Info files to exist in the build directory. +## In a tarfile of Emacs, the Info files should be up to date. buildinfodir = $(srcdir)/../../info + ## Directory with emacsver.texi. emacsdir = $(srcdir)/../emacs @@ -48,6 +51,7 @@ HTML_OPTS = --no-split --html # Options used only when making info output. +# (Note that idlwave, info used --nosplit even without the .info extension.) INFO_OPTS= --no-split INSTALL = @INSTALL@ @@ -55,6 +59,7 @@ # The makeinfo program is part of the Texinfo distribution. # Use --force so that it generates output even if there are errors. +# (TODO? Why is this appropriate?) MAKEINFO = @MAKEINFO@ MAKEINFO_OPTS = --force -I$(emacsdir) @@ -96,19 +101,12 @@ ENVADD = TEXINPUTS="$(srcdir):$(emacsdir):$(TEXINPUTS)" \ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)" -mkinfodir = @${MKDIR_P} ${buildinfodir} - gfdl = ${srcdir}/doclicense.texi -.PHONY: info dvi html pdf ps echo-info +.PHONY: info dvi html pdf ps echo-info $(INFO_TARGETS) ## Prevent implicit rule triggering for foo.info. .SUFFIXES: -.SUFFIXES: .ps .dvi - -.dvi.ps: - $(DVIPS) -o $@ $< - # Default. info: $(INFO_TARGETS) @@ -126,742 +124,90 @@ ps: $(PS_TARGETS) -# Note that all the Info targets build the Info files in srcdir. -# There is no provision for Info files to exist in the build directory. -# In a distribution of Emacs, the Info files should be up to date. - -# Note: "<" is not portable in ordinary make rules. - -ada_mode_deps = ${srcdir}/ada-mode.texi ${gfdl} -ada-mode : $(buildinfodir)/ada-mode.info -$(buildinfodir)/ada-mode.info: $(ada_mode_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ada-mode.texi -ada-mode.dvi: $(ada_mode_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/ada-mode.texi -ada-mode.pdf: $(ada_mode_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/ada-mode.texi -ada-mode.html: $(ada_mode_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ada-mode.texi - -auth_deps = ${srcdir}/auth.texi ${gfdl} -auth : $(buildinfodir)/auth.info -$(buildinfodir)/auth.info: $(auth_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/auth.texi -auth.dvi: $(auth_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/auth.texi -auth.pdf: $(auth_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/auth.texi -auth.html: $(auth_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/auth.texi - -autotype_deps = ${srcdir}/autotype.texi ${gfdl} -autotype : $(buildinfodir)/autotype.info -$(buildinfodir)/autotype.info: $(autotype_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/autotype.texi -autotype.dvi: $(autotype_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/autotype.texi -autotype.pdf: $(autotype_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/autotype.texi -autotype.html: $(autotype_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/autotype.texi - -bovine_deps = ${srcdir}/bovine.texi ${gfdl} -bovine : $(buildinfodir)/bovine.info -$(buildinfodir)/bovine.info: $(bovine_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/bovine.texi -bovine.dvi: $(bovine_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/bovine.texi -bovine.pdf: $(bovine_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/bovine.texi -bovine.html: $(bovine_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/bovine.texi - -calc_deps = ${srcdir}/calc.texi $(emacsdir)/emacsver.texi ${gfdl} -calc : $(buildinfodir)/calc.info -$(buildinfodir)/calc.info: $(calc_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/calc.texi -calc.dvi: $(calc_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/calc.texi -calc.pdf: $(calc_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/calc.texi -calc.html: $(calc_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/calc.texi - -cc_mode_deps = ${srcdir}/cc-mode.texi ${gfdl} -ccmode : $(buildinfodir)/ccmode.info -$(buildinfodir)/ccmode.info: $(cc_mode_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/cc-mode.texi -cc-mode.dvi: $(cc_mode_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/cc-mode.texi -cc-mode.pdf: $(cc_mode_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/cc-mode.texi -cc-mode.html: $(cc_mode_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/cc-mode.texi - -cl_deps = ${srcdir}/cl.texi $(emacsdir)/emacsver.texi ${gfdl} -cl : $(buildinfodir)/cl.info -$(buildinfodir)/cl.info: $(cl_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/cl.texi -cl.dvi: $(cl_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/cl.texi -cl.pdf: $(cl_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/cl.texi -cl.html: $(cl_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/cl.texi - -dbus_deps = ${srcdir}/dbus.texi ${gfdl} -dbus : $(buildinfodir)/dbus.info -$(buildinfodir)/dbus.info: $(dbus_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/dbus.texi -dbus.dvi: $(dbus_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/dbus.texi -dbus.pdf: $(dbus_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/dbus.texi -dbus.html: $(dbus_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/dbus.texi - -dired_x_deps = ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi ${gfdl} -dired-x : $(buildinfodir)/dired-x.info -$(buildinfodir)/dired-x.info: $(dired_x_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/dired-x.texi -dired-x.dvi: $(dired_x_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/dired-x.texi -dired-x.pdf: $(dired_x_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/dired-x.texi -dired-x.html: $(dired_x_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/dired-x.texi - -ebrowse_deps = ${srcdir}/ebrowse.texi ${gfdl} -ebrowse : $(buildinfodir)/ebrowse.info -$(buildinfodir)/ebrowse.info: $(ebrowse_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ebrowse.texi -ebrowse.dvi: $(ebrowse_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/ebrowse.texi -ebrowse.pdf: $(ebrowse_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/ebrowse.texi -ebrowse.html: $(ebrowse_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ebrowse.texi - -ede_deps = ${srcdir}/ede.texi ${gfdl} -ede : $(buildinfodir)/ede.info -$(buildinfodir)/ede.info: $(ede_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ede.texi -ede.dvi: $(ede_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/ede.texi -ede.pdf: $(ede_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/ede.texi -ede.html: $(ede_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ede.texi - -ediff_deps = ${srcdir}/ediff.texi ${gfdl} -ediff : $(buildinfodir)/ediff.info -$(buildinfodir)/ediff.info: $(ediff_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ediff.texi -ediff.dvi: $(ediff_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/ediff.texi -ediff.pdf: $(ediff_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/ediff.texi -ediff.html: $(ediff_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ediff.texi - -edt_deps = ${srcdir}/edt.texi ${gfdl} -edt : $(buildinfodir)/edt.info -$(buildinfodir)/edt.info: $(edt_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/edt.texi -edt.dvi: $(edt_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/edt.texi -edt.pdf: $(edt_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/edt.texi -edt.html: $(edt_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/edt.texi - -## No gfdl dependency. -efaq_deps = ${srcdir}/efaq.texi $(emacsdir)/emacsver.texi -efaq : $(buildinfodir)/efaq.info -$(buildinfodir)/efaq.info: $(efaq_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/efaq.texi -efaq.dvi: $(efaq_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/efaq.texi -efaq.pdf: $(efaq_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/efaq.texi -efaq.html: $(efaq_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/efaq.texi - -efaq_w32_deps = ${srcdir}/efaq-w32.texi $(emacsdir)/emacsver.texi -efaq-w32 : $(buildinfodir)/efaq-w32.info -$(buildinfodir)/efaq-w32.info: $(efaq_w32_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/efaq-w32.texi -efaq-w32.dvi: $(efaq_w32_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/efaq-w32.texi -efaq-w32.pdf: $(efaq_w32_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/efaq-w32.texi -efaq-w32.html: $(efaq_w32_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/efaq-w32.texi - -eieio_deps = ${srcdir}/eieio.texi ${gfdl} -eieio : $(buildinfodir)/eieio.info -$(buildinfodir)/eieio.info: $(eieio_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eieio.texi -eieio.dvi: $(eieio_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/eieio.texi -eieio.pdf: $(eieio_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/eieio.texi -eieio.html: $(eieio_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/eieio.texi - -emacs_gnutls_deps = ${srcdir}/emacs-gnutls.texi ${gfdl} -emacs-gnutls : $(buildinfodir)/emacs-gnutls.info -$(buildinfodir)/emacs-gnutls.info: $(emacs_gnutls_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/emacs-gnutls.texi -emacs-gnutls.dvi: $(emacs_gnutls_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-gnutls.texi -emacs-gnutls.pdf: $(emacs_gnutls_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-gnutls.texi -emacs-gnutls.html: $(emacs_gnutls_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/emacs-gnutls.texi - -emacs_mime_deps = ${srcdir}/emacs-mime.texi ${gfdl} -emacs-mime : $(buildinfodir)/emacs-mime.info -$(buildinfodir)/emacs-mime.info: $(emacs_mime_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) --enable-encoding -o $@ ${srcdir}/emacs-mime.texi -emacs-mime.dvi: $(emacs_mime_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-mime.texi -emacs-mime.pdf: $(emacs_mime_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-mime.texi -emacs-mime.html: $(emacs_mime_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) --enable-encoding -o $@ ${srcdir}/emacs-mime.texi - -epa_deps = ${srcdir}/epa.texi ${gfdl} -epa : $(buildinfodir)/epa.info -$(buildinfodir)/epa.info: $(epa_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/epa.texi -epa.dvi: $(epa_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/epa.texi -epa.pdf: $(epa_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/epa.texi -epa.html: $(epa_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/epa.texi - -erc_deps = ${srcdir}/erc.texi $(emacsdir)/emacsver.texi ${gfdl} -erc : $(buildinfodir)/erc.info -$(buildinfodir)/erc.info: $(erc_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/erc.texi -erc.dvi: $(erc_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/erc.texi -erc.pdf: $(erc_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/erc.texi -erc.html: $(erc_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/erc.texi - -ert_deps = ${srcdir}/ert.texi ${gfdl} -ert : $(buildinfodir)/ert.info -$(buildinfodir)/ert.info: $(ert_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ert.texi -ert.dvi: $(ert_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/ert.texi -ert.pdf: $(ert_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/ert.texi -ert.html: $(ert_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ert.texi - -eshell_deps = ${srcdir}/eshell.texi ${gfdl} -eshell : $(buildinfodir)/eshell.info -$(buildinfodir)/eshell.info: $(eshell_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eshell.texi -eshell.dvi: $(eshell_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/eshell.texi -eshell.pdf: $(eshell_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/eshell.texi -eshell.html: $(eshell_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/eshell.texi - -eudc_deps = ${srcdir}/eudc.texi ${gfdl} -eudc : $(buildinfodir)/eudc.info -$(buildinfodir)/eudc.info: $(eudc_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eudc.texi -eudc.dvi: $(eudc_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/eudc.texi -eudc.pdf: $(eudc_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/eudc.texi -eudc.html: $(eudc_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/eudc.texi - -eww_deps = ${srcdir}/eww.texi ${gfdl} -eww : $(buildinfodir)/eww.info -$(buildinfodir)/eww.info: $(eww_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eww.texi -eww.dvi: $(eww_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/eww.texi -eww.pdf: $(eww_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/eww.texi -eww.html: $(eww_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/eww.texi - -flymake_deps = ${srcdir}/flymake.texi ${gfdl} -flymake : $(buildinfodir)/flymake.info -$(buildinfodir)/flymake.info: $(flymake_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/flymake.texi -flymake.dvi: $(flymake_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/flymake.texi -flymake.pdf: $(flymake_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/flymake.texi -flymake.html: $(flymake_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/flymake.texi - -forms_deps = ${srcdir}/forms.texi ${gfdl} -forms : $(buildinfodir)/forms.info -$(buildinfodir)/forms.info: $(forms_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/forms.texi -forms.dvi: $(forms_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/forms.texi -forms.pdf: $(forms_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/forms.texi -forms.html: $(forms_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/forms.texi - -## gnus/message/emacs-mime/sieve/pgg are part of Gnus. +${buildinfodir}: + ${MKDIR_P} $@ + +### The general case. + +EXTRA_OPTS = + +${buildinfodir}/%.info: ${srcdir}/%.texi ${gfdl} | ${buildinfodir} + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) $(EXTRA_OPTS) -o $@ $< + +## The short aliases, eg efaq = $(buildinfodir)/efaq.info. +define info_template + $(1): $$(buildinfodir)/$(1).info +endef + +## "info" is already taken. +info.info: $(buildinfodir)/info.info + +$(foreach ifile,$(filter-out info.info,$(INFO_TARGETS)),$(eval $(call info_template,$(ifile)))) + + +%.dvi: ${srcdir}/%.texi ${gfdl} + $(ENVADD) $(TEXI2DVI) $< + +%.pdf: ${srcdir}/%.texi ${gfdl} + $(ENVADD) $(TEXI2PDF) $< + +%.html: ${srcdir}/%.texi ${gfdl} + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) $(EXTRA_OPTS) -o $@ $< + +%.ps: %.dvi + $(DVIPS) -o $@ $< + + +### The exceptions. + +## Extra dependencies. + +need_emacsver = calc cl dired-x efaq efaq-w32 erc ido reftex woman +need_emacsver_prefix = $(addprefix ${buildinfodir}/,${need_emacsver}) + +$(need_emacsver_prefix:=.info) $(need_emacsver:=.dvi) $(need_emacsver:=.pdf) $(need_emacsver:=.html) : ${emacsdir}/emacsver.texi + +$(buildinfodir)/gnus.info gnus.html: ${srcdir}/gnus-faq.texi + +$(buildinfodir)/semantic.info semantic.dvi semantic.pdf semantic.html: ${srcdir}/sem-user.texi + + +## Please can we just rename cc-mode.texi to ccmode.texi... +${buildinfodir}/ccmode.info: ${srcdir}/cc-mode.texi ${gfdl} + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ $< + +## efaq, efaq_w32 do not depend on gfdl. +## Maybe we can use .SECONDEXPANSION for this. +${buildinfodir}/efaq%.info: ${srcdir}/efaq%.texi + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ $< + +efaq%.dvi: ${srcdir}/efaq%.texi + $(ENVADD) $(TEXI2DVI) $< + +efaq%.pdf: ${srcdir}/efaq%.texi + $(ENVADD) $(TEXI2PDF) $< + +efaq%.html: ${srcdir}/efaq%.texi + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ $< + +${buildinfodir}/emacs-mime.info emacs-mime.html: EXTRA_OPTS = --enable-encoding + gnus_deps = ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl} -gnus : $(buildinfodir)/gnus.info -$(buildinfodir)/gnus.info: $(gnus_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/gnus.texi gnus.dvi: $(gnus_deps) - sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi - $(ENVADD) $(TEXI2DVI) gnustmp.texi - cp gnustmp.dvi $@ - rm gnustmp.* + sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmpdvi.texi + $(ENVADD) $(TEXI2DVI) gnustmpdvi.texi + cp gnustmpdvi.dvi $@ + rm gnustmpdvi.* + gnus.pdf: $(gnus_deps) - sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi - $(ENVADD) $(TEXI2PDF) gnustmp.texi - cp gnustmp.pdf $@ - rm gnustmp.* -gnus.html: $(gnus_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/gnus.texi - -htmlfontify_deps = ${srcdir}/htmlfontify.texi ${gfdl} -htmlfontify : $(buildinfodir)/htmlfontify.info -$(buildinfodir)/htmlfontify.info: $(htmlfontify_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/htmlfontify.texi -htmlfontify.dvi: $(htmlfontify_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/htmlfontify.texi -htmlfontify.pdf: $(htmlfontify_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/htmlfontify.texi -htmlfontify.html: $(htmlfontify_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/htmlfontify.texi - -idlwave_deps = ${srcdir}/idlwave.texi ${gfdl} -idlwave : $(buildinfodir)/idlwave.info -# NB this one needs --no-split even without a .info extension. -$(buildinfodir)/idlwave.info: $(idlwave_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/idlwave.texi -idlwave.dvi: $(idlwave_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/idlwave.texi -idlwave.pdf: $(idlwave_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/idlwave.texi -idlwave.html: $(idlwave_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/idlwave.texi - -ido_deps = ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl} -ido : $(buildinfodir)/ido.info -$(buildinfodir)/ido.info: $(ido_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ido.texi -ido.dvi: $(ido_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/ido.texi -ido.pdf: $(ido_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/ido.texi -ido.html: $(ido_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ido.texi - -info_deps = ${srcdir}/info.texi ${gfdl} -# Avoid name clash with overall "info" target. -info.info : $(buildinfodir)/info.info -# NB this one needs --no-split even without a .info extension. -$(buildinfodir)/info.info: $(info_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/info.texi -info.dvi: $(info_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/info.texi -info.pdf: $(info_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/info.texi -info.html: $(info_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/info.texi - -mairix_el_deps = ${srcdir}/mairix-el.texi ${gfdl} -mairix-el : $(buildinfodir)/mairix-el.info -$(buildinfodir)/mairix-el.info: $(mairix_el_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/mairix-el.texi -mairix-el.dvi: $(mairix_el_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/mairix-el.texi -mairix-el.pdf: $(mairix_el_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/mairix-el.texi -mairix-el.html: $(mairix_el_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/mairix-el.texi - -message_deps = ${srcdir}/message.texi ${gfdl} -message : $(buildinfodir)/message.info -$(buildinfodir)/message.info: $(message_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/message.texi -message.dvi: $(message_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/message.texi -message.pdf: $(message_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/message.texi -message.html: $(message_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/message.texi - -mh_e_deps = ${srcdir}/mh-e.texi ${gfdl} -mh-e : $(buildinfodir)/mh-e.info -$(buildinfodir)/mh-e.info: $(mh_e_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/mh-e.texi -mh-e.dvi: $(mh_e_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/mh-e.texi -mh-e.pdf: $(mh_e_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/mh-e.texi -mh-e.html: $(mh_e_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/mh-e.texi - -newsticker_deps = ${srcdir}/newsticker.texi ${gfdl} -newsticker : $(buildinfodir)/newsticker.info -$(buildinfodir)/newsticker.info: $(newsticker_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/newsticker.texi -newsticker.dvi: $(newsticker_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/newsticker.texi -newsticker.pdf: $(newsticker_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/newsticker.texi -newsticker.html: $(newsticker_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/newsticker.texi - -nxml_mode_deps = ${srcdir}/nxml-mode.texi ${gfdl} -nxml-mode : $(buildinfodir)/nxml-mode.info -$(buildinfodir)/nxml-mode.info: $(nxml_mode_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/nxml-mode.texi -nxml-mode.dvi: $(nxml_mode_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/nxml-mode.texi -nxml-mode.pdf: $(nxml_mode_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/nxml-mode.texi -nxml-mode.html: $(nxml_mode_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/nxml-mode.texi - -octave_mode_deps = ${srcdir}/octave-mode.texi ${gfdl} -octave-mode : $(buildinfodir)/octave-mode.info -$(buildinfodir)/octave-mode.info: $(octave_mode_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/octave-mode.texi -octave-mode.dvi: $(octave_mode_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/octave-mode.texi -octave-mode.pdf: $(octave_mode_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/octave-mode.texi -octave-mode.html: $(octave_mode_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/octave-mode.texi - -org_deps = ${srcdir}/org.texi ${gfdl} -org : $(buildinfodir)/org.info -$(buildinfodir)/org.info: $(org_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/org.texi -org.dvi: $(org_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi -org.pdf: $(org_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/org.texi -org.html: $(org_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/org.texi - -pcl_cvs_deps = ${srcdir}/pcl-cvs.texi ${gfdl} -pcl-cvs : $(buildinfodir)/pcl-cvs.info -$(buildinfodir)/pcl-cvs.info: $(pcl_cvs_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/pcl-cvs.texi -pcl-cvs.dvi: $(pcl_cvs_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/pcl-cvs.texi -pcl-cvs.pdf: $(pcl_cvs_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/pcl-cvs.texi -pcl-cvs.html: $(pcl_cvs_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/pcl-cvs.texi - -pgg_deps = ${srcdir}/pgg.texi ${gfdl} -pgg : $(buildinfodir)/pgg.info -$(buildinfodir)/pgg.info: $(pgg_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/pgg.texi -pgg.dvi: $(pgg_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/pgg.texi -pgg.pdf: $(pgg_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/pgg.texi -pgg.html: $(pgg_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/pgg.texi - -rcirc_deps = ${srcdir}/rcirc.texi ${gfdl} -rcirc : $(buildinfodir)/rcirc.info -$(buildinfodir)/rcirc.info: $(rcirc_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/rcirc.texi -rcirc.dvi: $(rcirc_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/rcirc.texi -rcirc.pdf: $(rcirc_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/rcirc.texi -rcirc.html: $(rcirc_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/rcirc.texi - -reftex_deps = ${srcdir}/reftex.texi $(emacsdir)/emacsver.texi ${gfdl} -reftex : $(buildinfodir)/reftex.info -$(buildinfodir)/reftex.info: $(reftex_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/reftex.texi -reftex.dvi: $(reftex_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/reftex.texi -reftex.pdf: $(reftex_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/reftex.texi -reftex.html: $(reftex_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/reftex.texi - -remember_deps = ${srcdir}/remember.texi ${gfdl} -remember : $(buildinfodir)/remember.info -$(buildinfodir)/remember.info: $(remember_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/remember.texi -remember.dvi: $(remember_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/remember.texi -remember.pdf: $(remember_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/remember.texi -remember.html: $(remember_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/remember.texi - -sasl_deps = ${srcdir}/sasl.texi ${gfdl} -sasl : $(buildinfodir)/sasl.info -$(buildinfodir)/sasl.info: $(sasl_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/sasl.texi -sasl.dvi: $(sasl_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/sasl.texi -sasl.pdf: $(sasl_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/sasl.texi -sasl.html: $(sasl_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/sasl.texi - -sc_deps = ${srcdir}/sc.texi ${gfdl} -sc : $(buildinfodir)/sc.info -$(buildinfodir)/sc.info: $(sc_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/sc.texi -sc.dvi: $(sc_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/sc.texi -sc.pdf: $(sc_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/sc.texi -sc.html: $(sc_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/sc.texi - -semantic_deps = ${srcdir}/semantic.texi ${srcdir}/sem-user.texi ${gfdl} -semantic : $(buildinfodir)/semantic.info -$(buildinfodir)/semantic.info: $(semantic_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/semantic.texi -semantic.dvi: $(semantic_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/semantic.texi -semantic.pdf: $(semantic_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/semantic.texi -semantic.html: $(semantic_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/semantic.texi - -ses_deps = ${srcdir}/ses.texi ${gfdl} -ses : $(buildinfodir)/ses.info -$(buildinfodir)/ses.info: $(ses_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ses.texi -ses.dvi: $(ses_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/ses.texi -ses.pdf: $(ses_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/ses.texi -ses.html: $(ses_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ses.texi - -sieve_deps = ${srcdir}/sieve.texi ${gfdl} -sieve : $(buildinfodir)/sieve.info -$(buildinfodir)/sieve.info: $(sieve_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/sieve.texi -sieve.dvi: $(sieve_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/sieve.texi -sieve.pdf: $(sieve_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/sieve.texi -sieve.html: $(sieve_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/sieve.texi - -smtpmail_deps = ${srcdir}/smtpmail.texi ${gfdl} -smtpmail : $(buildinfodir)/smtpmail.info -$(buildinfodir)/smtpmail.info: $(smtpmail_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/smtpmail.texi -smtpmail.dvi: $(smtpmail_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/smtpmail.texi -smtpmail.pdf: $(smtpmail_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/smtpmail.texi -smtpmail.html: $(smtpmail_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/smtpmail.texi - -speedbar_deps = ${srcdir}/speedbar.texi ${gfdl} -speedbar : $(buildinfodir)/speedbar.info -$(buildinfodir)/speedbar.info: $(speedbar_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/speedbar.texi -speedbar.dvi: $(speedbar_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/speedbar.texi -speedbar.pdf: $(speedbar_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/speedbar.texi -speedbar.html: $(speedbar_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/speedbar.texi - -srecode_deps = ${srcdir}/srecode.texi ${gfdl} -srecode : $(buildinfodir)/srecode.info -$(buildinfodir)/srecode.info: $(srecode_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/srecode.texi -srecode.dvi: $(srecode_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/srecode.texi -srecode.pdf: $(srecode_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/srecode.texi -srecode.html: $(srecode_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/srecode.texi - -todo_mode_deps = ${srcdir}/todo-mode.texi ${gfdl} -todo-mode : $(buildinfodir)/todo-mode.info -$(buildinfodir)/todo-mode.info: $(todo_mode_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/todo-mode.texi -todo-mode.dvi: $(todo_mode_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/todo-mode.texi -todo-mode.pdf: $(todo_mode_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/todo-mode.texi -todo-mode.html: $(todo_mode_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/todo-mode.texi - -tramp_deps = ${srcdir}/tramp.texi ${srcdir}/trampver.texi ${gfdl} -tramp : $(buildinfodir)/tramp.info -$(buildinfodir)/tramp.info: $(tramp_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ -D emacs ${srcdir}/tramp.texi -tramp.dvi: $(tramp_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/tramp.texi -tramp.pdf: $(tramp_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/tramp.texi -tramp.html: $(tramp_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ -D emacs ${srcdir}/tramp.texi - -url_deps = ${srcdir}/url.texi ${gfdl} -url : $(buildinfodir)/url.info -$(buildinfodir)/url.info: $(url_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/url.texi -url.dvi: $(url_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi -url.pdf: $(url_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/url.texi -url.html: $(url_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/url.texi - -vhdl_mode_deps = ${srcdir}/vhdl-mode.texi ${gfdl} -vhdl-mode : $(buildinfodir)/vhdl-mode.info -$(buildinfodir)/vhdl-mode.info: $(vhdl_mode_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/vhdl-mode.texi -vhdl-mode.dvi: $(vhdl_mode_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/vhdl-mode.texi -vhdl-mode.pdf: $(vhdl_mode_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/vhdl-mode.texi -vhdl-mode.html: $(vhdl_mode_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/vhdl-mode.texi - -vip_deps = ${srcdir}/vip.texi ${gfdl} -vip : $(buildinfodir)/vip.info -$(buildinfodir)/vip.info: $(vip_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/vip.texi -vip.dvi: $(vip_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/vip.texi -vip.pdf: $(vip_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/vip.texi -vip.html: $(vip_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/vip.texi - -viper_deps = ${srcdir}/viper.texi ${gfdl} -viper : $(buildinfodir)/viper.info -$(buildinfodir)/viper.info: $(viper_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/viper.texi -viper.dvi: $(viper_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/viper.texi -viper.pdf: $(viper_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/viper.texi -viper.html: $(viper_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/viper.texi - -widget_deps = ${srcdir}/wisent.texi ${gfdl} -widget : $(buildinfodir)/widget.info -$(buildinfodir)/widget.info: $(widget_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/widget.texi -widget.dvi: $(widget_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/widget.texi -widget.pdf: $(widget_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/widget.texi -widget.html: $(widget_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/widget.texi - -wisent_deps = ${srcdir}/wisent.texi ${gfdl} -wisent : $(buildinfodir)/wisent.info -$(buildinfodir)/wisent.info: $(wisent_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/wisent.texi -wisent.dvi: $(wisent_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/wisent.texi -wisent.pdf: $(wisent_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/wisent.texi -wisent.html: $(wisent_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/wisent.texi - -woman_deps = ${srcdir}/woman.texi $(emacsdir)/emacsver.texi ${gfdl} -woman : $(buildinfodir)/woman.info -$(buildinfodir)/woman.info: $(woman_deps) - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/woman.texi -woman.dvi: $(woman_deps) - $(ENVADD) $(TEXI2DVI) ${srcdir}/woman.texi -woman.pdf: $(woman_deps) - $(ENVADD) $(TEXI2PDF) ${srcdir}/woman.texi -woman.html: $(woman_deps) - $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/woman.texi + sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmppdf.texi + $(ENVADD) $(TEXI2PDF) gnustmppdf.texi + cp gnustmppdf.pdf $@ + rm gnustmppdf.* + +${buildinfodir}/tramp.info tramp.html: EXTRA_OPTS = -D emacs +${buildinfodir}/tramp.info tramp.html: ${srcdir}/trampver.texi + .PHONY: mostlyclean clean distclean maintainer-clean @@ -869,7 +215,7 @@ rm -f *.aux *.log *.toc *.c[mp] *.c[mp]s *.fn *.fns \ *.ky *.kys *.op *.ops *.p[gj] *.p[gj]s *.sc *.scs *.ss \ *.t[gp] *.t[gp]s *.vr *.vrs - rm -f gnustmp.* + rm -f gnustmp* clean: mostlyclean rm -f $(DVI_TARGETS) $(HTML_TARGETS) $(PDF_TARGETS) $(PS_TARGETS) ------------------------------------------------------------ revno: 117311 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2014-06-11 17:51:44 -0400 message: * lisp/rect.el: Make it possible to move bounds past EOL or into TABs. (operate-on-rectangle): Use apply-on-rectangle. (rectangle--mark-crutches): New var. (rectangle--pos-cols, rectangle--col-pos, rectangle--point-col) (rectangle--crutches, rectangle--reset-crutches): New functions. (apply-on-rectangle): Obey crutches. Avoid setq. Fix missing final iteration if end is at EOB&BOL. (rectangle-mark-mode-map): Add remap bindings for exchange-point-and-mark and char/line movements. (rectangle--*-char): New function. (rectangle-exchange-point-and-mark, rectangle-right-char) (rectangle-left-char, rectangle-forward-char) (rectangle-backward-char, rectangle-next-line) (rectangle-previous-line): New commands. (rectangle--place-cursor): New function. (rectangle--highlight-for-redisplay): Use it. Use apply-on-rectangle. diff: === modified file 'etc/NEWS' --- etc/NEWS 2014-06-11 19:34:43 +0000 +++ etc/NEWS 2014-06-11 21:51:44 +0000 @@ -72,6 +72,9 @@ * Changes in Specialized Modes and Packages in Emacs 24.5 +** rectangle-mark-mode can now have corners past EOL or in the middle of a TAB +Also C-x C-x in rectangle-mark-mode now cycles through the four corners. + ** font-lock *** New functions font-lock-ensure and font-lock-flush that should be used instead of font-lock-fontify-buffer when called from Elisp. === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-08 23:41:43 +0000 +++ lisp/ChangeLog 2014-06-11 21:51:44 +0000 @@ -1,3 +1,22 @@ +2014-06-11 Stefan Monnier + + * rect.el: Make it possible to move bounds past EOL or into TABs. + (operate-on-rectangle): Use apply-on-rectangle. + (rectangle--mark-crutches): New var. + (rectangle--pos-cols, rectangle--col-pos, rectangle--point-col) + (rectangle--crutches, rectangle--reset-crutches): New functions. + (apply-on-rectangle): Obey crutches. Avoid setq. + Fix missing final iteration if end is at EOB&BOL. + (rectangle-mark-mode-map): Add remap bindings for + exchange-point-and-mark and char/line movements. + (rectangle--*-char): New function. + (rectangle-exchange-point-and-mark, rectangle-right-char) + (rectangle-left-char, rectangle-forward-char) + (rectangle-backward-char, rectangle-next-line) + (rectangle-previous-line): New commands. + (rectangle--place-cursor): New function. + (rectangle--highlight-for-redisplay): Use it. Use apply-on-rectangle. + 2014-06-08 Glenn Morris * startup.el (initial-buffer-choice): Doc fix. === modified file 'lisp/rect.el' --- lisp/rect.el 2014-01-13 10:55:22 +0000 +++ lisp/rect.el 2014-06-11 21:51:44 +0000 @@ -31,6 +31,8 @@ ;;; Code: +(eval-when-compile (require 'cl-lib)) + ;; FIXME: this function should be replaced by `apply-on-rectangle' (defun operate-on-rectangle (function start end coerce-tabs) "Call FUNCTION for each line of rectangle with corners at START, END. @@ -42,42 +44,95 @@ number of columns that belong to rectangle but are before that position, number of columns that belong to rectangle but are after point. Point is at the end of the segment of this line within the rectangle." - (let (startcol startlinepos endcol endlinepos) - (save-excursion - (goto-char start) - (setq startcol (current-column)) - (beginning-of-line) - (setq startlinepos (point))) - (save-excursion - (goto-char end) - (setq endcol (current-column)) - (forward-line 1) - (setq endlinepos (point-marker))) - (if (< endcol startcol) - (setq startcol (prog1 endcol (setq endcol startcol)))) - (save-excursion - (goto-char startlinepos) - (while (< (point) endlinepos) - (let (startpos begextra endextra) - (if coerce-tabs - (move-to-column startcol t) - (move-to-column startcol)) - (setq begextra (- (current-column) startcol)) - (setq startpos (point)) - (if coerce-tabs - (move-to-column endcol t) - (move-to-column endcol)) - ;; If we overshot, move back one character - ;; so that endextra will be positive. - (if (and (not coerce-tabs) (> (current-column) endcol)) - (backward-char 1)) - (setq endextra (- endcol (current-column))) - (if (< begextra 0) - (setq endextra (+ endextra begextra) - begextra 0)) - (funcall function startpos begextra endextra)) - (forward-line 1))) - (- endcol startcol))) + (apply-on-rectangle + (lambda (startcol endcol) + (let (startpos begextra endextra) + (move-to-column startcol coerce-tabs) + (setq begextra (- (current-column) startcol)) + (setq startpos (point)) + (move-to-column endcol coerce-tabs) + ;; If we overshot, move back one character + ;; so that endextra will be positive. + (if (and (not coerce-tabs) (> (current-column) endcol)) + (backward-char 1)) + (setq endextra (- endcol (current-column))) + (if (< begextra 0) + (setq endextra (+ endextra begextra) + begextra 0)) + (funcall function startpos begextra endextra))) + start end)) + +;;; Crutches to let rectangle's corners be where point can't be +;; (e.g. in the middle of a TAB, or past the EOL). + +(defvar-local rectangle--mark-crutches nil + "(POS . COL) to override the column to use for the mark.") + +(defun rectangle--pos-cols (start end) + ;; At this stage, we don't know which of start/end is point/mark :-( + ;; And in case start=end, it might still be that point and mark have + ;; different crutches! + (let ((cw (window-parameter nil 'rectangle--point-crutches))) + (cond + ((eq start (car cw)) + (let ((sc (cdr cw)) + (ec (if (eq end (car rectangle--mark-crutches)) + (cdr rectangle--mark-crutches) + (if rectangle--mark-crutches + (setq rectangle--mark-crutches nil)) + (goto-char end) (current-column)))) + (if (eq start end) (cons (min sc ec) (max sc ec)) (cons sc ec)))) + ((eq end (car cw)) + (if (eq start (car rectangle--mark-crutches)) + (cons (cdr rectangle--mark-crutches) (cdr cw)) + (if rectangle--mark-crutches (setq rectangle--mark-crutches nil)) + (cons (progn (goto-char start) (current-column)) (cdr cw)))) + ((progn + (if cw (setf (window-parameter nil 'rectangle--point-crutches) nil)) + (eq start (car rectangle--mark-crutches))) + (let ((sc (cdr rectangle--mark-crutches)) + (ec (progn (goto-char end) (current-column)))) + (if (eq start end) (cons (min sc ec) (max sc ec)) (cons sc ec)))) + ((eq end (car rectangle--mark-crutches)) + (cons (progn (goto-char start) (current-column)) + (cdr rectangle--mark-crutches))) + (t + (if rectangle--mark-crutches (setq rectangle--mark-crutches nil)) + (cons (progn (goto-char start) (current-column)) + (progn (goto-char end) (current-column))))))) + +(defun rectangle--col-pos (col kind) + (let ((c (move-to-column col))) + (if (= c col) + (if (eq kind 'point) + (if (window-parameter nil 'rectangle--point-crutches) + (setf (window-parameter nil 'rectangle--point-crutches) nil)) + (if rectangle--mark-crutches (setq rectangle--mark-crutches nil))) + ;; If move-to-column over-shooted, move back one char so we're + ;; at the position where rectangle--highlight-for-redisplay + ;; will add the overlay (so that the cursor can be drawn at the + ;; right place). + (when (> c col) (forward-char -1)) + (setf (if (eq kind 'point) + (window-parameter nil 'rectangle--point-crutches) + rectangle--mark-crutches) + (cons (point) col))))) + +(defun rectangle--point-col (pos) + (let ((pc (window-parameter nil 'rectangle--point-crutches))) + (if (eq pos (car pc)) (cdr pc) + (goto-char pos) + (current-column)))) + +(defun rectangle--crutches () + (cons rectangle--mark-crutches + (window-parameter nil 'rectangle--point-crutches))) +(defun rectangle--reset-crutches () + (kill-local-variable 'rectangle--mark-crutches) + (if (window-parameter nil 'rectangle--point-crutches) + (setf (window-parameter nil 'rectangle--point-crutches) nil))) + +;;; Rectangle operations. (defun apply-on-rectangle (function start end &rest args) "Call FUNCTION for each line of rectangle with corners at START, END. @@ -85,27 +140,27 @@ rectangle, plus ARGS extra arguments. Point is at the beginning of line when the function is called. The final point after the last operation will be returned." - (let (startcol startpt endcol endpt final-point) - (save-excursion - (goto-char start) - (setq startcol (current-column)) - (beginning-of-line) - (setq startpt (point)) - (goto-char end) - (setq endcol (current-column)) - (forward-line 1) - (setq endpt (point-marker)) - ;; ensure the start column is the left one. + (save-excursion + (let* ((cols (rectangle--pos-cols start end)) + (startcol (car cols)) + (endcol (cdr cols)) + (startpt (progn (goto-char start) (line-beginning-position))) + (endpt (progn (goto-char end) + (copy-marker (line-end-position)))) + final-point) + ;; Ensure the start column is the left one. (if (< endcol startcol) (let ((col startcol)) (setq startcol endcol endcol col))) - ;; start looping over lines + ;; Start looping over lines. (goto-char startpt) - (while (< (point) endpt) - (apply function startcol endcol args) - (setq final-point (point)) - (forward-line 1))) - final-point)) + (while + (progn + (apply function startcol endcol args) + (setq final-point (point)) + (and (zerop (forward-line 1)) + (<= (point) endpt)))) + final-point))) (defun delete-rectangle-line (startcol endcol fill) (when (= (move-to-column startcol (if fill t 'coerce)) startcol) @@ -429,8 +484,12 @@ (let ((map (make-sparse-keymap))) (define-key map [?\C-o] 'open-rectangle) (define-key map [?\C-t] 'string-rectangle) - ;; (define-key map [remap open-line] 'open-rectangle) - ;; (define-key map [remap transpose-chars] 'string-rectangle) + (define-key map [remap exchange-point-and-mark] + 'rectangle-exchange-point-and-mark) + (dolist (cmd '(right-char left-char forward-char backward-char + next-line previous-line)) + (define-key map (vector 'remap cmd) + (intern (format "rectangle-%s" cmd)))) map) "Keymap used while marking a rectangular region.") @@ -439,6 +498,7 @@ "Toggle the region as rectangular. Activates the region if needed. Only lasts until the region is deactivated." nil nil nil + (rectangle--reset-crutches) (when rectangle-mark-mode (add-hook 'deactivate-mark-hook (lambda () (rectangle-mark-mode -1))) @@ -447,6 +507,96 @@ (activate-mark) (message "Mark set (rectangle mode)")))) +(defun rectangle-exchange-point-and-mark (&optional arg) + "Like `exchange-point-and-mark' but cycles through the rectangle's corners." + (interactive "P") + (if arg + (progn + (setq this-command 'exchange-point-and-mark) + (exchange-point-and-mark arg)) + (let* ((p (point)) + (repeat (eq this-command last-command)) + (m (mark)) + (p n 0) + (let* ((bol (line-beginning-position)) + (eol (line-end-position)) + (curcol (current-column)) + (nextcol + (condition-case nil + (save-excursion + (funcall cmd 1) + (cond + ((> bol (point)) (- curcol 1)) + ((< eol (point)) (+ col (1+ n))) + (t (current-column)))) + (end-of-buffer (+ col (1+ n))) + (beginning-of-buffer (- curcol 1)))) + (diff (abs (- nextcol col)))) + (cond + ((and (< nextcol curcol) (< curcol col)) + (let ((curdiff (- col curcol))) + (if (<= curdiff n) + (progn (cl-decf n curdiff) (setq col curcol)) + (setq col (- col n) n 0)))) + ((< nextcol 0) (ding) (setq n 0 col 0)) ;Bumping into BOL! + ((= nextcol curcol) (funcall cmd 1)) + (t ;; (> nextcol curcol) + (if (<= diff n) + (progn (cl-decf n diff) (setq col nextcol)) + (setq col (if (< col nextcol) (+ col n) (- col n)) n 0)))))) + ;; FIXME: This rectangle--col-pos's move-to-column is wasted! + (rectangle--col-pos col 'point)))) + +(defun rectangle-right-char (&optional n) + "Like `right-char' but steps into wide chars and moves past EOL." + (interactive "p") (rectangle--*-char #'right-char n #'left-char)) +(defun rectangle-left-char (&optional n) + "Like `left-char' but steps into wide chars and moves past EOL." + (interactive "p") (rectangle--*-char #'left-char n #'right-char)) + +(defun rectangle-forward-char (&optional n) + "Like `forward-char' but steps into wide chars and moves past EOL." + (interactive "p") (rectangle--*-char #'forward-char n #'backward-char)) +(defun rectangle-backward-char (&optional n) + "Like `backward-char' but steps into wide chars and moves past EOL." + (interactive "p") (rectangle--*-char #'backward-char n #'forward-char)) + +(defun rectangle-next-line (&optional n) + "Like `next-line' but steps into wide chars and moves past EOL. +Ignores `line-move-visual'." + (interactive "p") + (let ((col (rectangle--point-col (point)))) + (forward-line n) + (rectangle--col-pos col 'point))) +(defun rectangle-previous-line (&optional n) + "Like `previous-line' but steps into wide chars and moves past EOL. +Ignores `line-move-visual'." + (interactive "p") + (let ((col (rectangle--point-col (point)))) + (forward-line (- n)) + (rectangle--col-pos col 'point))) + + (defun rectangle--extract-region (orig &optional delete) (if (not rectangle-mark-mode) (funcall orig delete) @@ -476,6 +626,11 @@ (while (not (eq pending-undo-list (cdr undo-at-start))) (undo-more 1)))))) +(defun rectangle--place-cursor (leftcol left str) + (let ((pc (window-parameter nil 'rectangle--point-crutches))) + (if (and (eq left (car pc)) (eq leftcol (cdr pc))) + (put-text-property 0 1 'cursor 1 str)))) + (defun rectangle--highlight-for-redisplay (orig start end window rol) (cond ((not rectangle-mark-mode) @@ -483,93 +638,88 @@ ((and (eq 'rectangle (car-safe rol)) (eq (nth 1 rol) (buffer-chars-modified-tick)) (eq start (nth 2 rol)) - (eq end (nth 3 rol))) + (eq end (nth 3 rol)) + (equal (rectangle--crutches) (nth 4 rol))) rol) (t (save-excursion (let* ((nrol nil) (old (if (eq 'rectangle (car-safe rol)) - (nthcdr 4 rol) + (nthcdr 5 rol) (funcall redisplay-unhighlight-region-function rol) - nil)) - (ptcol (progn (goto-char start) (current-column))) - (markcol (progn (goto-char end) (current-column))) - (leftcol (min ptcol markcol)) - (rightcol (max ptcol markcol))) - (goto-char start) - (while - (let* ((mleft (move-to-column leftcol)) - (left (point)) - (mright (move-to-column rightcol)) - (right (point)) - (ol - (if (not old) - (let ((ol (make-overlay left right))) - (overlay-put ol 'window window) - (overlay-put ol 'face 'region) - ol) - (let ((ol (pop old))) - (move-overlay ol left right (current-buffer)) - ol)))) - ;; `move-to-column' may stop before the column (if bumping into - ;; EOL) or overshoot it a little, when column is in the middle - ;; of a char. - (cond - ((< mleft leftcol) ;`leftcol' is past EOL. - (overlay-put ol 'before-string - (spaces-string (- leftcol mleft))) - (setq mright (max mright leftcol))) - ((and (> mleft leftcol) ;`leftcol' is in the middle of a char. - (eq (char-before left) ?\t)) - (setq left (1- left)) - (move-overlay ol left right) - (goto-char left) - (overlay-put ol 'before-string - (spaces-string (- leftcol (current-column))))) - ((overlay-get ol 'before-string) - (overlay-put ol 'before-string nil))) - (cond - ((< mright rightcol) ;`rightcol' is past EOL. - (let ((str (make-string (- rightcol mright) ?\s))) - (put-text-property 0 (length str) 'face 'region str) - ;; If cursor happens to be here, draw it *before* rather than - ;; after this highlighted pseudo-text. - (put-text-property 0 1 'cursor t str) - (overlay-put ol 'after-string str))) - ((and (> mright rightcol) ;`rightcol's in the middle of a char. - (eq (char-before right) ?\t)) - (setq right (1- right)) - (move-overlay ol left right) - (if (= rightcol leftcol) - (overlay-put ol 'after-string nil) - (goto-char right) - (let ((str (make-string - (- rightcol (max leftcol (current-column))) - ?\s))) - (put-text-property 0 (length str) 'face 'region str) - (when (= left right) - ;; If cursor happens to be here, draw it *before* rather - ;; than after this highlighted pseudo-text. - (put-text-property 0 1 'cursor 1 str)) - (overlay-put ol 'after-string str)))) - ((overlay-get ol 'after-string) - (overlay-put ol 'after-string nil))) - (when (and (= leftcol rightcol) (display-graphic-p)) - ;; Make zero-width rectangles visible! - (overlay-put ol 'after-string - (concat (propertize " " - 'face '(region (:height 0.2))) - (overlay-get ol 'after-string)))) - (push ol nrol) - (and (zerop (forward-line 1)) - (<= (point) end)))) + nil))) + (apply-on-rectangle + (lambda (leftcol rightcol) + (let* ((mleft (move-to-column leftcol)) + (left (point)) + (mright (move-to-column rightcol)) + (right (point)) + (ol + (if (not old) + (let ((ol (make-overlay left right))) + (overlay-put ol 'window window) + (overlay-put ol 'face 'region) + ol) + (let ((ol (pop old))) + (move-overlay ol left right (current-buffer)) + ol)))) + ;; `move-to-column' may stop before the column (if bumping into + ;; EOL) or overshoot it a little, when column is in the middle + ;; of a char. + (cond + ((< mleft leftcol) ;`leftcol' is past EOL. + (overlay-put ol 'before-string + (spaces-string (- leftcol mleft))) + (setq mright (max mright leftcol))) + ((and (> mleft leftcol) ;`leftcol' is in the middle of a char. + (eq (char-before left) ?\t)) + (setq left (1- left)) + (move-overlay ol left right) + (goto-char left) + (overlay-put ol 'before-string + (spaces-string (- leftcol (current-column))))) + ((overlay-get ol 'before-string) + (overlay-put ol 'before-string nil))) + (cond + ((< mright rightcol) ;`rightcol' is past EOL. + (let ((str (make-string (- rightcol mright) ?\s))) + (put-text-property 0 (length str) 'face 'region str) + ;; If cursor happens to be here, draw it at the right place. + (rectangle--place-cursor leftcol left str) + (overlay-put ol 'after-string str))) + ((and (> mright rightcol) ;`rightcol's in the middle of a char. + (eq (char-before right) ?\t)) + (setq right (1- right)) + (move-overlay ol left right) + (if (= rightcol leftcol) + (overlay-put ol 'after-string nil) + (goto-char right) + (let ((str (make-string + (- rightcol (max leftcol (current-column))) + ?\s))) + (put-text-property 0 (length str) 'face 'region str) + (when (= left right) + (rectangle--place-cursor leftcol left str)) + (overlay-put ol 'after-string str)))) + ((overlay-get ol 'after-string) + (overlay-put ol 'after-string nil))) + (when (and (= leftcol rightcol) (display-graphic-p)) + ;; Make zero-width rectangles visible! + (overlay-put ol 'after-string + (concat (propertize " " + 'face '(region (:height 0.2))) + (overlay-get ol 'after-string)))) + (push ol nrol))) + start end) (mapc #'delete-overlay old) - `(rectangle ,(buffer-chars-modified-tick) ,start ,end ,@nrol)))))) + `(rectangle ,(buffer-chars-modified-tick) + ,start ,end ,(rectangle--crutches) + ,@nrol)))))) (defun rectangle--unhighlight-for-redisplay (orig rol) (if (not (eq 'rectangle (car-safe rol))) (funcall orig rol) - (mapc #'delete-overlay (nthcdr 4 rol)) + (mapc #'delete-overlay (nthcdr 5 rol)) (setcar (cdr rol) nil))) (provide 'rect) ------------------------------------------------------------ revno: 117310 committer: Glenn Morris branch nick: trunk timestamp: Wed 2014-06-11 15:34:43 -0400 message: * etc/NEWS: Relocate entry diff: === modified file 'etc/NEWS' --- etc/NEWS 2014-06-11 19:33:14 +0000 +++ etc/NEWS 2014-06-11 19:34:43 +0000 @@ -40,11 +40,6 @@ ** The configure option `--with-pkg-config-prog' has been removed. Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to. ---- -** Building Emacs for MS-Windows requires at least Windows XP -or Windows Server 2003. The built binaries still run on all versions -of Windows starting with Windows 9X. - * Startup Changes in Emacs 24.5 @@ -166,6 +161,11 @@ * Changes in Emacs 24.5 on Non-Free Operating Systems +--- +** Building Emacs for MS-Windows requires at least Windows XP +or Windows Server 2003. The built binaries still run on all versions +of Windows starting with Windows 9X. + * Installation Changes in Emacs 24.4 ------------------------------------------------------------ revno: 117309 [merge] committer: Glenn Morris branch nick: trunk timestamp: Wed 2014-06-11 15:33:14 -0400 message: Merge from emacs-24; up to r117233 diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2014-06-10 02:11:38 +0000 +++ doc/misc/ChangeLog 2014-06-11 19:33:14 +0000 @@ -1,3 +1,7 @@ +2014-06-11 Glenn Morris + + * Makefile.in (INFO_INSTALL): Update for 2013-08-28 DOCMISC_W32 change. + 2014-06-10 Glenn Morris * Makefile.in (INFO_EXT): Remove and replace by ".info" throughout. === modified file 'doc/misc/Makefile.in' --- doc/misc/Makefile.in 2014-06-10 02:11:38 +0000 +++ doc/misc/Makefile.in 2014-06-11 19:33:14 +0000 @@ -72,7 +72,7 @@ url vhdl-mode vip viper widget wisent woman ## Info files to install on current platform. -INFO_INSTALL = $(INFO_COMMON) $(DOCMISC_INFO_W32) +INFO_INSTALL = $(INFO_COMMON) $(DOCMISC_W32) ## Info files to build on current platform. ## This is all of them, even though they might not all get installed, === modified file 'etc/NEWS' --- etc/NEWS 2014-06-11 03:03:40 +0000 +++ etc/NEWS 2014-06-11 19:33:14 +0000 @@ -169,46 +169,38 @@ * Installation Changes in Emacs 24.4 ---- -** Emacs can now be compiled with ACL support. +** Emacs can now be compiled with ACL (access control list) support. This happens by default if a suitable support library is found at build time, like libacl on GNU/Linux. To prevent this, use the -configure option `--disable-acl'. See below for related features. +configure option `--disable-acl'. See below for the features this provides. ---- ** Emacs can now be compiled with file notification support. This happens by default if a suitable system library is found at build time. To prevent this, use the configure option `--without-file-notification'. See below for file-notify features. This feature is not available for the Nextstep port. ---- ** Emacs can now be compiled with zlib support. This happens by default if zlib is present, which it normally is. To prevent this, use the configure option `--without-zlib'. This provides the function `zlib-decompress-region'; see below for details. ---- ** The configure option `--without-compress-info' has been generalized, and renamed to `--without-compress-install'. It now prevents compression of _any_ files during installation. ---- ** The configure option `--with-crt-dir' has been removed. It is no longer needed, as the crt*.o files are no longer linked specially. ---- ** Directories passed to configure option `--enable-locallisppath' are no longer created during installation. ---- -** Emacs for NS (Mac OS X, GNUstep) can be built with ImageMagick support. +** Emacs for Nextstep (Mac OS X, GNUstep) can be built with ImageMagick support. This requires pkg-config to be available at build time. * Startup Changes in Emacs 24.4 -+++ ** When initializing `load-path', an empty element in the EMACSLOADPATH environment variable (either leading, e.g., ":/foo"; trailing, e.g., "/foo:"; or embedded, e.g., "/foo::/bar") is replaced with the default @@ -218,76 +210,57 @@ including the defaults). (In older versions of Emacs, an empty element was replaced by ".", so use an explicit "." now if that is what you want.) -+++ ** The -L option, which normally prepends its argument to load-path, will instead append, if the argument begins with `:' (or `;' on MS Windows; i.e., `path-separator'). -+++ ** If you use either site-load.el or site-init.el to customize the dumped Emacs executable, any changes to `load-path' that these files make will no longer be present after dumping. To affect a permanent change to `load-path', use the `--enable-locallisppath' option of `configure'. -+++ ** The user option `initial-buffer-choice' can now specify a function to set up the initial buffer. * Changes in Emacs 24.4 -+++ -** New function `zlib-decompress-region', which decompresses gzip- and -zlib-format compressed data using built-in zlib support, if available. - -+++ -** New option `gnutls-verify-error', if non-nil, means that Emacs -should reject SSL/TLS certificates that GnuTLS determines as invalid. -(This option defaults to nil at present, but this is expected to change -in a future release.) - -+++ -** Emacs now supports menus on text-mode terminals. +** Support for ACLs (access control lists). +This requires a suitable support library to be found at build time. +On GNU/Linux, the POSIX ACL interface is used via libacl. +On MS-Windows, the NT Security APIs are used to emulate the POSIX interface. +ACLs are extended file attributes, used e.g. for finer-grained permissions. + +*** Emacs preserves the ACL entries of files when backing up. + +*** New functions `file-acl' and `set-file-acl' get and set file ACLs. + +** Support for menus on text-mode terminals. If the terminal supports a mouse, clicking on the menu bar, or on sensitive portions of the mode line or header line, will drop down the -menu defined at that position. Likewise, clicking C-mouse-2 or -C-mouse-2 or C-mouse-3 on the text area will pop up the menus defined -for those locations. +menu defined at that position. Likewise, clicking C-mouse-1, C-mouse-2, or +C-mouse-3 on the text area will pop up the menus defined for those locations. If the text terminal does not support a mouse, you can activate the first menu-bar menu by typing F10, which invokes `menu-bar-open'. -If you want the previous behavior, whereby F10 invoked `tmm-menubar', +If you want the previous behavior, where F10 invoked `tmm-menubar', customize the option `tty-menu-open-use-tmm' to a non-nil value. (Typing M-` always invokes `tmm-menubar', even if `tty-menu-open-use-tmm' is nil.) -+++ -** The *Messages* buffer is created in `messages-buffer-mode', -a new major mode, with read-only status. Any code that might create -the *Messages* buffer should call the function `messages-buffer' to do -so and set up the mode. - -+++ -** Emacs can now support ACLs (access control lists). -This requires a suitable support library to be found at build time. -On GNU/Linux, the POSIX ACL interface is used via libacl. -On MS-Windows, the NT Security APIs are used to emulate the POSIX interface. - -+++ -*** Emacs preserves the ACL entries of files when backing up. -+++ -*** New functions `file-acl' and `set-file-acl' get and set the ACL -entries of a file. - -** Multi-monitor support has been added. - -+++ +** New option `load-prefer-newer' affects how the `load' function chooses +the file to load. If this is non-nil, then when both .el and .elc +versions of a file exist, and the caller did not explicitly specify +which one to load, then the newer file is loaded. The default, nil, +means to always load the .elc file. + +** Multi-monitor support + *** New functions `display-monitor-attributes-list' and `frame-monitor-attributes' can be used to obtain information about each physical monitor on multi-monitor setups. -+++ *** The functions `display-pixel-width' and `display-pixel-height' now behave consistently among the platforms: they return the pixel width or height for all physical monitors associated with the given display @@ -296,31 +269,33 @@ `x-display-pixel-width', `x-display-pixel-height', `display-mm-width', `display-mm-height', `x-display-mm-width', and `x-display-mm-height'. -+++ -** The cursor stops blinking after 10 blinks (by default) on X and NS. +** New function `zlib-decompress-region', which decompresses gzip- and +zlib-format compressed data using built-in zlib support (if available). + +** The *Messages* buffer is created in `messages-buffer-mode', +a new major mode, with read-only status. Any code that might create +the *Messages* buffer should call the function `messages-buffer' to do +so and set up the mode. + +** The cursor stops blinking after 10 blinks (by default) on X and Nextstep. You can change the default by customizing `blink-cursor-blinks'. -+++ ** In keymaps where SPC scrolls forward, S-SPC now scrolls backward. This affects View mode, etc. -+++ ** The default value of `make-backup-file-name-function' is no longer nil. Instead it defaults to a function that does what the nil value used to. -** Help changes +** Help -+++ *** The command `apropos-variable' is renamed to `apropos-user-option'. -`apropos-user-option' shows all user options while `apropos-variable' +`apropos-user-option' shows all user options, while `apropos-variable' shows all variables. When called with a universal prefix argument, the two commands swap their behaviors. When `apropos-do-all' is non-nil, they output the same results. -+++ *** The key `?' now describes prefix bindings, like `C-h'. ---- *** The command `describe-function' has been extended for EIEIO. Running it on constructors will show a full description of the generated class. For generic functions, it will show all @@ -328,16 +303,13 @@ `describe-class', `describe-constructor' and `describe-generic' were removed. ---- *** The function `quail-help' is no longer an interactive command. Use `C-h C-\' (`describe-input-method') instead. ** ImageMagick -+++ *** ImageMagick images now support the :max-width and :max-height keywords. -+++ *** When using `create-image' with image data, you can pass a :format attribute (via the property-list argument) in order to help ImageMagick detect the image type. The value should be a MIME @@ -345,21 +317,16 @@ ** Frame and window changes -+++ -*** The function `window-in-direction' introduced in Emacs 24.1 now -takes additional arguments for specifying a reference point, wrapping -selection around frame borders, and specifying ways to select the -minibuffer window. - -+++ *** New commands `toggle-frame-fullscreen' and `toggle-frame-maximized', bound to and M-, respectively. -+++ *** New hooks `focus-in-hook', `focus-out-hook'. These are normal hooks run when an Emacs frame gains or loses input focus. -+++ +*** The function `window-in-direction' now takes additional arguments +for specifying a reference point, wrapping the selection around frame +borders, and specifying ways to select the minibuffer window. + *** Emacs can now change frame sizes in units of pixels, rather than text rows or columns. When maximizing a frame or making it fullscreen, remaining extra pixels are no longer given to the minibuffer, the rightmost @@ -368,7 +335,6 @@ is non-nil, all frame size changes happen pixelwise and set the corresponding size hints for the window manager. -+++ *** Emacs can now change window sizes in units of pixels. Mouse-dragging a mode line or window divider now changes the size of adjacent windows pixelwise. If the new option `window-resize-pixelwise' @@ -377,12 +343,10 @@ window sizes now have an additional argument that allows changes to apply, or values to be returned, in pixels instead of lines/columns. -+++ *** The functions `window-body-height' and `window-body-width' now never count partially visible lines or columns if called with a nil PIXELWISE argument. -+++ *** Emacs can now draw dividers between adjacent windows. To put dividers between side-by-side/vertically stacked windows customize the frame parameters `right-divider-width' and `bottom-divider-width' to @@ -393,83 +357,67 @@ two are useful to provide a 3D effect, or to better distinguish dividers from surrounding display objects. -+++ -*** New functions are provided to return the pixel sizes of window -components, namely `window-scroll-bar-width', `window-mode-line-height' -`window-header-line-height', `window-right-divider-width' and +*** New functions to return the pixel sizes of window components, namely +`window-scroll-bar-width', `window-mode-line-height', +`window-header-line-height', `window-right-divider-width', and `window-bottom-divider-width'. -+++ *** The new function `window-text-pixel-size' returns the size of the text of a window's buffer in pixels. This allows functions like `fit-frame-to-buffer' and `fit-window-to-buffer' to accurately fit a window to its buffer as it will be displayed. -+++ *** `fit-window-to-buffer' can now resize windows in both dimensions. This behavior is controlled by the new option `fit-window-to-buffer-horizontally'. The new option -`fit-frame-to-buffer' allows to fit the window's frame to its buffer. +`fit-frame-to-buffer' allows you to fit the window's frame to its buffer. -+++ *** `fit-frame-to-buffer' now fits frames in both dimensions. The new options `fit-frame-to-buffer-margins' and `fit-frame-to-buffer-sizes' control the size of the frame and its position on screen. ---- -*** Temp Buffer Resize Mode can now adjust height and width of windows -and frames. `temp-buffer-resize-mode' is now able to adjust the height -and the width of a window displaying a temporary buffer. The new option -`temp-buffer-max-width' allows to control the width of temporary buffer -windows. Moreover, if the new option `fit-frame-to-buffer' is non-nil -and the buffer appears in the root window of a frame, Temp Buffer Resize -Mode will try to adjust width and/or height of the frame. +*** Temp Buffer Resize Mode can now adjust the height and width of +windows and frames. The new option `temp-buffer-max-width' allows you to +control the width of temporary buffer windows. Moreover, if the new +option `fit-frame-to-buffer' is non-nil and the buffer appears in the +root window of a frame, Temp Buffer Resize Mode will try to adjust the +width and/or height of the frame. ---- *** `split-window' is now a non-interactive function, not a command. As a command, it was a special case of `C-x 2' (`split-window-below'), and as such superfluous. After being reimplemented in Lisp, its interactive form was mistakenly retained. -+++ *** The functions `window-size' and `window-total-size' now have an optional argument to return a rounded size value. -+++ -*** `window-state-put' now allows to put a window state into internal +*** `window-state-put' now allows you to put a window state into internal windows too. -+++ *** New option `scroll-bar-adjust-thumb-portion'. -Available only on X, this option allows to control over-scrolling -using the scroll bar (i.e. dragging the thumb down even when the end +Available only on X, this option allows you to control over-scrolling +using the scroll bar (i.e., dragging the thumb down even when the end of the buffer is visible). -+++ -*** New basic action function `display-buffer-in-previous-window' has -`display-buffer' display a buffer in a window previously showing that -buffer. - -+++ -*** New basic action function `display-buffer-at-bottom' has -`display-buffer' choose or make a window at the bottom of the selected -frame. - -+++ -*** New display action function `display-buffer-no-window' to not -display the buffer in a window. - -+++ +*** New display actions functions for `display-buffer': + +**** `display-buffer-in-previous-window' displays a buffer in a window +previously showing that buffer. + +**** `display-buffer-at-bottom' chooses or creates a window at the +bottom of the selected frame. + +**** `display-buffer-no-window' to not display the buffer in a window. + *** New display action alist entry `allow-no-window' to indicate the -caller of `display-buffer' is ready to handle the case of not -displaying the buffer in a window. +caller of `display-buffer' is ready to handle the case of not displaying +the buffer in a window. ** Lisp evaluation changes -+++ + *** `eval-defun' on an already defined defcustom calls the :set function, if there is one. -+++ *** The commands `eval-expression' (`M-:'), `eval-last-sexp' (`C-x C-e'), and `eval-print-last-sexp' (`C-j' in Lisp Interaction mode) can take a zero prefix argument. This disables truncation of lists in the output, @@ -477,214 +425,150 @@ `(eval-expression-)print-level' to nil. Additionally, it causes integers to be printed in other formats (octal, hexadecimal, and character). ---- *** New hook `eval-expression-minibuffer-setup-hook' run by `eval-expression' on entering the minibuffer. ---- -** `write-region-inhibit-fsync' now defaults to t in batch mode. - -+++ ** `cache-long-line-scans' is now non-nil, and renamed to `cache-long-scans', because it affects caching of paragraph scanning results as well. There is no reason to set this to nil except for debugging purposes. ---- +** `emacs-bzr-version' has been renamed to `emacs-repository-version', +and works for git too, if you fetch the repository notes. + +** The default value of `comment-use-global-state' is now t, +and this variable has been marked obsolete. + +** `write-region-inhibit-fsync' now defaults to t in batch mode. + ** The option `set-mark-default-inactive' has been deleted. This unfinished feature was introduced by accident in Emacs 23.1; simply disabling Transient Mark mode does the same thing. ---- -** The default value of `comment-use-global-state' is now t, -and this variable has been marked obsolete. - ---- -** `emacs-bzr-version' has been renamed to `emacs-repository-version', -and works for git too, if you fetch the repository notes. - -+++ -** New option `load-prefer-newer' affects how the `load' function chooses -the file to load. If this is non-nil, then when both .el and .elc -versions of a file exist, and the caller did not explicitly specify -which one to load, then the newer file is loaded. The default, nil, -means to always load the .elc file. - * Editing Changes in Emacs 24.4 ** Indentation changes -+++ *** `electric-indent-mode' is now enabled by default. Typing RET reindents the current line and indents the new line. `C-j' inserts a newline but does not indent. In some programming modes, additional characters are electric (eg `{'). -+++ *** New buffer-local `electric-indent-local-mode'. -+++ *** The behavior of `C-x TAB' (`indent-rigidly') has changed. When invoked without a prefix argument, it now activates a transient mode in which typing , , , and adjusts the text indentation in the region. Typing any other key resumes normal editing behavior. -+++ *** `tab-stop-list' is now implicitly extended to infinity by repeating the last step. Its default value is changed to nil, which means a tab stop every `tab-width' columns. -+++ -** New command `cycle-spacing' acts like a smarter `just-one-space'. -When called in succession, it cycles between spacing conventions: -one space, no spaces, original spacing. - -+++ -** The new function `fill-single-char-nobreak-p' can stop fill from breaking -a line after a one-letter word, which is an error in some typographical -conventions. To use it, add it to the `fill-nobreak-predicate' hook. - -+++ ** Uniquify is enabled by default, with `post-forward-angle-brackets' style. In other words, if you visit two files that have the same base name, then rather than creating buffers basename and basename<2>, Emacs uses basename and basename. To change this, customize `uniquify-buffer-name-style'. Set it to nil for the old behavior. -+++ ** New command `C-x SPC' (`rectangle-mark-mode') makes a rectangular region. Most commands are still unaware of it, but kill/yank do work on the rectangle. -+++ ** New option `visual-order-cursor-movement'. If this is non-nil, cursor motion with arrow keys will follow the visual order of characters on the screen: always moves to the left, always moves to the right, disregarding the surrounding bidirectional context. -** Register changes - -+++ +** New command `delete-duplicate-lines'. +This searches the region for identical lines, and removes all but one +copy of each repeated line. The lines need not be sorted. + +** New command `cycle-spacing' acts like a smarter `just-one-space'. +When called in succession, it cycles between spacing conventions: +one space, no spaces, original spacing. + +** `blink-matching-paren' now only highlights the matching open-paren +by default, instead of moving the cursor. Set this variable to `jump' to +restore the old behavior. + +** The new function `fill-single-char-nobreak-p' can stop fill from breaking +a line after a one-letter word, which is an error in some typographical +conventions. To use it, add it to the `fill-nobreak-predicate' hook. + +** Registers + *** All interactive commands that read a register (`copy-to-register', etc.) now display a temporary window after `register-preview-delay' seconds that summarizes existing registers. To disable this, set that option to nil. Interactive commands that read registers and want to make use of this should use `register-read-with-preview' to read register names. -+++ *** New command `frameset-to-register' bound to `C-x r f', replacing `frame-configuration-to-register'. It offers similar functionality, plus enhancements like the ability to restore deleted frames. (`frame-configuration-to-register' still exists, but no longer has a key binding.) -+++ *** New command `C-x C-k x' (`kmacro-to-register') stores keyboard macros in registers. -+++ -** New command `delete-duplicate-lines'. -This searches the region for identical lines, and removes all but one -copy of each repeated line. The lines need not be sorted. - -+++ -** `blink-matching-paren' now only highlights the matching open-paren -by default, instead of moving cursor. Set this variable to `jump' to -enable the old behavior. - * Changes in Specialized Modes and Packages in Emacs 24.4 -+++ -** More packages look for ~/.emacs.d/ additionally to ~/.. -Affected files: -~/.emacs.d/timelog replaces ~/.timelog -~/.emacs.d/vip replaces ~/.vip -~/.emacs.d/viper replaces ~/.viper -~/.emacs.d/ido.last replaces ~/.ido.last -~/.emacs.d/kkcrc replaces ~/.kkcrc -~/.emacs.d/quickurls replaces ~/.quickurls -~/.emacs.d/idlwave/ replaces ~/.idlwave/ -~/.emacs.d/bdfcache.el replaces ~/.bdfcache.el -~/.emacs.d/places replaces ~/.emacs-places -~/.emacs.d/shadows replaces ~/.shadows -~/.emacs.d/shadow_todo replaces ~/.shadow_todo -~/.emacs.d/strokes replaces ~/.strokes -~/.emacs.d/notes replaces ~/.notes -~/.emacs.d/type-break replaces ~/.type-break -Also the following files used by the now obsolete otodo-mode.el: -~/.emacs.d/todo-do replaces ~/.todo-do -~/.emacs.d/todo-done replaces ~/.todo-done -~/.emacs.d/todo-top replaces ~/.todo-top - ** Backtrace and debugger -+++ *** New Lisp debugger command `v' (`debugger-toggle-locals') toggles the display of local variables of the current stack frame. -+++ *** The Lisp debugger's `e' command (`debugger-eval-expression') now includes the lexical environment when evaluating the code in the context at point (and so allows you to access lexical variables). ---- *** New minor mode `jit-lock-debug-mode' helps you debug code run via JIT Lock. ---- ** Battery information can now be retrieved from BSD's `apm' utility. ---- ** In the Buffer Menu, `M-s a C-o' shows matches for a regexp in marked buffers. -** Calendar and Diary - ---- -*** New faces `calendar-weekday-header', `calendar-weekend-header', -and `calendar-month-header'. - -+++ -*** New option `calendar-day-header-array'. - -+++ -*** New variable `diary-from-outlook-function', used by the command -`diary-from-outlook'. - ---- -*** The variable `calendar-font-lock-keywords' is obsolete. - ** Calc -+++ *** Calc by default now uses the Gregorian calendar for all dates, and uses January 1, 1 AD as its day number 1. Previously Calc used the Julian calendar for dates before September 14, 1752, and it used December 31, 1 BC as its day number 1; the new scheme is more consistent with Calendar's calendrical system and day numbering. -+++ *** The new option `calc-gregorian-switch' lets you configure if (and when) Calc switches from the Julian to the Gregorian calendar. -+++ *** Support for ISO 8601 dates. +** Calendar and Diary + +*** New faces `calendar-weekday-header', `calendar-weekend-header', +and `calendar-month-header'. + +*** New option `calendar-day-header-array'. + +*** New variable `diary-from-outlook-function', used by the command +`diary-from-outlook'. + +*** The variable `calendar-font-lock-keywords' is obsolete. + ** CEDET *** EDE -+++ **** The cpp-root project now supports executing a compile command. It can be set through the new :compile-command slot or the buffer-local variable `compile-command'. -+++ **** Better selection of include directories for the 'linux' project. Include directories now support out-of-tree build directories and target architecture auto-detection. ---- *** Semantic **** Improved detection of used namespaces in current scope in C++. @@ -700,119 +584,97 @@ **** Support for 'this' pointer in inline member functions in C++. +** CFEngine mode + +*** Support for completion, ElDoc, and Flycheck has been added. + +*** The current CFEngine syntax is parsed from "cf-promises -s json". +There is a fallback syntax available if you don't have cf-promises or +if your version doesn't support that option. See option `cfengine-cf-promises'. + ** cl-lib -+++ *** New macro `cl-tagbody'. This executes statements while allowing for control transfer to labels. -+++ *** letf is now just an alias for cl-letf. ** CUA mode -+++ *** CUA mode now uses `delete-selection-mode' and `shift-select-mode'. Hence, you can now enable it independently from those modes, and from `transient-mark-mode'. ---- *** `cua-highlight-region-shift-only' is now obsolete. You can disable `transient-mark-mode' to get the same result. -+++ *** CUA's rectangles can now be used without CUA by calling the command `cua-rectangle-mark-mode'. -** CFEngine mode - ---- -*** Support for completion, ElDoc, and Flycheck has been added. - ---- -*** The current CFEngine syntax is parsed from "cf-promises -s json". -There is a fallback syntax available if you don't have cf-promises or -if your version doesn't support that option. See option `cfengine-cf-promises'. - ---- ** Delete Selection mode can now be used without Transient Mark mode. ** Desktop -+++ *** `desktop-save-mode' by default now auto-saves an existing desktop file after `desktop-auto-save-timeout'. To disable this, customize that option to nil (or zero). -+++ *** Desktop now saves and restores the frame/window configuration. To disable this, set `desktop-restore-frames' to nil. See also related options `desktop-restore-reuses-frames', `desktop-restore-in-current-display', and `desktop-restore-forces-onscreen'. -+++ ** New Dired minor mode `dired-hide-details-mode' toggles whether details, such as file ownership or permissions, are visible in Dired buffers. See the new options `dired-hide-details-hide-symlink-targets' and `dired-hide-details-hide-information-lines' for customizing what to hide. ---- ** You can enable ElDoc inside the `eval-expression' minibuffer with: (add-hook 'eval-expression-minibuffer-setup-hook 'eldoc-mode) The results display in the mode line. ** Electric Pair mode -+++ *** New option `electric-pair-preserve-balance', enabled by default. If non-nil, pairing/skipping only kicks in when that help the balance -of parentheses and quotes, i.e. the buffer should end up at least as +of parentheses and quotes; i.e., the buffer should end up at least as balanced as before. You can further control this behavior by adjusting the predicates stored in `electric-pair-inhibit-predicate' and `electric-pair-skip-self'. -+++ *** New option `electric-pair-delete-adjacent-pairs', enabled by default. In `electric-pair-mode', the commands `backward-delete-char' and `backward-delete-char-untabify' are now bound to electric variants that delete the closer when invoked between adjacent pairs. -+++ *** New option `electric-pair-open-newline-between-pairs', enabled by default. In `electric-pair-mode', inserting a newline between adjacent pairs opens an extra newline after point, which is indented if `electric-indent-mode' is also set. -+++ *** New option `electric-pair-skip-whitespace', enabled by default. This controls if skipping over closing delimiters should jump over any whitespace slack. Setting it to `chomp' makes it delete this whitespace. See also the variable `electric-pair-skip-whitespace-chars'. ---- *** New variables control the pairing in strings and comments. You can customize `electric-pair-text-pairs' and `electric-pair-text-syntax-table' to tweak pairing behavior inside strings and comments. -+++ ** New EPA option `epa-mail-aliases'. You can set this to a list of email address aliases that `epa-mail-encrypt' should use to find keys. ---- ** New ERC option `erc-accidental-paste-threshold-seconds'. If set to a number, this can be used to avoid accidentally pasting large amounts of data into the ERC input. -+++ ** New ERT macro `skip-unless' allows skipping ERT tests. -See the ERT manual for details. ** Eshell -+++ *** `eshell' now supports visual subcommands and options. Eshell has been able to handle "visual" commands (interactive, non-line oriented commands such as top that require display @@ -822,121 +684,100 @@ This feature has been extended to subcommands and options that make a usually line-oriented command a visual command. Typical examples are "git log" and "git --help", which display their output in a -pager by default. See `eshell-visual-subcommands' and -`eshell-visual-options'. +pager by default. See `eshell-visual-subcommands' and `eshell-visual-options'. ---- *** New Eshell-Tramp module. External su and sudo commands are now the default; the internal, -Tramp-using variants can still be used by enabling the eshell-tramp -module. +Tramp-using variants can still be used by enabling the eshell-tramp module. ---- ** New F90 mode option `f90-smart-end-names'. +** New option `gnutls-verify-error', if non-nil, means that Emacs +should reject SSL/TLS certificates that GnuTLS determines as invalid. +(This option defaults to nil at present, but this is expected to change +in a future release.) + +** Hi-Lock + +*** New global command `M-s h .' (`highlight-symbol-at-point') highlights +the symbol near point. + +*** New option `hi-lock-auto-select-face'. When non-nil, hi-lock commands +will cycle through faces in `hi-lock-face-defaults' without prompting. + ** Icomplete Icomplete is now more similar to Ido. ---- *** Icomplete by default now applies to all forms of minibuffer completion. The variable `icomplete-with-completion-tables' (now a user option) controls this. To restore the old behavior, set it back to '(internal-complete-buffer). -+++ *** You can navigate through and select completions using the keys from `icomplete-minibuffer-map'. ---- *** The string that separates potential completions is now a customizable option (`icomplete-separator'). The default is " | " rather than ",". ---- *** New face `icomplete-first-match'; and new options `icomplete-hide-common-prefix' and `icomplete-show-matches-on-no-input'. ---- *** The option `icomplete-show-key-bindings' has been removed. ** Ido -+++ *** An Ido user manual is now included. ---- *** The option `ido-use-virtual-buffers' can now take the value `auto'. This means to use virtual buffers if the current ido input does not match an existing buffer. ---- *** The variable `ido-decorations' can optionally have two new elements, which are the brackets to use around the sole remaining completion. ** Image mode -+++ *** New commands `n' (`image-next-file') and `p' (`image-previous-file') visit the next image file and the previous image file in the same directory, respectively. -+++ *** New commands to show specific frames of multi-frame images. `f' (`image-next-frame') and `b' (`image-previous-frame') visit the next or previous frame. `F' (`image-goto-frame') shows a specific frame. -+++ *** New commands to speed up, slow down, or reverse animation. `a +' (`image-increase-speed') and `a -' (`image-decrease-speed') to speed up and slow down the animation. `a r' (`image-reverse-speed') to reverse it and `a 0' (`image-reset-speed') to reset it. ---- *** The command `image-mode-fit-frame' deletes other windows. When toggling, it restores the frame's previous window configuration. It also has an optional frame argument, which can be used by Lisp callers to fit the image to a frame other than the selected frame. -** Hi-Lock - -+++ -*** New global command `M-s h .' (`highlight-symbol-at-point') highlights -the symbol found near point. - -+++ -*** New option `hi-lock-auto-select-face'. When non-nil, hi-lock commands -will cycle through faces in `hi-lock-face-defaults' without prompting. - ---- ** New Imenu option `imenu-generic-skip-comments-and-strings'. ** Info ---- *** New Info face `info-index-match', used to highlight matches in index entries displayed by `Info-index-next', `Info-virtual-index' and `info-apropos'. ---- *** The Info-edit command is obsolete. Editing Info nodes by hand has not been relevant for some time. ** JS Mode ---- *** New option `js-switch-indent-offset'. ---- *** Better indentation of multiple-variable declarations. If a declaration spans several lines, variables on the following lines are lined up to the first one. ---- *** Recognition and better indentation of continuations in array comprehensions. -+++ ** MH-E has been updated to version 8.5 - see separate MH-E-NEWS file. -+++ ** Octave mode *** Font locking for Texinfo comments and new keywords. @@ -949,67 +790,53 @@ *** Documentation lookup/search. -+++ ** OPascal mode is the new name for Delphi mode ---- *** All delphi-* variables and functions have been renamed to opascal-*. Obsolete aliases exist for those likely to have been used externally. ---- *** The option `delphi-newline-always-indents' has been removed. Use `electric-indent-mode' instead. ---- *** The TAB key runs the standard `indent-for-tab-command', not `delphi-tab'. ** Package -+++ *** The package library now supports digital signing of packages. Maintainers of package archives should consider signing their packages to enhance security. -+++ **** If the user option `package-check-signature' is non-nil, Emacs tries to check package signatures at install time. The value `allow-unsigned' allows installation of unsigned packages. -+++ **** The user option `package-unsigned-archives' lists archives where Emacs will not try to check signatures. -+++ *** New option `package-pinned-packages'. This is useful if you have multiple -archives enabled, with more than one offering a package that you want. +archives enabled, with more than one offering a given package that you want. -+++ *** In the `list-packages' buffer, you can use `f' (`package-menu-filter') to filter the list of packages by a keyword. -+++ *** In the `describe-package' buffer, there are now buttons listing the keywords related to the package. Click on a button to see other packages related to that keyword. ---- *** The format of `archive-contents' files, generated by package repositories, has changed to allow a new (fifth) element in the data vectors, containing an associative list with extra properties. (For example, `describe-package' uses the `:url' extra property to display a "Homepage" header.) ---- ** In Prolog mode, `prolog-use-smie' has been removed, along with the non-SMIE indentation code. ** Remember -+++ *** The new command `remember-notes' creates a buffer that is saved on exit. You can use it as a more permanent *scratch* buffer. -+++ *** Remember can now store notes in separate files. To use this, add `remember-store-in-files' to the `remember-handler-functions' option. The files are saved in `remember-data-directory' using @@ -1017,109 +844,84 @@ ** Rmail -+++ *** Customize `rmail-mbox-format' to influence some minor aspects of how Rmail displays non-MIME messages. ---- *** The `unrmail' command now converts from BABYL to mboxrd format, rather than mboxo. Customize `unrmail-mbox-format' to change this. ** Ruby mode ---- *** Improved syntax highlighting and indentation. ---- *** New `electric-indent-mode' integration. ---- *** New option `ruby-encoding-magic-comment-style'. ---- *** New option `ruby-custom-encoding-magic-comment-template'. ---- *** New option `ruby-align-to-stmt-keywords'. ---- *** New option `ruby-align-chained-calls'. ---- *** More Ruby file types have been added to `auto-mode-alist'. ** Search and Replace -+++ *** New global command `M-s .' (`isearch-forward-symbol-at-point') starts a symbol (identifier) incremental search forward with the symbol found near point added to the search string initially. -+++ *** `C-x 8 RET' in Isearch mode reads a character by its Unicode name and adds it to the search string. -+++ *** `M-s i' in Isearch mode toggles whether search matches invisible text. -+++ *** `query-replace' skips invisible text when `search-invisible' is nil, and opens overlays with hidden text when `search-invisible' is `open'. -+++ -*** A negative prefix arg of replacement commands replaces backward. +*** A negative prefix argument of replacement commands replaces backward. `M-- M-%' replaces a string backward, `M-- C-M-%' replaces a regexp backward, `M-s w words M-- M-%' replaces a sequence of words backward. -+++ *** By default, prefix arguments do not now terminate Isearch mode. -Set `isearch-allow-prefix' to nil to restore old behavior. +Set `isearch-allow-prefix' to nil to restore the old behavior. -+++ *** More Isearch commands accept prefix arguments, namely `isearch-printing-char', `isearch-quote-char', `isearch-yank-word', `isearch-yank-line'. -+++ *** Word search now matches whitespace at the beginning/end of the search string if it contains leading/trailing whitespace. In an incremental word search or when using a non-nil LAX argument of `word-search-regexp', the lax matching can also match part of the first word (in addition to the lax matching of the last word). -The same rules are now applied to the symbol search with the difference +The same rules are now applied to the symbol search, with the difference that it matches symbols, and non-symbol characters between symbols. -+++ ** New SES command `ses-rename-cell' allows assignment of names to SES cells. ---- ** The shell.el option `explicit-bash-args' includes --noediting by default. All non-ancient Bash versions support this option. ** Shell Script mode ---- *** The SMIE indentation engine is now used by default - see `sh-use-smie'. ---- *** `sh-mode' now has its own setting for `add-log-current-defun-function'. ** SMIE -+++ *** You can customize the SMIE indentation of a mode via `smie-config'. The command `smie-config-guess' can help you derive the appropriate indentation settings, if you provide it with an indented sample file. Use `smie-config-save' to save the result. -+++ *** You can customize the SMIE indentation of a file by adding an entry to the file's local variables of the form: `eval: (smie-config-local '(RULES))'. -+++ *** New commands `smie-config-show-indent' and `smie-config-set-indent'. ---- ** SQL mode *** Improved login monitoring and appropriate response to login failures. @@ -1131,10 +933,8 @@ are passed before the logon parameter, as required. The default now includes `-L', to limit the number of logon attempts per invocation. ---- ** New Term mode option `term-suppress-hard-newline'. -+++ ** Todo mode has been rewritten and enhanced. The Todo mode user manual describes all commands and most user options. To support some of these features, a new file format is @@ -1166,12 +966,10 @@ ** Trace ---- *** `trace-function' and `trace-function-background' no longer prompt for the output buffer. Unless you use a prefix argument, they output to `trace-buffer'. ---- *** With a prefix argument, `trace-function' and `trace-function-background' will prompt for a "context". This is a Lisp expression, whose value at the time the function is entered/exited is printed along with the function's @@ -1179,109 +977,102 @@ ** Tramp -+++ -*** The experimental url syntax for remote file names has been removed. - -+++ *** New connection method "adb", which allows to access Android devices by the Android Debug Bridge. The variable `tramp-adb-program' can be used to adapt the path of the "adb" program, if needed. -+++ +*** Handlers for `file-acl' and `set-file-acl' for remote machines +that support POSIX ACLs. + +*** Handlers for `file-notify-add-watch' and `file-notify-rm-watch' +for remote machines that support filesystem notifications. + +*** The experimental url syntax for remote file names has been removed. + *** The connection methods "plink1", "ssh1", "ssh2", "scp1", "scp2", "scpc" and "rsyncc" are discontinued. The ssh option "ControlMaster=auto" is set automatically in all ssh-based methods, when possible. See `tramp-use-ssh-controlmaster-options'. -+++ -*** Handlers for `file-acl' and `set-file-acl' for remote machines -which support POSIX ACLs. - -+++ -*** Handlers for `file-notify-add-watch' and `file-notify-rm-watch' -for remote machines which support filesystem notifications. - -+++ ** New URL command `url-cookie-list' displays the current cookies, and allows you to interactively remove cookies. ** VC and related modes -+++ *** In VC directory mode, `D' displays diffs between VC-controlled whole tree revisions. -+++ *** In VC directory mode, `L' lists the change log for the current VC controlled tree in a window. -+++ *** In VC directory mode, `I' shows a log of changes that will be received with a pull operation. -+++ *** `C-x v G' (globally) and `G' (in VC directory mode) ignores a file under current version control system. When called with a prefix argument, you can remove a file from the ignored file list. ** VHDL mode ---- *** New options: `vhdl-actual-generic-name', `vhdl-beautify-options'. ---- *** New commands: `vhdl-fix-statement-region', `vhdl-fix-statement-buffer'. ---- ** The Woman commands `woman-default-faces' and `woman-monochrome-faces' are obsolete. Customize the `woman-*' faces instead. +** More packages look for ~/.emacs.d/ additionally to ~/.. +Affected files: +~/.emacs.d/timelog replaces ~/.timelog +~/.emacs.d/vip replaces ~/.vip +~/.emacs.d/viper replaces ~/.viper +~/.emacs.d/ido.last replaces ~/.ido.last +~/.emacs.d/kkcrc replaces ~/.kkcrc +~/.emacs.d/quickurls replaces ~/.quickurls +~/.emacs.d/idlwave/ replaces ~/.idlwave/ +~/.emacs.d/bdfcache.el replaces ~/.bdfcache.el +~/.emacs.d/places replaces ~/.emacs-places +~/.emacs.d/shadows replaces ~/.shadows +~/.emacs.d/shadow_todo replaces ~/.shadow_todo +~/.emacs.d/strokes replaces ~/.strokes +~/.emacs.d/notes replaces ~/.notes +~/.emacs.d/type-break replaces ~/.type-break +Also the following files used by the now obsolete otodo-mode.el: +~/.emacs.d/todo-do replaces ~/.todo-do +~/.emacs.d/todo-done replaces ~/.todo-done +~/.emacs.d/todo-top replaces ~/.todo-top + ** Obsolete packages -+++ *** iswitchb.el; use icomplete-mode. ---- *** longlines.el; use visual-line-mode. ---- *** meese.el. -+++ *** sup-mouse.el. ---- *** terminal.el; use term.el instead. ---- *** the old version of todo-mode.el (renamed to otodo-mode.el). ---- *** xesam.el (owing to the cancellation of the XESAM project). -+++ *** yow.el; use fortune.el or cookie1.el instead. * New Modes and Packages in Emacs 24.4 -+++ ** New package `eww' is a built-in web browser. -It is only available if Emacs is compiled with libxml2 support. - -+++ -** New minor mode `superword-mode'. -This overrides the default word motion commands to treat "symbol_words" -as a single word, similar to what `subword-mode' does. - -+++ +(It is only available if Emacs is compiled with libxml2 support.) + ** New package nadvice.el offers lighter-weight advice facilities. It is layered as: -*** add-function/remove-function, which can be used to add/remove code on any -function-carrying place, such as process-filters or `-function' hooks. +*** `add-function'/`remove-function', which can be used to add/remove code on +any function-carrying place, such as process filters or `-function' hooks. -*** advice-add/advice-remove to add/remove a piece of advice on a named +*** `advice-add'/`advice-remove' to add/remove a piece of advice on a named function, much like `defadvice' does. ** New package frameset.el. @@ -1290,39 +1081,21 @@ frame configuration), both in-session and persistently, and restore it at some point in the future. -+++ ** New package filenotify.el provides an interface for file system notifications. It requires that Emacs be compiled with one of the low-level libraries gfilenotify.c, inotify.c or w32notify.c. +** New minor modes `prettify-symbols-mode' and `global-prettify-symbols-mode' +display specified symbols as composed characters. E.g., in Emacs Lisp mode, +this replaces the string "lambda" with the Greek lambda character. + +** New minor mode `superword-mode'. +This overrides the default word motion commands to treat "symbol_words" +as a single word, similar to what `subword-mode' does. + * Incompatible Lisp Changes in Emacs 24.4 -+++ -** Do not assume that the priority of all overlays will be numeric. -(You should still only specify integer priorities on overlays you create.) -If you need to sort arbitrary overlays into priority order, `overlays-at' -can now optionally do this. - ---- -** `kill-region' has lost its `yank-handler' optional argument. - -+++ -** `(input-pending-p)' no longer runs other timers that are ready to run. -The new optional CHECK-TIMERS parameter allows for the prior behavior. - -+++ -** `defvar' and `defcustom' in a let-binding affect the "external" default. - ---- -** The syntax of ?» and ?« is now punctuation instead of matched parens. -Some languages match those as »...«, and others as «...», so it is -better for Emacs to stay neutral by default. - ---- -** In compiled Lisp files, the header no longer includes a timestamp. - -+++ ** The default file coding for Emacs Lisp files is now utf-8. (See `file-coding-system-alist'.) In most cases, this change is transparent, but files that contain unusual characters without @@ -1330,158 +1103,272 @@ errors. You should either convert them to utf-8 or add an explicit `coding:' cookie. -+++ +** Default process filters and sentinels are not nil any more. +Instead they default to a function that does what the nil value used to do. + +** Overlay priority does not have to be nil or a non-negative integer. +Overlay priority can be other kinds of Lisp objects. We didn't yet +decide whether other types of values are stable enough, and therefore +don't feel it's right to document them. For now, don't assume in your +code that the values of overlay priority can only be either nil or an +integer, always test them with an appropriate predicate to be one or +the other. If you need to sort arbitrary overlays into priority +order, `overlays-at' can now optionally do this. +You should still only specify integer priorities on overlays you create. + +** The cars of the elements in `interpreter-mode-alist' are now +treated as regexps rather than literal strings. + ** `overriding-terminal-local-map' no longer replaces the local keymaps. It used to disable the minor mode, major mode, and text-property keymaps, whereas now it simply has higher precedence. -+++ -** Default process filters and sentinels are not nil any more. -Instead they default to a function that does what the nil value used to do. - -+++ +** `kill-region' has lost its `yank-handler' optional argument. + +** `(input-pending-p)' no longer runs other timers that are ready to run. +The new optional CHECK-TIMERS parameter allows for the prior behavior. + +** `defvar' and `defcustom' in a let-binding affect the "external" default. + +** The syntax of ?» and ?« is now punctuation instead of matched parens. +Some languages match those as »...«, and others as «...», so it is +better for Emacs to stay neutral by default. + ** `read-event' does not return decoded chars in ttys any more. As was the case in Emacs 22 and before, the decoding of terminal input, according to `keyboard-coding-system', is not performed in `read-event' any more. But unlike in Emacs 22, this decoding is still -done before input-decode-map, function-key-map, etc. - ---- -** The option `inhibit-local-menu-bar-menus' has been removed. - ---- -** Frame-local variables that affect redisplay do not work any more. -More specifically, redisplay does not bother to check for a frame-local -value when looking up variables. - -+++ -** nil and "unbound" are indistinguishable in `symbol-function'. +done before `input-decode-map', `function-key-map', etc. + +** In `symbol-function', nil and "unbound" are indistinguishable. `symbol-function' does not signal a `void-function' error any more. To determine if a symbol's function definition is void, use `fboundp'. -+++ ** `defadvice' does not honor the `freeze' flag and cannot advise special-forms any more. ---- ** `dolist' no longer binds VAR while evaluating the RESULT form, when lexical binding is enabled. Previously, VAR was bound to nil, which often led to spurious unused-variable warnings. -+++ ** The return value of `backup-buffer' has changed. The second argument is no longer an SELinux context, instead it is an alist of extended attributes as returned by the new function `file-extended-attributes'. The attributes can be applied to another file using `set-file-extended-attributes'. -+++ ** By default `copy-file' no longer copies file permission bits to an existing destination; and it sets the file permission bits of a newly created destination to those of the source, masked by the default file permissions. To copy the file permission bits, pass t as the PRESERVE-PERMISSIONS argument of `copy-file'. -+++ ** `visited-file-modtime' now returns -1 for nonexistent files. Formerly it returned a list (-1 LOW USEC PSEC), but this was ambiguous in the presence of files with negative time stamps. -+++ -** The cars of the elements in `interpreter-mode-alist' are now -treated as regexps rather than literal strings. - ---- -** Overlay priority does not have to be nil or a non-negative integer. -Overlay priority can be other kinds of Lisp objects. We didn't yet -decide whether other types of values are stable enough, and therefore -don't feel it's right to document them. For now, don't assume in your -code that the values of overlay priority can only be either nil or an -integer, always test them with an appropriate predicate to be one or -the other. +** Frame-local variables that affect redisplay do not work any more. +More specifically, redisplay does not bother to check for a frame-local +value when looking up variables. + +** In compiled Lisp files, the header no longer includes a timestamp. + +** The option `inhibit-local-menu-bar-menus' has been removed. * Lisp Changes in Emacs 24.4 -+++ +** Change to the Emacs Lisp coding conventions: the package descriptor +and name of global variables, constants, and functions should be separated +by two hyphens if the symbol is not meant to be used by other packages. + ** The second argument of `eval' can now specify a lexical environment. -+++ -** New functions `special-form-p' and `macrop'. - -+++ ** New macro `define-alternatives' can be used to define generic commands. Generic commands are interactive functions whose implementation can be selected among several alternatives, as a matter of user preference. -+++ +** Numeric comparison functions =, <, >, <=, >= can now take many arguments. + +** New functions `special-form-p' and `macrop'. + +** New macro `with-eval-after-load'. +This is like the old `eval-after-load', but better behaved. + ** If you give a symbol a `defalias-fset-function' property, `defalias' on that symbol will use the associated value as a function to call in place of `fset'. -+++ ** New variable `enable-dir-local-variables'. Directory-local variables are ignored if this is nil. This may be useful for modes that want to ignore directory-locals while still respecting file-local variables. -+++ -** New function `get-pos-property'. - -+++ ** `read-regexp' now uses the new variable `read-regexp-defaults-function' as a function to call to provide default values. -** Completion changes - ---- +** New functions `group-gid' and `group-real-gid'. + +** New function `get-pos-property'. + +** New hook `pre-redisplay-function'. + +** `byte-compile-interactive-only-functions' is now obsolete. +To specify that a command should only be called interactively, give it +a non-nil `interactive-only' property. + +** New function `string-suffix-p'. + +** `split-string' now takes an optional argument TRIM. +The value, if non-nil, is a regexp that specifies what to trim from +the start and end of each substring. + +** Completion + *** The separator used by `completing-read-multiple' is now a regexp. The default `crm-separator' has been changed to allow surrounding spaces around the comma. -+++ +*** New function `completion-table-with-cache' is a wrapper for +`completion-table-dynamic' that caches the result of the last lookup. + +*** New function `completion-table-merge' to combine several +completion tables by merging their completions. + *** The `common-substring' argument of `display-completion-list', which has been documented as obsolete since Emacs 23.1, is now _really_ obsolete, and no longer advertised. Instead either call `completion-hilit-commonality' to add the highlighting; or use `completion-all-completions', which returns highlighted strings. -+++ -*** New function `completion-table-with-cache' is a wrapper for -`completion-table-dynamic' that caches the result of the last lookup. - -+++ -*** New function `completion-table-merge' to combine several -completion tables by merging their completions. - -+++ -** New minor modes `prettify-symbols-mode' and `global-prettify-symbols-mode' -display specified symbols as composed characters. E.g., in Emacs Lisp mode, -this replaces the string "lambda" with the Greek lambda character. - -** Terminal changes - -+++ +** Encoding and decoding of text + +*** New coding-system `prefer-utf-8'. +This is like `undecided' but prefers UTF-8 on decoding if the text to +be decoded does not contain any invalid UTF-8 sequences. On encoding, +any non-ASCII characters are automatically encoded as UTF-8. + +*** New attributes of coding-systems whose type is `undecided'. +Two new attributes, `:inhibit-null-byte-detection' and +`:inhibit-iso-escape-detection', determine how to detect encoding of +text that includes null bytes and ISO-2022 escape sequences, respectively. +Each of these attributes can be either nil, zero, or t. If t, decoding +text ignores null bytes and ISO-2022 sequences, respectively. If nil, +null bytes cause text to be decoded with no-conversion, and ISO-2022 +sequences cause Emacs to assume the text is encoded in one of the ISO-2022 +encodings, such as iso-2022-7bit. If zero, Emacs consults the variables +`inhibit-null-byte-detection' and `inhibit-iso-escape-detection'. +The new attribute `:prefer-utf-8', if non-nil, causes Emacs to prefer +UTF-8 encoding and decoding, whenever possible. + +These attributes are only meaningful for coding-systems of type `undecided'. +(The type of a coding-system is determined by its `:coding-type' attribute +and can be accessed by calling the `coding-system-type' function.) + +** Error-handling + +*** New function `define-error'. + +*** `with-demoted-errors' takes an additional argument `format'. + +** Faces + +*** Face specs set via Custom themes now replace the `defface' spec +rather than inheriting from it. In other words, setting a face via a +theme now behaves like setting it via Customize: you only need to +specify the attributes that you want, you don't need to unset those +that you don't want. + +*** The function `face-spec-set' is now like `setq' for face specs. +Its third arg now accepts values specifying a face spec type (defface, +custom, or override spec), and the relevant spec is set accordingly. + +*** New face spec attribute :distant-foreground +specifies foreground to use if background color is near the foreground +color that would otherwise have been used. + +*** New function `add-face-text-property', which can be used to +conveniently prepend/append new face properties. + +*** New face characteristic (supports :underline (:style wave)) +specifies whether or not the terminal can display a wavy line. + +** File-handling + +*** Support for filesystem notifications. +Emacs now supports notifications of filesystem changes, such as +creation, modification, and deletion of files. This requires the +`glib' API, or the 'inotify' API (on GNU/Linux systems only). On +MS-Windows systems, this is supported for Windows XP and newer. + +*** 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 +platforms, and nobody seems to have noticed or cared. + +*** The 6th argument to `copy-file' has been renamed to +PRESERVE-PERMISSIONS as it now handles ACL entries and the traditional +Unix file permission bits as well as SELinux context. + +*** The function `file-ownership-preserved-p' now has an optional +argument GROUP which causes it check for file group too. This can be +used in place of the 9th element of `file-attributes'. + +*** The function `set-visited-file-modtime' now accepts a 0 or -1 argument, +with the same interpretation as the returned value of `visited-file-modtime'. + +** Image API + +*** `image-animated-p' is now `image-multi-frame-p'. +It returns non-nil for any image that contains multiple frames, +whether or not it specifies a frame delay. + +*** New variable `image-default-frame-delay' gives the frame delay for +animated images which do not specify a frame delay. + +*** New functions `image-current-frame' and `image-show-frame' for getting +and setting the current frame of a multi-frame image. + +** Revert and Autorevert + +*** If Emacs is compiled with file notification support, it uses notifications +instead of checking file time stamps. To disable this, set the user option +`auto-revert-use-notify' to nil. Alternatively, you can specify a regular +expression matching directories to be excluded from file notifications via +`auto-revert-notify-exclude-dir-regexp'. + +*** The default values of `buffer-stale-function', `revert-buffer-function', +and `revert-buffer-insert-file-contents-function' are no longer nil. +Instead they default to functions that do what the nil value used to. + +*** `buffer-stale-function' is now used for buffers visiting files too. + +*** The new user option `auto-revert-remote-files' enables reversion +of remote files, if non-nil. + +** Terminal + *** Functions to pop up menus and dialogs now work on all terminals, including TTYs. This includes `x-popup-menu', `x-popup-dialog', `message-box', `yes-or-no-p', etc. The function `display-popup-menus-p' will now return non-nil for a -display or frame whenever a mouse is supported on that display or -frame. +display or frame whenever a mouse is supported on that display or frame. -+++ *** New hook `tty-setup-hook', run at the end of initializing a text terminal. -+++ *** The hook `term-setup-hook' is obsolete. It is entirely equivalent to `emacs-startup-hook'. See also the new `tty-setup-hook'. -+++ -** New hook `pre-redisplay-function'. +** Minor internal changes to the details of lock files. +The lock for DIR/FILE is now _always_ DIR/.#FILE. +If DIR/.#FILE already exists and is not an Emacs lock file, +Emacs makes no attempt to lock DIR/FILE. (Previously, it fell back to +numbered lock files DIR/.#FILE.0...). +On file systems that do not support symbolic links, the lock is now a +regular file with contents being what would have been in the symlink. -+++ -** New bool-vector set operation functions +** New bool-vector set operation functions: *** `bool-vector-exclusive-or' *** `bool-vector-union' *** `bool-vector-intersection' @@ -1491,23 +1378,7 @@ *** `bool-vector-count-consecutive' *** `bool-vector-count-population' -+++ -** Comparison functions =, <, >, <=, >= can now take many arguments. - -** Error-handling changes - -+++ -*** New function `define-error'. - -+++ -*** `with-demoted-errors' takes an additional argument `format'. - -+++ -** New macro `with-eval-after-load'. -This is like the old `eval-after-load', but better behaved. - ---- -** New library subr-x.el with miscellaneous small utility functions +** New library subr-x.el with miscellaneous small utility functions: *** `hash-table-keys' *** `hash-table-values' *** `string-blank-p' @@ -1520,7 +1391,30 @@ *** `string-remove-prefix' *** `string-remove-suffix' -+++ +** The `time-to-seconds' alias to `float-time' is no longer marked obsolete. + +** The spelling of the rx.el category `chinese-two-byte' has been +corrected (the first 'e' was missing). + +** EIEIO namespace cleanup, obsolete-aliasing functions to use `eieio-' prefix: +*** object-name -> eieio-object-name +*** object-class -> eieio-object-class +*** object-class-fast -> eieio--object-class +*** object-class-name -> eieio-object-class-name +*** object-name-string -> eieio-object-name-string +*** object-num-slots -> eieio--object-num-slots +*** object-set-name-string -> eieio-object-set-name-string +*** class-of -> eieio-object-class +*** class-name -> eieio-class-name +*** class-parent -> eieio-class-parent +*** class-parents -> eieio-class-parents +*** class-parents-fast -> eieio-class-parents-fast +*** class-children -> eieio-class-children +*** class-num-slots -> eieio--class-num-slots +*** class-precedence-list -> eieio-class-precedence-list +*** class-direct-subclasses -> eieio-class-children +*** class-direct-superclasses -> eieio-class-parents + ** Obsoleted functions *** `log10' *** `dont-compile' @@ -1532,207 +1426,34 @@ *** `generic-make-keywords-list' *** `get-upcase-table' (use `case-table-get-table' instead). -+++ ** `with-wrapper-hook' is obsoleted by `add-function'. The few hooks that used with-wrapper-hook are replaced as follows: *** `abbrev-expand-function' obsoletes `abbrev-expand-functions'. *** `completion-in-region-function' obsoletes `completion-in-region-functions'. *** `filter-buffer-substring-function' obsoletes `filter-buffer-substring-functions'. -+++ -** `byte-compile-interactive-only-functions' is now obsolete. -To specify that a command should only be called interactively, give it -a non-nil `interactive-only' property. - -+++ -** `split-string' now takes an optional argument TRIM. -The value, if non-nil, is a regexp that specifies what to trim from -the start and end of each substring. - -+++ -** New function `string-suffix-p'. - -** File-handling changes - -+++ -*** Support for filesystem notifications. -Emacs now supports notifications of filesystem changes, such as -creation, modification, and deletion of files. This requires the -`glib' API, or the 'inotify' API (on GNU/Linux systems only). On -MS-Windows systems, this is supported for Windows XP and newer -versions. - -+++ -*** 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 -platforms, and nobody seems to have noticed or cared. - -+++ -*** The 6th argument to `copy-file' has been renamed to -PRESERVE-PERMISSIONS as it now handles ACL entries and the traditional -Unix file permission bits as well as SELinux context. - -+++ -*** The function `file-ownership-preserved-p' now has an optional -argument GROUP which causes it check for file group too. This can be -used in place of the 9th element of `file-attributes'. - ---- -*** The function `set-visited-file-modtime' now accepts a 0 or -1 -argument, with the same interpretation as the returned value of -`visited-file-modtime'. - -** Revert and Autorevert changes - -+++ -*** The default values of `buffer-stale-function', `revert-buffer-function', -and `revert-buffer-insert-file-contents-function' are no longer nil. -Instead they default to functions that do what the nil value used to. - -+++ -*** `buffer-stale-function' is now used for buffers visiting files too. - ---- -*** If Emacs is compiled with file notification support, it uses notifications -instead of checking file time stamps. To disable this, set the user option -`auto-revert-use-notify' to nil. Alternatively, you can specify a regular -expression matching directories to be excluded from file notifications via -`auto-revert-notify-exclude-dir-regexp'. - ---- -*** The new user option `auto-revert-remote-files' enables reversion -of remote files, if set to non-nil. - -** Face changes - -+++ -*** The function `face-spec-set' is now like `setq' for face specs. -Its third arg now accepts values specifying a face spec type (defface, -custom, or override spec), and the relevant spec is set accordingly. - -+++ -*** New function `add-face-text-property', which can be used to -conveniently prepend/append new face properties. - ---- -*** Face specs set via Custom themes now replace the `defface' spec -rather than inheriting from it. In other words, setting a face via a -theme now behaves like setting it via Customize: you only need to -specify the attributes that you want, you don't need to unset those -that you don't want. - ---- -*** New face characteristic (supports :underline (:style wave)) -specifies whether or not the terminal can display a wavy line. - -+++ -*** New face spec attribute :distant-foreground -specifies foreground to use if background color is near the foreground -color that would otherwise have been used. - -** Image API - -+++ -*** `image-animated-p' is now `image-multi-frame-p'. -It returns non-nil for any image that contains multiple frames, -whether or not it specifies a frame delay. - -+++ -*** New variable `image-default-frame-delay' gives the frame delay for -animated images which do not specify a frame delay. - -+++ -*** New functions `image-current-frame' and `image-show-frame' for getting -and setting the current frame of a multi-frame image. - -** EIEIO - -+++ -*** Namespace cleanup by obsolete-aliasing functions to use `eieio-' prefix. -**** object-name -> eieio-object-name -**** object-class -> eieio-object-class -**** object-class-fast -> eieio--object-class -**** object-class-name -> eieio-object-class-name -**** object-name-string -> eieio-object-name-string -**** object-num-slots -> eieio--object-num-slots -**** object-set-name-string -> eieio-object-set-name-string -**** class-of -> eieio-object-class -**** class-name -> eieio-class-name -**** class-parent -> eieio-class-parent -**** class-parents -> eieio-class-parents -**** class-parents-fast -> eieio-class-parents-fast -**** class-children -> eieio-class-children -**** class-num-slots -> eieio--class-num-slots -**** class-precedence-list -> eieio-class-precedence-list -**** class-direct-subclasses -> eieio-class-children -**** class-direct-superclasses -> eieio-class-parents - -** Changes in encoding and decoding of text - ---- -*** New coding-system `prefer-utf-8'. -This is like `undecided' but prefers UTF-8 on decoding if the text to -be decoded does not contain any invalid UTF-8 sequences. On encoding, -any non-ASCII characters are automatically encoded as UTF-8. - ---- -*** New attributes of coding-systems whose type is `undecided'. -Two new attributes, `:inhibit-null-byte-detection' and -`:inhibit-iso-escape-detection', determine how to detect encoding of -text that includes null bytes and ISO-2022 escape sequences, -respectively. Each of these attributes can be either nil, zero, or -t. If it is t, decoding text ignores null bytes and, respectively, -ISO-2022 sequences. If it is nil, null bytes cause text to be decoded -with no-conversion and ISO-2022 sequences cause Emacs to assume the -text is encoded in one of the ISO-2022 encodings, such as -iso-2022-7bit. If the value is zero, Emacs consults the variables -inhibit-null-byte-detection and inhibit-iso-escape-detection, which -see. -The new attribute `:prefer-utf-8', if non-nil, causes Emacs to prefer -UTF-8 encoding and decoding, whenever possible. - -These attributes are only meaningful for coding-systems of type -`undecided'. (The type of a coding-system is determined by its -`:coding-type' attribute and can be accessed by calling the -`coding-system-type' function.) - ---- -** The `time-to-seconds' alias to `float-time' is no longer marked obsolete. - -+++ -** New functions `group-gid' and `group-real-gid'. - ---- -** The spelling of the rx.el category `chinese-two-byte' has been -corrected (the first 'e' was missing). - ---- -** Minor internal changes to the details of lock files. -The lock for DIR/FILE is now _always_ DIR/.#FILE. -If DIR/.#FILE already exists and is not an Emacs lock file, -Emacs makes no attempt to lock DIR/FILE. (Previously, it fell back to -numbered lock files DIR/.#FILE.0...). -On file systems that do not support symbolic links, the lock is now a -regular file with contents being what would have been in the symlink. - -** Changes to the Emacs Lisp Coding Conventions in Emacs 24.4 - -+++ -*** The package descriptor and name of global variables, constants, -and functions should be separated by two hyphens if the symbol is not -meant to be used by other packages. - * Changes in Emacs 24.4 on Non-Free Operating Systems ---- +** New Core Text based font backend for Mac OS X 10.5 and newer. +To use the old font backend, use the following on the command line: + % defaults write org.gnu.Emacs FontBackend ns +GNUstep and Mac OS X 10.4 use the old font backend. + +** Improved fullscreen support on Mac OS X 10.7 and newer, where the +default fullscreen method is now "native" fullscreen. To use the +old style fullscreen, customize `ns-use-native-fullscreen' to nil. + +** On Mac OS X 10.7 and newer, Emacs can use sRGB colorspace, and does so +by default. Customize `ns-use-srgb-colorspace' to go back to the old method. +Note that this does not apply to images. + ** The procedure for building Emacs on MS-Windows has changed. It is now built by running the same configure script as on all other platforms. This requires the MSYS environment and MinGW development tools. See the updated instructions in nt/INSTALL for details. -Using the Posix configure script and Makefile's also means a change in +Using the Posix configure script and Makefiles also means a change in the directory structure of the Emacs installation on Windows. It is now the same as on GNU and Unix systems. In particular, the auxiliary programs, such as cmdproxy.exe and hexl.exe, are in @@ -1744,7 +1465,6 @@ directories and will find the files in there automatically; there's no need to set any variables due to this change.) -+++ ** Emacs on Windows 2000 and later can now access files and directories whose names cannot be encoded in the current system codepage. @@ -1752,40 +1472,21 @@ is t, Emacs uses Unicode APIs to pass file names to system calls, which lifts the limitation of file names to the current locale. -+++ +** Lock files now work on MS-Windows. +This helps to prevent losing your edits if the same file is being +edited in another Emacs session or by another user. See the node +"Interlocking" in the Emacs User Manual for the details. To disable +file locking, customize `create-lockfiles' to nil. + ** The "generate a backtrace on fatal error" feature now works on MS Windows. The backtrace is written to the 'emacs_backtrace.txt' file in the directory where Emacs was running. -+++ ** The variable `buffer-file-type' is no longer supported. Setting it has no effect, and %t in the mode-line format is ignored. Likewise, `file-name-buffer-file-type-alist' is now obsolete, and modifying it has no effect. ---- -** Lock files now work on MS-Windows. -This helps to prevent losing your edits if the same file is being -edited in another Emacs session or by another user. See the node -"Interlocking" in the Emacs User Manual for the details. To disable -file locking, customize `create-lockfiles' to nil. - -+++ -** New Core Text based font backend for Mac OS X 10.5 and newer. -To use the old font backend, use the following on the command line: - % defaults write org.gnu.Emacs FontBackend ns -GNUstep and Mac OS X 10.4 use the old font backend. - ---- -** Improved fullscreen support on Mac OS X 10.7 and newer, where the -default fullscreen method is now "native" fullscreen. To use the -old style fullscreen, customize `ns-use-native-fullscreen' to nil. - ---- -** On Mac OS X 10.7 and newer, Emacs can use sRGB colorspace, and does so -by default. Customize `ns-use-srgb-colorspace' to go back to the old method. -Note that this does not apply to images. - * Installation Changes in Emacs 24.3 === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-11 17:57:51 +0000 +++ src/ChangeLog 2014-06-11 19:33:14 +0000 @@ -1,3 +1,9 @@ +2014-06-11 Eli Zaretskii + + * xdisp.c (set_cursor_from_row): Fix an off-by-one error when + matching overlay strings with 'cursor' property against buffer + positions traversed in the glyph row. (Bug#17744) + 2014-06-11 Jan Djärv * nsterm.h (EmacsApp): Always compile in shouldKeepRunning, isFirst === modified file 'src/xdisp.c' --- src/xdisp.c 2014-06-10 04:55:03 +0000 +++ src/xdisp.c 2014-06-11 19:33:14 +0000 @@ -14413,7 +14413,7 @@ pos_after, 0); if (prop_pos >= pos_before) - bpos_max = prop_pos - 1; + bpos_max = prop_pos; } if (INTEGERP (chprop)) { @@ -14487,7 +14487,7 @@ pos_after, 0); if (prop_pos >= pos_before) - bpos_max = prop_pos - 1; + bpos_max = prop_pos; } if (INTEGERP (chprop)) { @@ -14517,7 +14517,7 @@ GLYPH_BEFORE and GLYPH_AFTER. */ if (!((row->reversed_p ? glyph > glyphs_end : glyph < glyphs_end) && BUFFERP (glyph->object) && glyph->charpos == pt_old) - && !(bpos_max < pt_old && pt_old <= bpos_covered)) + && !(bpos_max <= pt_old && pt_old <= bpos_covered)) { /* An empty line has a single glyph whose OBJECT is zero and whose CHARPOS is the position of a newline on that line. ------------------------------------------------------------ revno: 117308 fixes bug: http://debbugs.gnu.org/17751 committer: Jan Djärv branch nick: trunk timestamp: Wed 2014-06-11 19:57:51 +0200 message: Fix memory leaks * macfont.m (macfont_draw): positions where not freed. * nsterm.h (EmacsApp): Always compile in shouldKeepRunning, isFirst on Cocoa. * nsterm.m (run): Always compile for Cocoa. Use runtime check to determine 10.9. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-10 05:28:00 +0000 +++ src/ChangeLog 2014-06-11 17:57:51 +0000 @@ -1,3 +1,13 @@ +2014-06-11 Jan Djärv + + * nsterm.h (EmacsApp): Always compile in shouldKeepRunning, isFirst + on Cocoa. + + * nsterm.m (run): Always compile for Cocoa. Use runtime check to + determine 10.9 (Bug#17751). + + * macfont.m (macfont_draw): positions where not freed. + 2014-06-10 Dmitry Antipov * dispextern.h (PREPARE_FACE_FOR_DISPLAY): Remove as a duplicate of ... === modified file 'src/macfont.m' --- src/macfont.m 2014-05-25 10:28:52 +0000 +++ src/macfont.m 2014-06-11 17:57:51 +0000 @@ -2810,6 +2810,7 @@ xfree (glyphs); + xfree (positions); CGContextRestoreGState (context); unblock_input (); === modified file 'src/nsterm.h' --- src/nsterm.h 2014-06-04 14:59:09 +0000 +++ src/nsterm.h 2014-06-11 17:57:51 +0000 @@ -100,7 +100,7 @@ /* We override sendEvent: as a means to stop/start the event loop */ @interface EmacsApp : NSApplication { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9 +#ifdef NS_IMPL_COCOA BOOL shouldKeepRunning; BOOL isFirst; #endif === modified file 'src/nsterm.m' --- src/nsterm.m 2014-06-04 14:59:09 +0000 +++ src/nsterm.m 2014-06-11 17:57:51 +0000 @@ -4453,7 +4453,7 @@ { if (self = [super init]) { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9 +#ifdef NS_IMPL_COCOA self->isFirst = YES; #endif #ifdef NS_IMPL_GNUSTEP @@ -4464,30 +4464,40 @@ return self; } -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9 +#ifdef NS_IMPL_COCOA - (void)run { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - if (isFirst) [self finishLaunching]; - isFirst = NO; - - shouldKeepRunning = YES; - do - { - [pool release]; - pool = [[NSAutoreleasePool alloc] init]; - - NSEvent *event = - [self nextEventMatchingMask:NSAnyEventMask - untilDate:[NSDate distantFuture] - inMode:NSDefaultRunLoopMode - dequeue:YES]; - [self sendEvent:event]; - [self updateWindows]; +#ifndef NSAppKitVersionNumber10_8 +#define NSAppKitVersionNumber10_8 1187 +#endif + + if (NSAppKitVersionNumber <= NSAppKitVersionNumber10_8) + { + [super run]; + return; + } + + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + if (isFirst) [self finishLaunching]; + isFirst = NO; + + shouldKeepRunning = YES; + do + { + [pool release]; + pool = [[NSAutoreleasePool alloc] init]; + + NSEvent *event = + [self nextEventMatchingMask:NSAnyEventMask + untilDate:[NSDate distantFuture] + inMode:NSDefaultRunLoopMode + dequeue:YES]; + [self sendEvent:event]; + [self updateWindows]; } while (shouldKeepRunning); - - [pool release]; + + [pool release]; } - (void)stop: (id)sender @@ -4497,7 +4507,7 @@ // The file dialog still leaks 7k - 10k on 10.9 though. [super stop:sender]; } -#endif +#endif /* NS_IMPL_COCOA */ - (void)logNotification: (NSNotification *)notification { ------------------------------------------------------------ revno: 117307 committer: Paul Eggert branch nick: trunk timestamp: Wed 2014-06-11 10:54:07 -0700 message: Spelling fix. diff: === modified file 'src/alloc.c' --- src/alloc.c 2014-06-09 15:03:49 +0000 +++ src/alloc.c 2014-06-11 17:54:07 +0000 @@ -4556,7 +4556,7 @@ { return !((intptr_t) p % (USE_LSB_TAG ? GCALIGNMENT : 2)); } - + /* If P points to Lisp data, mark that as live if it isn't already marked. */ @@ -5023,7 +5023,7 @@ { if (PURE_POINTER_P (str)) return 0; -#if GC_MARK_STACK +#if GC_MARK_STACK if (str) { struct sdata *sdata @@ -5037,7 +5037,7 @@ && (const char *) sdata->string->data == str); } return 0; -#endif /* GC_MARK_STACK */ +#endif /* GC_MARK_STACK */ return -1; } @@ -5882,9 +5882,9 @@ #elif (GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE) /* Old GCPROs-based method without stack marking. */ return garbage_collect_1 (NULL); -#else +#else emacs_abort (); -#endif /* GC_MARK_STACK */ +#endif /* GC_MARK_STACK */ } /* Mark Lisp objects in glyph matrix MATRIX. Currently the @@ -5979,7 +5979,7 @@ mark_compiled (struct Lisp_Vector *ptr) { int i, size = ptr->header.size & PSEUDOVECTOR_SIZE_MASK; - + VECTOR_MARK (ptr); for (i = 0; i < size; i++) if (i != COMPILED_CONSTANTS) @@ -6057,7 +6057,7 @@ struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (ptr); Lisp_Object where = blv->where; /* If the value is set up for a killed buffer or deleted - frame, restore it's global binding. If the value is + frame, restore its global binding. If the value is forwarded to a C variable, either it's not a Lisp_Object var, or it's staticpro'd already. */ if ((BUFFERP (where) && !BUFFER_LIVE_P (XBUFFER (where))) ------------------------------------------------------------ revno: 117306 committer: Paul Eggert branch nick: trunk timestamp: Wed 2014-06-11 10:51:27 -0700 message: Use a shell function in configure.ac to cut down on code duplication. * configure.ac (emacs_check_gnu_make): New shell function. Use it to avoid duplication when checking for GNU Make. It's OK for 'configure' to use shell functions these days, as long as we follow the advice in the 'Shell Functions' section of the Autoconf manual. diff: === modified file 'ChangeLog' --- ChangeLog 2014-06-11 03:03:40 +0000 +++ ChangeLog 2014-06-11 17:51:27 +0000 @@ -1,3 +1,12 @@ +2014-06-11 Paul Eggert + + Use a shell function in configure.ac to cut down on code duplication. + * configure.ac (emacs_check_gnu_make): New shell function. + Use it to avoid duplication when checking for GNU Make. + It's OK for 'configure' to use shell functions these days, + as long as we follow the advice in the 'Shell Functions' + section of the Autoconf manual. + 2014-06-11 Glenn Morris * configure.ac: Require at least version 3.81 of GNU make. === modified file 'configure.ac' --- configure.ac 2014-06-11 03:33:34 +0000 +++ configure.ac 2014-06-11 17:51:27 +0000 @@ -93,32 +93,35 @@ AC_SUBST([SET_MAKE])]) dnl Check for GNU Make and possibly set MAKE before running AM_INIT_AUTOMAKE. +[emacs_check_gnu_make () +{ + emacs_makeout=`($1 --version) 2>/dev/null` && + case $emacs_makeout in + 'GNU Make '3.8[1-9]* | 'GNU Make '3.9[0-9]* | \ + 'GNU Make '3.[1-9][0-9][0-9]* | 'GNU Make '[4-9]* | 'GNU Make '[1-9][0-9]* ) + ac_path_MAKE_found=:;; + esac +}] AC_CACHE_CHECK([for GNU Make], [ac_cv_path_MAKE], [ac_path_MAKE_found=false if test -n "$MAKE"; then - emacs_makeout=`($MAKE --version) 2>/dev/null` && - case $emacs_makeout in - 'GNU Make '[[1-3]][[0-9]]* | 'GNU Make '[[4-9]]* | 'GNU Make '3.8[[1-9]]* | 'GNU Make '3.9*) - ac_path_MAKE_found=:;; - esac + emacs_check_gnu_make "$MAKE" ac_cv_path_MAKE=$MAKE else emacs_tried_make=false emacs_tried_gmake=false emacs_tried_gnumake=false AC_PATH_PROGS_FEATURE_CHECK([MAKE], [make gmake gnumake], - [[emacs_makeout=`($ac_path_MAKE --version) 2>/dev/null` && - case $emacs_makeout in - 'GNU Make '[1-3][0-9]* | 'GNU Make '[4-9]* | 'GNU Make '3.8[1-9]* | 'GNU Make '3.9*) - # Use the fully-qualified program name only if the basename - # would not resolve to it. - if eval \$emacs_tried_$ac_prog; then - ac_cv_path_MAKE=$ac_path_MAKE - else - ac_cv_path_MAKE=$ac_prog - fi - ac_path_MAKE_found=:;; - esac + [[emacs_check_gnu_make "$ac_path_MAKE" + if $ac_path_MAKE_found; then + # Use the fully-qualified program name only if the basename + # would not resolve to it. + if eval \$emacs_tried_$ac_prog; then + ac_cv_path_MAKE=$ac_path_MAKE + else + ac_cv_path_MAKE=$ac_prog + fi + fi eval emacs_tried_$ac_prog=:]]) fi]) $ac_path_MAKE_found || { ------------------------------------------------------------ revno: 117305 committer: Glenn Morris branch nick: trunk timestamp: Tue 2014-06-10 20:33:34 -0700 message: * configure.ac: Tweak previous change, for make 10+ diff: === modified file 'configure.ac' --- configure.ac 2014-06-11 03:03:40 +0000 +++ configure.ac 2014-06-11 03:33:34 +0000 @@ -98,7 +98,7 @@ if test -n "$MAKE"; then emacs_makeout=`($MAKE --version) 2>/dev/null` && case $emacs_makeout in - 'GNU Make '[[4-9]]* | 'GNU Make '3.8[[1-9]]* | 'GNU Make '3.9*) + 'GNU Make '[[1-3]][[0-9]]* | 'GNU Make '[[4-9]]* | 'GNU Make '3.8[[1-9]]* | 'GNU Make '3.9*) ac_path_MAKE_found=:;; esac ac_cv_path_MAKE=$MAKE @@ -109,7 +109,7 @@ AC_PATH_PROGS_FEATURE_CHECK([MAKE], [make gmake gnumake], [[emacs_makeout=`($ac_path_MAKE --version) 2>/dev/null` && case $emacs_makeout in - 'GNU Make '[4-9]* | 'GNU Make '3.8[1-9]* | 'GNU Make '3.9*) + 'GNU Make '[1-3][0-9]* | 'GNU Make '[4-9]* | 'GNU Make '3.8[1-9]* | 'GNU Make '3.9*) # Use the fully-qualified program name only if the basename # would not resolve to it. if eval \$emacs_tried_$ac_prog; then ------------------------------------------------------------ revno: 117304 committer: Glenn Morris branch nick: trunk timestamp: Tue 2014-06-10 20:03:40 -0700 message: * configure.ac: Require at least version 3.81 of GNU make. It's 8 years old and has some useful features not in older versions. * etc/NEWS: Mention this. diff: === modified file 'ChangeLog' --- ChangeLog 2014-06-10 19:43:13 +0000 +++ ChangeLog 2014-06-11 03:03:40 +0000 @@ -1,3 +1,7 @@ +2014-06-11 Glenn Morris + + * configure.ac: Require at least version 3.81 of GNU make. + 2014-06-10 Paul Eggert Rely on AC_CANONICAL_HOST to detect whether we're using mingw. === modified file 'configure.ac' --- configure.ac 2014-06-10 19:43:13 +0000 +++ configure.ac 2014-06-11 03:03:40 +0000 @@ -98,7 +98,7 @@ if test -n "$MAKE"; then emacs_makeout=`($MAKE --version) 2>/dev/null` && case $emacs_makeout in - 'GNU Make '*) + 'GNU Make '[[4-9]]* | 'GNU Make '3.8[[1-9]]* | 'GNU Make '3.9*) ac_path_MAKE_found=:;; esac ac_cv_path_MAKE=$MAKE @@ -109,7 +109,7 @@ AC_PATH_PROGS_FEATURE_CHECK([MAKE], [make gmake gnumake], [[emacs_makeout=`($ac_path_MAKE --version) 2>/dev/null` && case $emacs_makeout in - 'GNU Make '*) + 'GNU Make '[4-9]* | 'GNU Make '3.8[1-9]* | 'GNU Make '3.9*) # Use the fully-qualified program name only if the basename # would not resolve to it. if eval \$emacs_tried_$ac_prog; then @@ -121,7 +121,8 @@ esac eval emacs_tried_$ac_prog=:]]) fi]) -$ac_path_MAKE_found || { AC_MSG_ERROR([[Building Emacs requires GNU Make. +$ac_path_MAKE_found || { +AC_MSG_ERROR([[Building Emacs requires GNU Make, at least version 3.81. If you have it installed under another name, configure with 'MAKE=...'. For example, run '$0 MAKE=gnu-make'.]]) } === modified file 'etc/NEWS' --- etc/NEWS 2014-06-08 23:41:43 +0000 +++ etc/NEWS 2014-06-11 03:03:40 +0000 @@ -27,7 +27,7 @@ +++ ** Building Emacs now requires C99 or later. -** Building Emacs now requires GNU make. +** Building Emacs now requires GNU make, version 3.81 or later. ** By default, Emacs no longer works on IRIX. We expect that Emacs users are not affected by this, as SGI stopped supporting IRIX in ------------------------------------------------------------ revno: 117303 committer: Paul Eggert branch nick: trunk timestamp: Tue 2014-06-10 12:43:13 -0700 message: Rely on AC_CANONICAL_HOST to detect whether we're using mingw. See the thread containing: http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00206.html * configure.ac (AC_CANONICAL_HOST): Invoke this as early as we can, which is just after AM_INIT_AUTOMAKE. Then check for mingw just after that. diff: === modified file 'ChangeLog' --- ChangeLog 2014-06-10 02:15:49 +0000 +++ ChangeLog 2014-06-10 19:43:13 +0000 @@ -1,3 +1,12 @@ +2014-06-10 Paul Eggert + + Rely on AC_CANONICAL_HOST to detect whether we're using mingw. + See the thread containing: + http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00206.html + * configure.ac (AC_CANONICAL_HOST): Invoke this as early as we + can, which is just after AM_INIT_AUTOMAKE. Then check for mingw + just after that. + 2014-06-10 Glenn Morris * Makefile.in (AUTOCONF, AUTOMAKE, AUTOHEADER, ACLOCAL): === modified file 'configure.ac' --- configure.ac 2014-06-10 02:11:38 +0000 +++ configure.ac 2014-06-10 19:43:13 +0000 @@ -25,22 +25,6 @@ dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. AC_INIT(GNU Emacs, 24.4.50, bug-gnu-emacs@gnu.org) -dnl We get MINGW64 with MSYS2 -if test "x$MSYSTEM" = "xMINGW32" -o "x$MSYSTEM" = "xMINGW64" -then - . $srcdir/nt/mingw-cfg.site - - case $srcdir in - /* | ?:*) - # srcdir is an absolute path. In this case, force the format - # "/c/foo/bar", to simplify later conversions to native Windows - # format ("c:/foo/bar") - srcdir=`cd "${srcdir}" && pwd -W` - srcdir="/${srcdir:0:1}${srcdir:2}" - ;; - esac -fi - dnl Set emacs_config_options to the options of 'configure', quoted for the shell, dnl and then quoted again for a C string. Separate options with spaces. dnl Add some environment variables, if they were passed via the environment @@ -146,6 +130,27 @@ dnl Fairly arbitrary, older versions might work too. AM_INIT_AUTOMAKE(1.11) +dnl Canonicalize the configuration name. +AC_CANONICAL_HOST +canonical=$host +configuration=${host_alias-${build_alias-$host}} + +dnl We get MINGW64 with MSYS2. +case $canonical in + *-mingw*) + . $srcdir/nt/mingw-cfg.site + + case $srcdir in + /* | ?:*) + # srcdir is an absolute path. In this case, force the format + # "/c/foo/bar", to simplify later conversions to native Windows + # format ("c:/foo/bar"). + srcdir=`cd "${srcdir}" && pwd -W` + srcdir="/${srcdir:0:1}${srcdir:2}" + ;; + esac;; +esac + dnl Support for --program-prefix, --program-suffix and dnl --program-transform-name options AC_ARG_PROGRAM @@ -489,12 +494,6 @@ [Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])], [ac_enable_gtk_deprecation_warnings="${enableval}"],[]) -### Canonicalize the configuration name. - -AC_CANONICAL_HOST -canonical=$host -configuration=${host_alias-${build_alias-$host}} - dnl This used to use changequote, but, apart from `changequote is evil' dnl per the autoconf manual, we can speed up autoconf somewhat by quoting dnl the great gob of text. Thus it's not processed for possible expansion. ------------------------------------------------------------ revno: 117302 committer: Dmitry Antipov branch nick: trunk timestamp: Tue 2014-06-10 09:28:00 +0400 message: * frame.h (window_system_available) [!HAVE_WINDOW_SYSTEM]: Always false. * frame.c (window_system_available) [HAVE_WINDOW_SYSTEM]: Now here. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-10 04:55:03 +0000 +++ src/ChangeLog 2014-06-10 05:28:00 +0000 @@ -22,6 +22,9 @@ * w32term.c (w32_read_socket, w32_initialize): * xterm.c (handle_one_xevent, x_initialize): Adjust users. + * frame.h (window_system_available) [!HAVE_WINDOW_SYSTEM]: Always false. + * frame.c (window_system_available) [HAVE_WINDOW_SYSTEM]: Now here. + 2014-06-09 Paul Eggert Say (accept-process-output P)'s result pertains to P if P is non-nil. === modified file 'src/frame.c' --- src/frame.c 2014-06-10 04:55:03 +0000 +++ src/frame.c 2014-06-10 05:28:00 +0000 @@ -162,19 +162,16 @@ return XFRAME (frame); } +#ifdef HAVE_WINDOW_SYSTEM + bool window_system_available (struct frame *f) { - if (f) - return FRAME_WINDOW_P (f) || FRAME_MSDOS_P (f); - else -#ifdef HAVE_WINDOW_SYSTEM - return x_display_list != NULL; -#else - return 0; -#endif + return f ? FRAME_WINDOW_P (f) || FRAME_MSDOS_P (f) : x_display_list != NULL; } +#endif /* HAVE_WINDOW_SYSTEM */ + struct frame * decode_window_system_frame (Lisp_Object frame) { === modified file 'src/frame.h' --- src/frame.h 2014-06-10 04:55:03 +0000 +++ src/frame.h 2014-06-10 05:28:00 +0000 @@ -997,8 +997,10 @@ extern struct frame *make_frame_without_minibuffer (Lisp_Object, struct kboard *, Lisp_Object); -#endif /* HAVE_WINDOW_SYSTEM */ extern bool window_system_available (struct frame *); +#else /* not HAVE_WINDOW_SYSTEM */ +#define window_system_available(f) ((void) (f), false) +#endif /* HAVE_WINDOW_SYSTEM */ extern void check_window_system (struct frame *); extern void frame_make_pointer_invisible (struct frame *); extern void frame_make_pointer_visible (struct frame *); ------------------------------------------------------------ revno: 117301 committer: Dmitry Antipov branch nick: trunk timestamp: Tue 2014-06-10 08:55:03 +0400 message: * dispextern.h (last_tool_bar_item): Remove declaration. * frame.h (struct frame): New member last_tool_bar_item. * frame.c (make_frame): Initialize it. * xdisp.c (toplevel): Remove last_tool_bar_item. (handle_tool_bar_click, note_tool_bar_highlight): * w32term.c (w32_read_socket, w32_initialize): * xterm.c (handle_one_xevent, x_initialize): Adjust users. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-10 03:32:36 +0000 +++ src/ChangeLog 2014-06-10 04:55:03 +0000 @@ -14,6 +14,14 @@ * xftfont.c (xftfont_prepare_face): Likewise. Use xmalloc. (xftfont_done_face): Use xfree. + * dispextern.h (last_tool_bar_item): Remove declaration. + * frame.h (struct frame): New member last_tool_bar_item. + * frame.c (make_frame): Initialize it. + * xdisp.c (toplevel): Remove last_tool_bar_item. + (handle_tool_bar_click, note_tool_bar_highlight): + * w32term.c (w32_read_socket, w32_initialize): + * xterm.c (handle_one_xevent, x_initialize): Adjust users. + 2014-06-09 Paul Eggert Say (accept-process-output P)'s result pertains to P if P is non-nil. === modified file 'src/dispextern.h' --- src/dispextern.h 2014-06-10 03:32:36 +0000 +++ src/dispextern.h 2014-06-10 04:55:03 +0000 @@ -3194,7 +3194,6 @@ extern Lisp_Object help_echo_string, help_echo_window; extern Lisp_Object help_echo_object, previous_help_echo_string; extern ptrdiff_t help_echo_pos; -extern int last_tool_bar_item; extern void reseat_at_previous_visible_line_start (struct it *); extern Lisp_Object lookup_glyphless_char_display (int, struct it *); extern ptrdiff_t compute_display_string_pos (struct text_pos *, === modified file 'src/frame.c' --- src/frame.c 2014-06-08 18:27:22 +0000 +++ src/frame.c 2014-06-10 04:55:03 +0000 @@ -352,6 +352,9 @@ f->line_height = 1; /* !FRAME_WINDOW_P value. */ #ifdef HAVE_WINDOW_SYSTEM f->want_fullscreen = FULLSCREEN_NONE; +#if ! defined (USE_GTK) && ! defined (HAVE_NS) + f->last_tool_bar_item = -1; +#endif #endif root_window = make_window (); === modified file 'src/frame.h' --- src/frame.h 2014-05-29 04:47:01 +0000 +++ src/frame.h 2014-06-10 04:55:03 +0000 @@ -164,6 +164,11 @@ /* Cache of realized faces. */ struct face_cache *face_cache; +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) + /* Tool-bar item index of the item on which a mouse button was pressed. */ + int last_tool_bar_item; +#endif + /* Number of elements in `menu_bar_vector' that have meaningful data. */ int menu_bar_items_used; === modified file 'src/w32term.c' --- src/w32term.c 2014-06-10 03:13:41 +0000 +++ src/w32term.c 2014-06-10 04:55:03 +0000 @@ -4536,10 +4536,11 @@ Emacs events should reflect only motion after the ButtonPress. */ if (f != 0) - f->mouse_moved = 0; - - if (!tool_bar_p) - last_tool_bar_item = -1; + { + f->mouse_moved = 0; + if (!tool_bar_p) + f->last_tool_bar_item = -1; + } } break; } @@ -4564,9 +4565,9 @@ should reflect only motion after the ButtonPress. */ f->mouse_moved = 0; + f->last_tool_bar_item = -1; } dpyinfo->last_mouse_frame = f; - last_tool_bar_item = -1; } break; @@ -6454,7 +6455,6 @@ &w32_use_visible_system_caret, 0)) w32_use_visible_system_caret = 0; - last_tool_bar_item = -1; any_help_event_p = 0; /* Initialize input mode: interrupt_input off, no flow control, allow === modified file 'src/xdisp.c' --- src/xdisp.c 2014-06-10 03:13:41 +0000 +++ src/xdisp.c 2014-06-10 04:55:03 +0000 @@ -11806,11 +11806,6 @@ #ifdef HAVE_WINDOW_SYSTEM -/* Tool-bar item index of the item on which a mouse button was pressed - or -1. */ - -int last_tool_bar_item; - /* Select `frame' temporarily without running all the code in do_switch_frame. FIXME: Maybe do_switch_frame should be trimmed down similarly @@ -12612,7 +12607,7 @@ where the button was pressed, disregarding where it was released. */ if (NILP (Vmouse_highlight) && !down_p) - prop_idx = last_tool_bar_item; + prop_idx = f->last_tool_bar_item; /* If item is disabled, do nothing. */ enabled_p = AREF (f->tool_bar_items, prop_idx + TOOL_BAR_ITEM_ENABLED_P); @@ -12624,7 +12619,7 @@ /* Show item in pressed state. */ if (!NILP (Vmouse_highlight)) show_mouse_face (hlinfo, DRAW_IMAGE_SUNKEN); - last_tool_bar_item = prop_idx; + f->last_tool_bar_item = prop_idx; } else { @@ -12649,7 +12644,7 @@ event.arg = key; event.modifiers = modifiers; kbd_buffer_store_event (&event); - last_tool_bar_item = -1; + f->last_tool_bar_item = -1; } } @@ -12699,8 +12694,7 @@ mouse_down_p = (x_mouse_grabbed (dpyinfo) && f == dpyinfo->last_mouse_frame); - if (mouse_down_p - && last_tool_bar_item != prop_idx) + if (mouse_down_p && f->last_tool_bar_item != prop_idx) return; draw = mouse_down_p ? DRAW_IMAGE_SUNKEN : DRAW_IMAGE_RAISED; === modified file 'src/xterm.c' --- src/xterm.c 2014-06-10 03:13:41 +0000 +++ src/xterm.c 2014-06-10 04:55:03 +0000 @@ -6809,9 +6809,10 @@ { dpyinfo->grabbed |= (1 << event->xbutton.button); dpyinfo->last_mouse_frame = f; - - if (!tool_bar_p) - last_tool_bar_item = -1; +#if ! defined (USE_GTK) + if (f && !tool_bar_p) + f->last_tool_bar_item = -1; +#endif /* not USE_GTK */ } else dpyinfo->grabbed &= ~(1 << event->xbutton.button); @@ -10555,7 +10556,6 @@ baud_rate = 19200; x_noop_count = 0; - last_tool_bar_item = -1; any_help_event_p = 0; ignore_next_mouse_click_timeout = 0; ------------------------------------------------------------ revno: 117300 committer: Dmitry Antipov branch nick: trunk timestamp: Tue 2014-06-10 07:32:36 +0400 message: * dispextern.h (struct face) [HAVE_XFT]: Ifdef 'extra' member. * font.c (font_done_for_face): * xface.c (realize_non_ascii_face): Adjust user. * font.h (struct font_driver): Convert 'prepare_face' to return void because its return value is never used anyway. * xfont.c (xfont_prepare_face): Return void. * xftfont.c (xftfont_prepare_face): Likewise. Use xmalloc. (xftfont_done_face): Use xfree. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-10 03:13:41 +0000 +++ src/ChangeLog 2014-06-10 03:32:36 +0000 @@ -5,6 +5,15 @@ function. Also adjust comment. * fringe.c, w32term.c, xdisp.c, xterm.c: All users changed. + * dispextern.h (struct face) [HAVE_XFT]: Ifdef 'extra' member. + * font.c (font_done_for_face): + * xface.c (realize_non_ascii_face): Adjust user. + * font.h (struct font_driver): Convert 'prepare_face' to return + void because its return value is never used anyway. + * xfont.c (xfont_prepare_face): Return void. + * xftfont.c (xftfont_prepare_face): Likewise. Use xmalloc. + (xftfont_done_face): Use xfree. + 2014-06-09 Paul Eggert Say (accept-process-output P)'s result pertains to P if P is non-nil. === modified file 'src/dispextern.h' --- src/dispextern.h 2014-06-10 03:13:41 +0000 +++ src/dispextern.h 2014-06-10 03:32:36 +0000 @@ -1716,8 +1716,10 @@ attributes except the font. */ struct face *ascii_face; +#ifdef HAVE_XFT /* Extra member that a font-driver uses privately. */ void *extra; +#endif }; === modified file 'src/font.c' --- src/font.c 2014-05-19 07:54:39 +0000 +++ src/font.c 2014-06-10 03:32:36 +0000 @@ -3337,7 +3337,6 @@ { if (face->font->driver->done_face) face->font->driver->done_face (f, face); - face->extra = NULL; } === modified file 'src/font.h' --- src/font.h 2014-06-08 18:27:22 +0000 +++ src/font.h 2014-06-10 03:32:36 +0000 @@ -564,11 +564,9 @@ /* Close FONT. NOTE: this can be called by GC. */ void (*close) (struct font *font); - /* Optional (if FACE->extra is not used). - Prepare FACE for displaying characters by FONT on frame F by - storing some data in FACE->extra. If successful, return 0. - Otherwise, return -1. */ - int (*prepare_face) (struct frame *f, struct face *face); + /* Prepare FACE for displaying characters by FONT on frame F by + storing some data in FACE->extra. */ + void (*prepare_face) (struct frame *f, struct face *face); /* Optional. Done FACE for displaying characters by FACE->font on frame F. */ === modified file 'src/xfaces.c' --- src/xfaces.c 2014-06-10 03:13:41 +0000 +++ src/xfaces.c 2014-06-10 03:32:36 +0000 @@ -5483,7 +5483,6 @@ face = xmalloc (sizeof *face); *face = *base_face; face->gc = 0; - face->extra = NULL; face->overstrike = (! NILP (font_object) && FONT_WEIGHT_NAME_NUMERIC (face->lface[LFACE_WEIGHT_INDEX]) > 100 === modified file 'src/xfont.c' --- src/xfont.c 2014-03-03 08:27:58 +0000 +++ src/xfont.c 2014-06-10 03:32:36 +0000 @@ -121,7 +121,7 @@ static Lisp_Object xfont_list_family (struct frame *); static Lisp_Object xfont_open (struct frame *, Lisp_Object, int); static void xfont_close (struct font *); -static int xfont_prepare_face (struct frame *, struct face *); +static void xfont_prepare_face (struct frame *, struct face *); static int xfont_has_char (Lisp_Object, int); static unsigned xfont_encode_char (struct font *, int); static int xfont_text_extents (struct font *, unsigned *, int, @@ -916,15 +916,13 @@ } } -static int +static void xfont_prepare_face (struct frame *f, struct face *face) { block_input (); XSetFont (FRAME_X_DISPLAY (f), face->gc, ((struct xfont_info *) face->font)->xfont->fid); unblock_input (); - - return 0; } static int === modified file 'src/xftfont.c' --- src/xftfont.c 2014-03-03 08:27:58 +0000 +++ src/xftfont.c 2014-06-10 03:32:36 +0000 @@ -507,7 +507,7 @@ } } -static int +static void xftfont_prepare_face (struct frame *f, struct face *face) { struct xftface_info *xftface_info; @@ -517,17 +517,14 @@ if (face != face->ascii_face) { face->extra = face->ascii_face->extra; - return 0; + return; } #endif - xftface_info = malloc (sizeof *xftface_info); - if (! xftface_info) - return -1; + xftface_info = xmalloc (sizeof *xftface_info); xftfont_get_colors (f, face, face->gc, NULL, &xftface_info->xft_fg, &xftface_info->xft_bg); face->extra = xftface_info; - return 0; } static void @@ -545,7 +542,7 @@ xftface_info = (struct xftface_info *) face->extra; if (xftface_info) { - free (xftface_info); + xfree (xftface_info); face->extra = NULL; } } ------------------------------------------------------------ revno: 117299 committer: Dmitry Antipov branch nick: trunk timestamp: Tue 2014-06-10 07:13:41 +0400 message: * dispextern.h (PREPARE_FACE_FOR_DISPLAY): Remove as a duplicate of ... * xfaces.c (prepare_face_for_display) [HAVE_WINDOW_SYSTEM]: ... this function. Also adjust comment. * fringe.c, w32term.c, xdisp.c, xterm.c: All users changed. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-09 20:31:06 +0000 +++ src/ChangeLog 2014-06-10 03:13:41 +0000 @@ -1,3 +1,10 @@ +2014-06-10 Dmitry Antipov + + * dispextern.h (PREPARE_FACE_FOR_DISPLAY): Remove as a duplicate of ... + * xfaces.c (prepare_face_for_display) [HAVE_WINDOW_SYSTEM]: ... this + function. Also adjust comment. + * fringe.c, w32term.c, xdisp.c, xterm.c: All users changed. + 2014-06-09 Paul Eggert Say (accept-process-output P)'s result pertains to P if P is non-nil. === modified file 'src/dispextern.h' --- src/dispextern.h 2014-06-08 18:27:22 +0000 +++ src/dispextern.h 2014-06-10 03:13:41 +0000 @@ -1795,16 +1795,6 @@ bool_bf menu_face_changed_p : 1; }; - -/* Prepare face FACE for use on frame F. This must be called before - using X resources of FACE. */ - -#define PREPARE_FACE_FOR_DISPLAY(F, FACE) \ - do { \ - if ((FACE)->gc == 0) \ - prepare_face_for_display ((F), (FACE)); \ - } while (false) - /* Return a pointer to the face with ID on frame F, or null if such a face doesn't exist. */ @@ -3354,7 +3344,9 @@ enum lface_attribute_index); char *choose_face_font (struct frame *, Lisp_Object *, Lisp_Object, int *); +#ifdef HAVE_WINDOW_SYSTEM void prepare_face_for_display (struct frame *, struct face *); +#endif int lookup_named_face (struct frame *, Lisp_Object, int); int lookup_basic_face (struct frame *, int); int smaller_face (struct frame *, int, int); === modified file 'src/fringe.c' --- src/fringe.c 2014-06-08 18:27:22 +0000 +++ src/fringe.c 2014-06-10 03:13:41 +0000 @@ -634,7 +634,7 @@ return; } - PREPARE_FACE_FOR_DISPLAY (f, p.face); + prepare_face_for_display (f, p.face); /* Clear left fringe if no bitmap to draw or if bitmap doesn't fill the fringe. */ === modified file 'src/w32term.c' --- src/w32term.c 2014-06-04 14:59:09 +0000 +++ src/w32term.c 2014-06-10 03:13:41 +0000 @@ -1000,7 +1000,7 @@ else face_id = FACE_FOR_CHAR (s->f, face, 0, -1, Qnil); s->face = FACE_FROM_ID (s->f, face_id); - PREPARE_FACE_FOR_DISPLAY (s->f, s->face); + prepare_face_for_display (s->f, s->face); /* If font in this face is same as S->font, use it. */ if (s->font == s->face->font) @@ -1050,7 +1050,7 @@ static inline void x_set_glyph_string_gc (struct glyph_string *s) { - PREPARE_FACE_FOR_DISPLAY (s->f, s->face); + prepare_face_for_display (s->f, s->face); if (s->hl == DRAW_NORMAL_TEXT) { === modified file 'src/xdisp.c' --- src/xdisp.c 2014-06-08 18:27:22 +0000 +++ src/xdisp.c 2014-06-10 03:13:41 +0000 @@ -23680,7 +23680,7 @@ #endif { eassert (face != NULL); - PREPARE_FACE_FOR_DISPLAY (f, face); + prepare_face_for_display (f, face); } return face; @@ -23703,7 +23703,7 @@ /* Make sure X resources of the face are allocated. */ eassert (face != NULL); - PREPARE_FACE_FOR_DISPLAY (f, face); + prepare_face_for_display (f, face); if (two_byte_p) *two_byte_p = 0; @@ -24020,7 +24020,7 @@ s->ybase += voffset; /* The case that face->gc == 0 is handled when drawing the glyph - string by calling PREPARE_FACE_FOR_DISPLAY. */ + string by calling prepare_face_for_display. */ eassert (s->face); return glyph - s->row->glyphs[s->area]; } @@ -24969,7 +24969,7 @@ face = FACE_FROM_ID (it->f, it->face_id); eassert (face); /* Make sure X resources of the face is loaded. */ - PREPARE_FACE_FOR_DISPLAY (it->f, face); + prepare_face_for_display (it->f, face); if (it->image_id < 0) { @@ -25247,7 +25247,7 @@ { struct face *face = FACE_FROM_ID (it->f, it->face_id); font = face->font ? face->font : FRAME_FONT (it->f); - PREPARE_FACE_FOR_DISPLAY (it->f, face); + prepare_face_for_display (it->f, face); } #endif @@ -25711,7 +25711,7 @@ face = FACE_FROM_ID (it->f, face_id); font = face->font ? face->font : FRAME_FONT (it->f); - PREPARE_FACE_FOR_DISPLAY (it->f, face); + prepare_face_for_display (it->f, face); if (it->glyphless_method == GLYPHLESS_DISPLAY_ACRONYM) { === modified file 'src/xfaces.c' --- src/xfaces.c 2014-06-08 18:27:22 +0000 +++ src/xfaces.c 2014-06-10 03:13:41 +0000 @@ -4098,15 +4098,15 @@ } } +#ifdef HAVE_WINDOW_SYSTEM -/* Prepare face FACE for subsequent display on frame F. This - allocated GCs if they haven't been allocated yet or have been freed - by clearing the face cache. */ +/* Prepare face FACE for subsequent display on frame F. This must be called + before using X resources of FACE to allocate GCs if they haven't been + allocated yet or have been freed by clearing the face cache. */ void prepare_face_for_display (struct frame *f, struct face *face) { -#ifdef HAVE_WINDOW_SYSTEM eassert (FRAME_WINDOW_P (f)); if (face->gc == 0) @@ -4134,10 +4134,10 @@ font_prepare_for_face (f, face); unblock_input (); } +} + #endif /* HAVE_WINDOW_SYSTEM */ -} - /* Returns the `distance' between the colors X and Y. */ static int === modified file 'src/xterm.c' --- src/xterm.c 2014-06-06 01:11:26 +0000 +++ src/xterm.c 2014-06-10 03:13:41 +0000 @@ -903,7 +903,7 @@ else face_id = FACE_FOR_CHAR (s->f, face, 0, -1, Qnil); s->face = FACE_FROM_ID (s->f, face_id); - PREPARE_FACE_FOR_DISPLAY (s->f, s->face); + prepare_face_for_display (s->f, s->face); if (s->font == s->face->font) s->gc = s->face->gc; @@ -951,7 +951,7 @@ static void x_set_glyph_string_gc (struct glyph_string *s) { - PREPARE_FACE_FOR_DISPLAY (s->f, s->face); + prepare_face_for_display (s->f, s->face); if (s->hl == DRAW_NORMAL_TEXT) { ------------------------------------------------------------ revno: 117298 committer: Glenn Morris branch nick: trunk timestamp: Mon 2014-06-09 22:20:31 -0400 message: Add .info extension to @setfilename commands in doc/ This makes no difference to anything, since we always use makeinfo -o, but it makes automake happier, if we ever decide to use that. diff: === modified file 'doc/emacs/emacs-xtra.texi' --- doc/emacs/emacs-xtra.texi 2014-05-07 17:34:53 +0000 +++ doc/emacs/emacs-xtra.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @comment %**start of header -@setfilename ../../info/emacs-xtra +@setfilename ../../info/emacs-xtra.info @settitle Specialized Emacs Features @c Merge all functions, variables, and keys into the concept index. @syncodeindex fn cp === modified file 'doc/emacs/emacs.texi' --- doc/emacs/emacs.texi 2014-06-08 00:35:27 +0000 +++ doc/emacs/emacs.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8 -*- -@setfilename ../../info/emacs +@setfilename ../../info/emacs.info @settitle GNU Emacs Manual @c The edition number appears in more than one place in this file === modified file 'doc/lispintro/emacs-lisp-intro.texi' --- doc/lispintro/emacs-lisp-intro.texi 2014-06-02 01:02:21 +0000 +++ doc/lispintro/emacs-lisp-intro.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @comment %**start of header -@setfilename ../../info/eintr +@setfilename ../../info/eintr.info @c setfilename emacs-lisp-intro.info @c sethtmlfilename emacs-lisp-intro.html @settitle Programming in Emacs Lisp === modified file 'doc/lispref/elisp.texi' --- doc/lispref/elisp.texi 2014-05-07 17:34:53 +0000 +++ doc/lispref/elisp.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename elisp +@setfilename ../../info/elisp.info @ifset VOL1 @set volflag === modified file 'doc/misc/ada-mode.texi' --- doc/misc/ada-mode.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/ada-mode.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo @c -*-texinfo-*- -@setfilename ../../info/ada-mode +@setfilename ../../info/ada-mode.info @settitle Ada Mode @documentencoding UTF-8 === modified file 'doc/misc/auth.texi' --- doc/misc/auth.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/auth.texi 2014-06-10 02:20:31 +0000 @@ -4,7 +4,7 @@ @set VERSION 0.3 -@setfilename ../../info/auth +@setfilename ../../info/auth.info @settitle Emacs auth-source Library @value{VERSION} @documentencoding UTF-8 === modified file 'doc/misc/autotype.texi' --- doc/misc/autotype.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/autotype.texi 2014-06-10 02:20:31 +0000 @@ -1,7 +1,7 @@ \input texinfo @c This is an annex of the Emacs manual. @c Author: Daniel Pfeiffer -@setfilename ../../info/autotype +@setfilename ../../info/autotype.info @c @node Autotypist, Picture, Abbrevs, Top @c @chapter Features for Automatic Typing @settitle Features for Automatic Typing === modified file 'doc/misc/bovine.texi' --- doc/misc/bovine.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/bovine.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename ../../info/bovine +@setfilename ../../info/bovine.info @set TITLE Bovine parser development @set AUTHOR Eric M. Ludlam, David Ponce, and Richard Y. Kim @settitle @value{TITLE} === modified file 'doc/misc/calc.texi' --- doc/misc/calc.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/calc.texi 2014-06-10 02:20:31 +0000 @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @comment %**start of header (This is for running Texinfo on a region.) @c smallbook -@setfilename ../../info/calc +@setfilename ../../info/calc.info @c [title] @settitle GNU Emacs Calc Manual @documentencoding UTF-8 === modified file 'doc/misc/cc-mode.texi' --- doc/misc/cc-mode.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/cc-mode.texi 2014-06-10 02:20:31 +0000 @@ -81,7 +81,7 @@ @comment No overfull hbox marks in the dvi file. @finalout -@setfilename ../../info/ccmode +@setfilename ../../info/ccmode.info @settitle CC Mode Manual @documentencoding UTF-8 @footnotestyle end === modified file 'doc/misc/cl.texi' --- doc/misc/cl.texi 2014-05-20 00:59:36 +0000 +++ doc/misc/cl.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo @c -*-texinfo-*- -@setfilename ../../info/cl +@setfilename ../../info/cl.info @settitle Common Lisp Extensions @documentencoding UTF-8 @include emacsver.texi === modified file 'doc/misc/dbus.texi' --- doc/misc/dbus.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/dbus.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo @c -*-texinfo-*- -@setfilename ../../info/dbus +@setfilename ../../info/dbus.info @c %**start of header @settitle Using of D-Bus @documentencoding UTF-8 === modified file 'doc/misc/dired-x.texi' --- doc/misc/dired-x.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/dired-x.texi 2014-06-10 02:20:31 +0000 @@ -7,7 +7,7 @@ @c [Dodd's address no longer valid.] @comment %**start of header (This is for running Texinfo on a region.) -@setfilename ../../info/dired-x +@setfilename ../../info/dired-x.info @settitle Dired Extra User's Manual @documentencoding UTF-8 === modified file 'doc/misc/ebrowse.texi' --- doc/misc/ebrowse.texi 2014-06-08 06:57:15 +0000 +++ doc/misc/ebrowse.texi 2014-06-10 02:20:31 +0000 @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @comment %**start of header -@setfilename ../../info/ebrowse +@setfilename ../../info/ebrowse.info @settitle A Class Browser for C++ @documentencoding UTF-8 @setchapternewpage odd === modified file 'doc/misc/ede.texi' --- doc/misc/ede.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/ede.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo -@setfilename ../../info/ede +@setfilename ../../info/ede.info @settitle Emacs Development Environment @documentencoding UTF-8 === modified file 'doc/misc/ediff.texi' --- doc/misc/ediff.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/ediff.texi 2014-06-10 02:20:31 +0000 @@ -7,7 +7,7 @@ @comment Using ediff.info instead of ediff in setfilename breaks DOS. @comment @setfilename ediff @comment @setfilename ediff.info -@setfilename ../../info/ediff +@setfilename ../../info/ediff.info @settitle Ediff User's Manual @documentencoding UTF-8 === modified file 'doc/misc/edt.texi' --- doc/misc/edt.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/edt.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo -@setfilename ../../info/edt +@setfilename ../../info/edt.info @settitle EDT Emulation for Emacs @documentencoding UTF-8 === modified file 'doc/misc/efaq-w32.texi' --- doc/misc/efaq-w32.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/efaq-w32.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo @c -*-coding:utf-8 -*- -@setfilename efaq-w32 +@setfilename ../../info/efaq-w32.info @settitle GNU Emacs FAQ For MS Windows @setchapternewpage odd @syncodeindex pg cp === modified file 'doc/misc/efaq.texi' --- doc/misc/efaq.texi 2014-06-08 23:41:43 +0000 +++ doc/misc/efaq.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*- mode: texinfo; -*- @c %**start of header -@setfilename ../../info/efaq +@setfilename ../../info/efaq.info @settitle GNU Emacs FAQ @documentencoding UTF-8 @c %**end of header === modified file 'doc/misc/eieio.texi' --- doc/misc/eieio.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/eieio.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo -@setfilename ../../info/eieio +@setfilename ../../info/eieio.info @set TITLE Enhanced Implementation of Emacs Interpreted Objects @set AUTHOR Eric M. Ludlam @settitle @value{TITLE} === modified file 'doc/misc/emacs-gnutls.texi' --- doc/misc/emacs-gnutls.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/emacs-gnutls.texi 2014-06-10 02:20:31 +0000 @@ -2,7 +2,7 @@ @set VERSION 0.3 -@setfilename ../../info/emacs-gnutls +@setfilename ../../info/emacs-gnutls.info @settitle Emacs GnuTLS Integration @value{VERSION} @documentencoding UTF-8 === modified file 'doc/misc/emacs-mime.texi' --- doc/misc/emacs-mime.texi 2014-05-08 03:41:21 +0000 +++ doc/misc/emacs-mime.texi 2014-06-10 02:20:31 +0000 @@ -2,7 +2,7 @@ @include gnus-overrides.texi -@setfilename ../../info/emacs-mime +@setfilename ../../info/emacs-mime.info @settitle Emacs MIME Manual @synindex fn cp @synindex vr cp === modified file 'doc/misc/epa.texi' --- doc/misc/epa.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/epa.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*- mode: texinfo -*- @c %**start of header -@setfilename ../../info/epa +@setfilename ../../info/epa.info @settitle EasyPG Assistant User's Manual @documentencoding UTF-8 @c %**end of header === modified file 'doc/misc/erc.texi' --- doc/misc/erc.texi 2014-06-08 06:57:15 +0000 +++ doc/misc/erc.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c %**start of header -@setfilename ../../info/erc +@setfilename ../../info/erc.info @settitle ERC Manual @syncodeindex fn cp @include emacsver.texi === modified file 'doc/misc/ert.texi' --- doc/misc/ert.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/ert.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c %**start of header -@setfilename ../../info/ert +@setfilename ../../info/ert.info @settitle Emacs Lisp Regression Testing @documentencoding UTF-8 @c %**end of header === modified file 'doc/misc/eshell.texi' --- doc/misc/eshell.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/eshell.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename ../../info/eshell +@setfilename ../../info/eshell.info @settitle Eshell: The Emacs Shell @defindex cm @synindex vr fn === modified file 'doc/misc/eudc.texi' --- doc/misc/eudc.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/eudc.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo.tex @c %**start of header -@setfilename ../../info/eudc +@setfilename ../../info/eudc.info @settitle Emacs Unified Directory Client (EUDC) Manual @afourpaper @documentencoding UTF-8 === modified file 'doc/misc/eww.texi' --- doc/misc/eww.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/eww.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename ../../info/eww +@setfilename ../../info/eww.info @settitle Emacs Web Wowser @documentencoding UTF-8 @c %**end of header === modified file 'doc/misc/flymake.texi' --- doc/misc/flymake.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/flymake.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @comment %**start of header -@setfilename ../../info/flymake +@setfilename ../../info/flymake.info @set VERSION 0.3 @set UPDATED April 2004 @settitle GNU Flymake @value{VERSION} === modified file 'doc/misc/forms.texi' --- doc/misc/forms.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/forms.texi 2014-06-10 02:20:31 +0000 @@ -3,7 +3,7 @@ @c Written by Johan Vromans, and edited by Richard Stallman @comment %**start of header (This is for running Texinfo on a region.) -@setfilename ../../info/forms +@setfilename ../../info/forms.info @settitle Forms Mode User's Manual @syncodeindex vr cp @syncodeindex fn cp === modified file 'doc/misc/gnus-coding.texi' --- doc/misc/gnus-coding.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/gnus-coding.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo -@setfilename gnus-coding +@setfilename gnus-coding.info @settitle Gnus Coding Style and Maintenance Guide @documentencoding UTF-8 @syncodeindex fn cp === modified file 'doc/misc/gnus.texi' --- doc/misc/gnus.texi 2014-06-08 23:41:43 +0000 +++ doc/misc/gnus.texi 2014-06-10 02:20:31 +0000 @@ -2,7 +2,7 @@ @include gnus-overrides.texi -@setfilename ../../info/gnus +@setfilename ../../info/gnus.info @settitle Gnus Manual @syncodeindex fn cp @syncodeindex vr cp === modified file 'doc/misc/htmlfontify.texi' --- doc/misc/htmlfontify.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/htmlfontify.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @comment %**start of header -@setfilename ../../info/htmlfontify +@setfilename ../../info/htmlfontify.info @settitle Htmlfontify User Manual @exampleindent 2 @documentencoding UTF-8 === modified file 'doc/misc/idlwave.texi' --- doc/misc/idlwave.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/idlwave.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename ../../info/idlwave +@setfilename ../../info/idlwave.info @settitle IDLWAVE User Manual @synindex ky cp @syncodeindex vr cp === modified file 'doc/misc/ido.texi' --- doc/misc/ido.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/ido.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo @c -*-texinfo-*- -@setfilename ../../info/ido +@setfilename ../../info/ido.info @settitle Interactive Do @documentencoding UTF-8 @include emacsver.texi === modified file 'doc/misc/mairix-el.texi' --- doc/misc/mairix-el.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/mairix-el.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo.tex -@setfilename ../../info/mairix-el +@setfilename ../../info/mairix-el.info @settitle Emacs Interface for Mairix @documentencoding UTF-8 === modified file 'doc/misc/message.texi' --- doc/misc/message.texi 2014-06-08 23:41:43 +0000 +++ doc/misc/message.texi 2014-06-10 02:20:31 +0000 @@ -2,7 +2,7 @@ @include gnus-overrides.texi -@setfilename ../../info/message +@setfilename ../../info/message.info @settitle Message Manual @documentencoding UTF-8 @synindex fn cp === modified file 'doc/misc/mh-e.texi' --- doc/misc/mh-e.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/mh-e.texi 2014-06-10 02:20:31 +0000 @@ -3,7 +3,7 @@ @c Note: This document requires makeinfo version 4.6 or greater to build. @c @c %**start of header -@setfilename ../../info/mh-e +@setfilename ../../info/mh-e.info @settitle The MH-E Manual @documentencoding UTF-8 @c %**end of header === modified file 'doc/misc/newsticker.texi' --- doc/misc/newsticker.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/newsticker.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @comment %**start of header -@setfilename ../../info/newsticker +@setfilename ../../info/newsticker.info @set VERSION 1.99 @set UPDATED June 2008 @settitle Newsticker @value{VERSION} === modified file 'doc/misc/nxml-mode.texi' --- doc/misc/nxml-mode.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/nxml-mode.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*- texinfo -*- @c %**start of header -@setfilename ../../info/nxml-mode +@setfilename ../../info/nxml-mode.info @settitle nXML Mode @documentencoding UTF-8 @c %**end of header === modified file 'doc/misc/octave-mode.texi' --- doc/misc/octave-mode.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/octave-mode.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename ../../info/octave-mode +@setfilename ../../info/octave-mode.info @settitle Octave Mode @documentencoding UTF-8 @c %**end of header === modified file 'doc/misc/org.texi' --- doc/misc/org.texi 2014-05-24 22:23:47 +0000 +++ doc/misc/org.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c %**start of header -@setfilename ../../info/org +@setfilename ../../info/org.info @settitle The Org Manual @set VERSION 8.2.6 === modified file 'doc/misc/pcl-cvs.texi' --- doc/misc/pcl-cvs.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/pcl-cvs.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename ../../info/pcl-cvs +@setfilename ../../info/pcl-cvs.info @settitle PCL-CVS---Emacs Front-End to CVS @syncodeindex vr fn @documentencoding UTF-8 === modified file 'doc/misc/pgg.texi' --- doc/misc/pgg.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/pgg.texi 2014-06-10 02:20:31 +0000 @@ -2,7 +2,7 @@ @include gnus-overrides.texi -@setfilename ../../info/pgg +@setfilename ../../info/pgg.info @set VERSION 0.1 @settitle PGG @value{VERSION} === modified file 'doc/misc/rcirc.texi' --- doc/misc/rcirc.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/rcirc.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c %**start of header -@setfilename ../../info/rcirc +@setfilename ../../info/rcirc.info @settitle rcirc Manual @documentencoding UTF-8 @c %**end of header === modified file 'doc/misc/reftex.texi' --- doc/misc/reftex.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/reftex.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename ../../info/reftex +@setfilename ../../info/reftex.info @settitle RefTeX User Manual @documentencoding UTF-8 @synindex ky cp === modified file 'doc/misc/remember.texi' --- doc/misc/remember.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/remember.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename ../../info/remember +@setfilename ../../info/remember.info @settitle Remember Manual @syncodeindex fn cp @documentencoding UTF-8 === modified file 'doc/misc/sasl.texi' --- doc/misc/sasl.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/sasl.texi 2014-06-10 02:20:31 +0000 @@ -2,7 +2,7 @@ @include gnus-overrides.texi -@setfilename ../../info/sasl +@setfilename ../../info/sasl.info @set VERSION 0.2 @settitle Emacs SASL Library @value{VERSION} === modified file 'doc/misc/sc.texi' --- doc/misc/sc.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/sc.texi 2014-06-10 02:20:31 +0000 @@ -1,7 +1,7 @@ \input texinfo @comment -*-texinfo-*- @comment 3.48 @comment %**start of header (This is for running Texinfo on a region.) -@setfilename ../../info/sc +@setfilename ../../info/sc.info @settitle Supercite User's Manual @documentencoding UTF-8 @iftex === modified file 'doc/misc/semantic.texi' --- doc/misc/semantic.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/semantic.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo -@setfilename ../../info/semantic +@setfilename ../../info/semantic.info @set TITLE Semantic Manual @set AUTHOR Eric M. Ludlam, David Ponce, and Richard Y. Kim @settitle @value{TITLE} === modified file 'doc/misc/ses.texi' --- doc/misc/ses.texi 2014-06-08 06:57:15 +0000 +++ doc/misc/ses.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*- mode: texinfo; coding: utf-8; -*- @c %**start of header -@setfilename ../../info/ses +@setfilename ../../info/ses.info @settitle @acronym{SES}: Simple Emacs Spreadsheet @setchapternewpage off @syncodeindex fn cp === modified file 'doc/misc/sieve.texi' --- doc/misc/sieve.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/sieve.texi 2014-06-10 02:20:31 +0000 @@ -2,7 +2,7 @@ @include gnus-overrides.texi -@setfilename ../../info/sieve +@setfilename ../../info/sieve.info @settitle Emacs Sieve Manual @documentencoding UTF-8 @synindex fn cp === modified file 'doc/misc/smtpmail.texi' --- doc/misc/smtpmail.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/smtpmail.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo @c -*-texinfo-*- -@setfilename ../../info/smtpmail +@setfilename ../../info/smtpmail.info @settitle Emacs SMTP Library @documentencoding UTF-8 @syncodeindex vr fn === modified file 'doc/misc/speedbar.texi' --- doc/misc/speedbar.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/speedbar.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo @c -*-texinfo-*- -@setfilename ../../info/speedbar +@setfilename ../../info/speedbar.info @settitle Speedbar: File/Tag summarizing utility @documentencoding UTF-8 @syncodeindex fn cp === modified file 'doc/misc/srecode.texi' --- doc/misc/srecode.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/srecode.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c %**start of header -@setfilename ../../info/srecode +@setfilename ../../info/srecode.info @set TITLE SRecoder Manual @set AUTHOR Eric M. Ludlam @settitle @value{TITLE} === modified file 'doc/misc/todo-mode.texi' --- doc/misc/todo-mode.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/todo-mode.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo.tex @c -*-texinfo-*- @c %**start of header -@setfilename ../../info/todo-mode +@setfilename ../../info/todo-mode.info @settitle Todo Mode User Manual @syncodeindex fn cp @syncodeindex vr cp === modified file 'doc/misc/tramp.texi' --- doc/misc/tramp.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/tramp.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo @c -*-texinfo-*- -@setfilename ../../info/tramp +@setfilename ../../info/tramp.info @c %**start of header @settitle TRAMP User Manual @documentencoding UTF-8 === modified file 'doc/misc/url.texi' --- doc/misc/url.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/url.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo -@setfilename ../../info/url +@setfilename ../../info/url.info @settitle URL Programmer's Manual @documentencoding UTF-8 === modified file 'doc/misc/vhdl-mode.texi' --- doc/misc/vhdl-mode.texi 2014-05-02 21:22:57 +0000 +++ doc/misc/vhdl-mode.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*- texinfo -*- -@setfilename ../../info/vhdl-mode +@setfilename ../../info/vhdl-mode.info @settitle VHDL Mode, an Emacs mode for editing VHDL code @documentencoding UTF-8 === modified file 'doc/misc/vip.texi' --- doc/misc/vip.texi 2014-06-08 23:41:43 +0000 +++ doc/misc/vip.texi 2014-06-10 02:20:31 +0000 @@ -1,5 +1,5 @@ \input texinfo -@setfilename ../../info/vip +@setfilename ../../info/vip.info @settitle VIP @documentencoding UTF-8 === modified file 'doc/misc/viper.texi' --- doc/misc/viper.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/viper.texi 2014-06-10 02:20:31 +0000 @@ -4,7 +4,7 @@ @comment Using viper.info instead of viper in setfilename breaks DOS. @comment @setfilename viper @comment @setfilename viper.info -@setfilename ../../info/viper +@setfilename ../../info/viper.info @documentencoding UTF-8 === modified file 'doc/misc/widget.texi' --- doc/misc/widget.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/widget.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo.tex @c %**start of header -@setfilename ../../info/widget +@setfilename ../../info/widget.info @settitle The Emacs Widget Library @syncodeindex fn cp @syncodeindex vr cp === modified file 'doc/misc/wisent.texi' --- doc/misc/wisent.texi 2014-06-08 23:39:23 +0000 +++ doc/misc/wisent.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename ../../info/wisent +@setfilename ../../info/wisent.info @set TITLE Wisent Parser Development @set AUTHOR Eric M. Ludlam, David Ponce, and Richard Y. Kim @settitle @value{TITLE} === modified file 'doc/misc/woman.texi' --- doc/misc/woman.texi 2014-06-08 06:57:15 +0000 +++ doc/misc/woman.texi 2014-06-10 02:20:31 +0000 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename ../../info/woman +@setfilename ../../info/woman.info @settitle WoMan: Browse Unix Manual Pages ``W.O. (without) Man'' @include emacsver.texi @afourpaper ------------------------------------------------------------ revno: 117297 committer: Glenn Morris branch nick: trunk timestamp: Mon 2014-06-09 22:15:49 -0400 message: * Makefile.in (AUTOCONF, AUTOMAKE, AUTOHEADER, ACLOCAL): New, set by configure Use throughout where appropriate. diff: === modified file 'ChangeLog' --- ChangeLog 2014-06-10 02:11:38 +0000 +++ ChangeLog 2014-06-10 02:15:49 +0000 @@ -1,5 +1,8 @@ 2014-06-10 Glenn Morris + * Makefile.in (AUTOCONF, AUTOMAKE, AUTOHEADER, ACLOCAL): + New, set by configure. Use throughout where appropriate. + * Makefile.in (INFO_EXT): Remove and replace by ".info" throughout. * configure.ac (INFO_EXT, INFO_OPTS): Remove output variables. === modified file 'Makefile.in' --- Makefile.in 2014-06-10 02:11:38 +0000 +++ Makefile.in 2014-06-10 02:15:49 +0000 @@ -76,6 +76,11 @@ cache_file = @cache_file@ CONFIGURE_FLAGS = --cache-file=$(cache_file) +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ +ACLOCAL = @ACLOCAL@ + CC=@CC@ CFLAGS=@CFLAGS@ LDFLAGS=@LDFLAGS@ @@ -422,17 +427,17 @@ AUTOCONF_INPUTS = $(srcdir)/configure.ac $(srcdir)/aclocal.m4 $(srcdir)/configure: $(AUTOCONF_INPUTS) - cd ${srcdir} && autoconf + cd ${srcdir} && ${AUTOCONF} ACLOCAL_PATH = @ACLOCAL_PATH@ ACLOCAL_INPUTS = $(srcdir)/configure.ac $(srcdir)/m4/gnulib-comp.m4 $(srcdir)/aclocal.m4: $(ACLOCAL_INPUTS) - cd $(srcdir) && ACLOCAL_PATH='$(ACLOCAL_PATH)' aclocal -I m4 + cd $(srcdir) && ACLOCAL_PATH='$(ACLOCAL_PATH)' $(ACLOCAL) -I m4 AUTOMAKE_INPUTS = $(srcdir)/aclocal.m4 $(srcdir)/lib/Makefile.am \ $(srcdir)/lib/gnulib.mk $(srcdir)/lib/Makefile.in: $(AUTOMAKE_INPUTS) - cd $(srcdir) && automake --gnu -a -c lib/Makefile + cd $(srcdir) && $(AUTOMAKE) --gnu -a -c lib/Makefile # Regenerate files that this makefile would have made, if this makefile # had been built by Automake. The name 'am--refresh' is for @@ -445,9 +450,9 @@ @ # because stamp-h.in has changed (since building stamp-h.in @ # refreshes config.in as well), but if config.in is missing @ # then we really need to do something more. - [ -r "$@" ] || ( cd ${srcdir} && autoheader ) + [ -r "$@" ] || ( cd ${srcdir} && ${AUTOHEADER} ) $(srcdir)/src/stamp-h.in: $(AUTOCONF_INPUTS) - cd ${srcdir} && autoheader + cd ${srcdir} && ${AUTOHEADER} rm -f $(srcdir)/src/stamp-h.in echo timestamp > $(srcdir)/src/stamp-h.in ------------------------------------------------------------ revno: 117296 committer: Glenn Morris branch nick: trunk timestamp: Mon 2014-06-09 22:11:38 -0400 message: Get rid of the INFO_EXT variable It's never been anything more than pointless complexity * configure.ac (INFO_EXT, INFO_OPTS): Remove output variables. * Makefile.in (INFO_EXT): Remove and replace by ".info" throughout. * doc/emacs/Makefile.in (INFO_EXT): Remove and replace by ".info" throughout. (INFO_OPTS): Set directly rather than with configure. * doc/lispintro/Makefile.in (INFO_EXT): Remove and replace by ".info" throughout. (INFO_OPTS): Set directly rather than with configure. * doc/lispref/Makefile.in (INFO_EXT): Remove and replace by ".info" throughout. (INFO_OPTS): Set directly rather than with configure. * doc/misc/Makefile.in (INFO_EXT): Remove and replace by ".info" throughout. (INFO_OPTS): Set directly rather than with configure. diff: === modified file 'ChangeLog' --- ChangeLog 2014-06-08 00:35:27 +0000 +++ ChangeLog 2014-06-10 02:11:38 +0000 @@ -1,3 +1,8 @@ +2014-06-10 Glenn Morris + + * Makefile.in (INFO_EXT): Remove and replace by ".info" throughout. + * configure.ac (INFO_EXT, INFO_OPTS): Remove output variables. + 2014-06-08 Paul Eggert Port better to AIX (Bug#17598). === modified file 'Makefile.in' --- Makefile.in 2014-05-03 16:27:17 +0000 +++ Makefile.in 2014-06-10 02:11:38 +0000 @@ -146,8 +146,7 @@ # Where to install and expect the info files describing Emacs. infodir=@infodir@ # Info files not in the doc/misc directory (we get those via make echo-info). -INFO_EXT=@INFO_EXT@ -INFO_NONMISC=emacs$(INFO_EXT) eintr$(INFO_EXT) elisp$(INFO_EXT) +INFO_NONMISC=emacs.info eintr.info elisp.info # If no makeinfo was found and configured --without-makeinfo, "no"; else "yes". HAVE_MAKEINFO=@HAVE_MAKEINFO@ === modified file 'configure.ac' --- configure.ac 2014-06-08 00:35:27 +0000 +++ configure.ac 2014-06-10 02:11:38 +0000 @@ -1113,12 +1113,6 @@ fi AC_SUBST(HAVE_MAKEINFO) -dnl Just so that there is only a single place we need to edit. -INFO_EXT=.info -INFO_OPTS=--no-split -AC_SUBST(INFO_EXT) -AC_SUBST(INFO_OPTS) - if test $opsys = mingw32; then DOCMISC_W32=efaq-w32 else === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2014-06-08 23:41:43 +0000 +++ doc/emacs/ChangeLog 2014-06-10 02:11:38 +0000 @@ -1,3 +1,8 @@ +2014-06-10 Glenn Morris + + * Makefile.in (INFO_EXT): Remove and replace by ".info" throughout. + (INFO_OPTS): Set directly rather than with configure. + 2014-06-08 Glenn Morris * entering.texi (Entering Emacs): Small fix re initial-buffer-choice. === modified file 'doc/emacs/Makefile.in' --- doc/emacs/Makefile.in 2014-04-17 01:35:20 +0000 +++ doc/emacs/Makefile.in 2014-06-10 02:11:38 +0000 @@ -54,12 +54,11 @@ HTML_OPTS = --no-split --html -INFO_EXT=@INFO_EXT@ # Options used only when making info output. # --no-split is only needed because of MS-DOS. # For a possible alternative, see # http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg01182.html -INFO_OPTS=@INFO_OPTS@ +INFO_OPTS= --no-split INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -153,7 +152,7 @@ .dvi.ps: $(DVIPS) -o $@ $< -info: $(buildinfodir)/emacs$(INFO_EXT) +info: $(buildinfodir)/emacs.info dvi: $(DVI_TARGETS) html: $(HTML_TARGETS) pdf: $(PDF_TARGETS) @@ -163,7 +162,7 @@ # There is no provision for Info files to exist in the build directory. # In a distribution of Emacs, the Info files should be up to date. # Note: "<" is not portable in ordinary make rules. -$(buildinfodir)/emacs$(INFO_EXT): ${EMACSSOURCES} +$(buildinfodir)/emacs.info: ${EMACSSOURCES} $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/emacs.texi @@ -200,9 +199,9 @@ ## In the standalone tarfile, the clean rule runs this. infoclean: rm -f \ - $(buildinfodir)/emacs$(INFO_EXT) \ - $(buildinfodir)/emacs$(INFO_EXT)-[1-9] \ - $(buildinfodir)/emacs$(INFO_EXT)-[1-9][0-9] + $(buildinfodir)/emacs.info \ + $(buildinfodir)/emacs.info-[1-9] \ + $(buildinfodir)/emacs.info-[1-9][0-9] maintainer-clean: distclean infoclean @@ -220,7 +219,6 @@ -e 's/^\(clean:.*\)/\1 infoclean/' \ -e "s/@ver[s]ion@/${version}/" \ -e 's/@MAKE[I]NFO@/makeinfo/' -e 's/@MK[D]IR_P@/mkdir -p/' \ - -e 's/@IN[F]O_EXT@/.info/' -e 's/@IN[F]O_OPTS@//' \ ${srcdir}/Makefile.in > emacs-manual-${version}/Makefile @if grep '@[a-zA-Z_]*@' emacs-manual-${version}/Makefile; then \ echo "Unexpanded configure variables in Makefile?" 1>&2; exit 1; \ === modified file 'doc/lispintro/ChangeLog' --- doc/lispintro/ChangeLog 2014-06-02 01:02:21 +0000 +++ doc/lispintro/ChangeLog 2014-06-10 02:11:38 +0000 @@ -1,3 +1,8 @@ +2014-06-10 Glenn Morris + + * Makefile.in (INFO_EXT): Remove and replace by ".info" throughout. + (INFO_OPTS): Set directly rather than with configure. + 2014-06-02 Glenn Morris * emacs-lisp-intro.texi (Autoload): Update loaddefs.el details. === modified file 'doc/lispintro/Makefile.in' --- doc/lispintro/Makefile.in 2014-04-17 01:35:20 +0000 +++ doc/lispintro/Makefile.in 2014-06-10 02:11:38 +0000 @@ -46,9 +46,8 @@ HTML_OPTS = --no-split --html -INFO_EXT=@INFO_EXT@ # Options used only when making info output. -INFO_OPTS=@INFO_OPTS@ +INFO_OPTS= --no-split INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -79,7 +78,7 @@ .dvi.ps: $(DVIPS) -o $@ $< -info: ${buildinfodir}/eintr$(INFO_EXT) +info: ${buildinfodir}/eintr.info dvi: $(DVI_TARGETS) html: $(HTML_TARGETS) @@ -89,7 +88,7 @@ # The file name eintr must fit within 5 characters, to allow for # -NN extensions to fit into DOS 8+3 limits without clashing. # Note: "<" is not portable in ordinary make rules. -${buildinfodir}/eintr$(INFO_EXT): ${srcs} +${buildinfodir}/eintr.info: ${srcs} $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/emacs-lisp-intro.texi @@ -117,8 +116,8 @@ infoclean: rm -f \ - $(buildinfodir)/eintr$(INFO_EXT) \ - $(buildinfodir)/eintr$(INFO_EXT)-[1-9] + $(buildinfodir)/eintr.info \ + $(buildinfodir)/eintr.info-[1-9] maintainer-clean: distclean infoclean @@ -136,7 +135,6 @@ -e 's/^\(clean:.*\)/\1 infoclean/' \ -e "s/@ver[s]ion@/${version}/" \ -e 's/@MAKE[I]NFO@/makeinfo/' -e 's/@MK[D]IR_P@/mkdir -p/' \ - -e 's/@IN[F]O_EXT@/.info/' -e 's/@IN[F]O_OPTS@//' \ ${srcdir}/Makefile.in > emacs-lispintro-${version}/Makefile @if grep '@[a-zA-Z_]*@' emacs-lispintro-${version}/Makefile; then \ echo "Unexpanded configure variables in Makefile?" 1>&2; exit 1; \ === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2014-06-09 20:31:06 +0000 +++ doc/lispref/ChangeLog 2014-06-10 02:11:38 +0000 @@ -1,3 +1,8 @@ +2014-06-10 Glenn Morris + + * Makefile.in (INFO_EXT): Remove and replace by ".info" throughout. + (INFO_OPTS): Set directly rather than with configure. + 2014-06-09 Paul Eggert Say (accept-process-output P)'s result pertains to P if P is non-nil. === modified file 'doc/lispref/Makefile.in' --- doc/lispref/Makefile.in 2014-04-17 01:35:20 +0000 +++ doc/lispref/Makefile.in 2014-06-10 02:11:38 +0000 @@ -49,9 +49,8 @@ HTML_OPTS = --no-split --html -INFO_EXT=@INFO_EXT@ # Options used only when making info output. -INFO_OPTS=@INFO_OPTS@ +INFO_OPTS= --no-split INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -134,14 +133,14 @@ .dvi.ps: $(DVIPS) -o $@ $< -info: $(buildinfodir)/elisp$(INFO_EXT) +info: $(buildinfodir)/elisp.info dvi: $(DVI_TARGETS) html: $(HTML_TARGETS) pdf: $(PDF_TARGETS) ps: $(PS_TARGETS) ## Note: "<" is not portable in ordinary make rules. -$(buildinfodir)/elisp$(INFO_EXT): $(srcs) +$(buildinfodir)/elisp.info: $(srcs) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ $(srcdir)/elisp.texi @@ -172,9 +171,9 @@ infoclean: rm -f \ - $(buildinfodir)/elisp$(INFO_EXT) \ - $(buildinfodir)/elisp$(INFO_EXT)-[1-9] \ - $(buildinfodir)/elisp$(INFO_EXT)-[1-9][0-9] + $(buildinfodir)/elisp.info \ + $(buildinfodir)/elisp.info-[1-9] \ + $(buildinfodir)/elisp.info-[1-9][0-9] maintainer-clean: distclean infoclean @@ -193,7 +192,6 @@ -e 's/^\(clean:.*\)/\1 infoclean/' \ -e "s/@ver[s]ion@/${version}/" \ -e 's/@MAKE[I]NFO@/makeinfo/' -e 's/@MK[D]IR_P@/mkdir -p/' \ - -e 's/@IN[F]O_EXT@/.info/' -e 's/@IN[F]O_OPTS@//' \ ${srcdir}/Makefile.in > emacs-lispref-${version}/Makefile @if grep '@[a-zA-Z_]*@' emacs-lispref-${version}/Makefile; then \ echo "Unexpanded configure variables in Makefile?" 1>&2; exit 1; \ === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2014-06-08 23:41:43 +0000 +++ doc/misc/ChangeLog 2014-06-10 02:11:38 +0000 @@ -1,3 +1,8 @@ +2014-06-10 Glenn Morris + + * Makefile.in (INFO_EXT): Remove and replace by ".info" throughout. + (INFO_OPTS): Set directly rather than with configure. + 2014-06-08 Karl Berry * doc/info.texi (Help-^L): "mode line", "screenful", === modified file 'doc/misc/Makefile.in' --- doc/misc/Makefile.in 2014-04-17 01:35:20 +0000 +++ doc/misc/Makefile.in 2014-06-10 02:11:38 +0000 @@ -47,9 +47,8 @@ HTML_OPTS = --no-split --html -INFO_EXT=@INFO_EXT@ # Options used only when making info output. -INFO_OPTS=@INFO_OPTS@ +INFO_OPTS= --no-split INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -117,7 +116,7 @@ ## Base file names of output info files. echo-info: @echo "$(INFO_INSTALL) " | \ - sed -e 's|[^ ]*/||g' -e 's/\.info//g' -e "s/ */$(INFO_EXT) /g" + sed -e 's|[^ ]*/||g' -e 's/\.info//g' -e "s/ */.info /g" dvi: $(DVI_TARGETS) @@ -134,8 +133,8 @@ # Note: "<" is not portable in ordinary make rules. ada_mode_deps = ${srcdir}/ada-mode.texi ${gfdl} -ada-mode : $(buildinfodir)/ada-mode$(INFO_EXT) -$(buildinfodir)/ada-mode$(INFO_EXT): $(ada_mode_deps) +ada-mode : $(buildinfodir)/ada-mode.info +$(buildinfodir)/ada-mode.info: $(ada_mode_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ada-mode.texi ada-mode.dvi: $(ada_mode_deps) @@ -146,8 +145,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ada-mode.texi auth_deps = ${srcdir}/auth.texi ${gfdl} -auth : $(buildinfodir)/auth$(INFO_EXT) -$(buildinfodir)/auth$(INFO_EXT): $(auth_deps) +auth : $(buildinfodir)/auth.info +$(buildinfodir)/auth.info: $(auth_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/auth.texi auth.dvi: $(auth_deps) @@ -158,8 +157,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/auth.texi autotype_deps = ${srcdir}/autotype.texi ${gfdl} -autotype : $(buildinfodir)/autotype$(INFO_EXT) -$(buildinfodir)/autotype$(INFO_EXT): $(autotype_deps) +autotype : $(buildinfodir)/autotype.info +$(buildinfodir)/autotype.info: $(autotype_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/autotype.texi autotype.dvi: $(autotype_deps) @@ -170,8 +169,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/autotype.texi bovine_deps = ${srcdir}/bovine.texi ${gfdl} -bovine : $(buildinfodir)/bovine$(INFO_EXT) -$(buildinfodir)/bovine$(INFO_EXT): $(bovine_deps) +bovine : $(buildinfodir)/bovine.info +$(buildinfodir)/bovine.info: $(bovine_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/bovine.texi bovine.dvi: $(bovine_deps) @@ -182,8 +181,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/bovine.texi calc_deps = ${srcdir}/calc.texi $(emacsdir)/emacsver.texi ${gfdl} -calc : $(buildinfodir)/calc$(INFO_EXT) -$(buildinfodir)/calc$(INFO_EXT): $(calc_deps) +calc : $(buildinfodir)/calc.info +$(buildinfodir)/calc.info: $(calc_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/calc.texi calc.dvi: $(calc_deps) @@ -194,8 +193,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/calc.texi cc_mode_deps = ${srcdir}/cc-mode.texi ${gfdl} -ccmode : $(buildinfodir)/ccmode$(INFO_EXT) -$(buildinfodir)/ccmode$(INFO_EXT): $(cc_mode_deps) +ccmode : $(buildinfodir)/ccmode.info +$(buildinfodir)/ccmode.info: $(cc_mode_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/cc-mode.texi cc-mode.dvi: $(cc_mode_deps) @@ -206,8 +205,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/cc-mode.texi cl_deps = ${srcdir}/cl.texi $(emacsdir)/emacsver.texi ${gfdl} -cl : $(buildinfodir)/cl$(INFO_EXT) -$(buildinfodir)/cl$(INFO_EXT): $(cl_deps) +cl : $(buildinfodir)/cl.info +$(buildinfodir)/cl.info: $(cl_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/cl.texi cl.dvi: $(cl_deps) @@ -218,8 +217,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/cl.texi dbus_deps = ${srcdir}/dbus.texi ${gfdl} -dbus : $(buildinfodir)/dbus$(INFO_EXT) -$(buildinfodir)/dbus$(INFO_EXT): $(dbus_deps) +dbus : $(buildinfodir)/dbus.info +$(buildinfodir)/dbus.info: $(dbus_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/dbus.texi dbus.dvi: $(dbus_deps) @@ -230,8 +229,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/dbus.texi dired_x_deps = ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi ${gfdl} -dired-x : $(buildinfodir)/dired-x$(INFO_EXT) -$(buildinfodir)/dired-x$(INFO_EXT): $(dired_x_deps) +dired-x : $(buildinfodir)/dired-x.info +$(buildinfodir)/dired-x.info: $(dired_x_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/dired-x.texi dired-x.dvi: $(dired_x_deps) @@ -242,8 +241,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/dired-x.texi ebrowse_deps = ${srcdir}/ebrowse.texi ${gfdl} -ebrowse : $(buildinfodir)/ebrowse$(INFO_EXT) -$(buildinfodir)/ebrowse$(INFO_EXT): $(ebrowse_deps) +ebrowse : $(buildinfodir)/ebrowse.info +$(buildinfodir)/ebrowse.info: $(ebrowse_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ebrowse.texi ebrowse.dvi: $(ebrowse_deps) @@ -254,8 +253,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ebrowse.texi ede_deps = ${srcdir}/ede.texi ${gfdl} -ede : $(buildinfodir)/ede$(INFO_EXT) -$(buildinfodir)/ede$(INFO_EXT): $(ede_deps) +ede : $(buildinfodir)/ede.info +$(buildinfodir)/ede.info: $(ede_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ede.texi ede.dvi: $(ede_deps) @@ -266,8 +265,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ede.texi ediff_deps = ${srcdir}/ediff.texi ${gfdl} -ediff : $(buildinfodir)/ediff$(INFO_EXT) -$(buildinfodir)/ediff$(INFO_EXT): $(ediff_deps) +ediff : $(buildinfodir)/ediff.info +$(buildinfodir)/ediff.info: $(ediff_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ediff.texi ediff.dvi: $(ediff_deps) @@ -278,8 +277,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ediff.texi edt_deps = ${srcdir}/edt.texi ${gfdl} -edt : $(buildinfodir)/edt$(INFO_EXT) -$(buildinfodir)/edt$(INFO_EXT): $(edt_deps) +edt : $(buildinfodir)/edt.info +$(buildinfodir)/edt.info: $(edt_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/edt.texi edt.dvi: $(edt_deps) @@ -291,8 +290,8 @@ ## No gfdl dependency. efaq_deps = ${srcdir}/efaq.texi $(emacsdir)/emacsver.texi -efaq : $(buildinfodir)/efaq$(INFO_EXT) -$(buildinfodir)/efaq$(INFO_EXT): $(efaq_deps) +efaq : $(buildinfodir)/efaq.info +$(buildinfodir)/efaq.info: $(efaq_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/efaq.texi efaq.dvi: $(efaq_deps) @@ -303,8 +302,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/efaq.texi efaq_w32_deps = ${srcdir}/efaq-w32.texi $(emacsdir)/emacsver.texi -efaq-w32 : $(buildinfodir)/efaq-w32$(INFO_EXT) -$(buildinfodir)/efaq-w32$(INFO_EXT): $(efaq_w32_deps) +efaq-w32 : $(buildinfodir)/efaq-w32.info +$(buildinfodir)/efaq-w32.info: $(efaq_w32_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/efaq-w32.texi efaq-w32.dvi: $(efaq_w32_deps) @@ -315,8 +314,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/efaq-w32.texi eieio_deps = ${srcdir}/eieio.texi ${gfdl} -eieio : $(buildinfodir)/eieio$(INFO_EXT) -$(buildinfodir)/eieio$(INFO_EXT): $(eieio_deps) +eieio : $(buildinfodir)/eieio.info +$(buildinfodir)/eieio.info: $(eieio_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eieio.texi eieio.dvi: $(eieio_deps) @@ -327,8 +326,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/eieio.texi emacs_gnutls_deps = ${srcdir}/emacs-gnutls.texi ${gfdl} -emacs-gnutls : $(buildinfodir)/emacs-gnutls$(INFO_EXT) -$(buildinfodir)/emacs-gnutls$(INFO_EXT): $(emacs_gnutls_deps) +emacs-gnutls : $(buildinfodir)/emacs-gnutls.info +$(buildinfodir)/emacs-gnutls.info: $(emacs_gnutls_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/emacs-gnutls.texi emacs-gnutls.dvi: $(emacs_gnutls_deps) @@ -339,8 +338,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/emacs-gnutls.texi emacs_mime_deps = ${srcdir}/emacs-mime.texi ${gfdl} -emacs-mime : $(buildinfodir)/emacs-mime$(INFO_EXT) -$(buildinfodir)/emacs-mime$(INFO_EXT): $(emacs_mime_deps) +emacs-mime : $(buildinfodir)/emacs-mime.info +$(buildinfodir)/emacs-mime.info: $(emacs_mime_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) --enable-encoding -o $@ ${srcdir}/emacs-mime.texi emacs-mime.dvi: $(emacs_mime_deps) @@ -351,8 +350,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) --enable-encoding -o $@ ${srcdir}/emacs-mime.texi epa_deps = ${srcdir}/epa.texi ${gfdl} -epa : $(buildinfodir)/epa$(INFO_EXT) -$(buildinfodir)/epa$(INFO_EXT): $(epa_deps) +epa : $(buildinfodir)/epa.info +$(buildinfodir)/epa.info: $(epa_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/epa.texi epa.dvi: $(epa_deps) @@ -363,8 +362,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/epa.texi erc_deps = ${srcdir}/erc.texi $(emacsdir)/emacsver.texi ${gfdl} -erc : $(buildinfodir)/erc$(INFO_EXT) -$(buildinfodir)/erc$(INFO_EXT): $(erc_deps) +erc : $(buildinfodir)/erc.info +$(buildinfodir)/erc.info: $(erc_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/erc.texi erc.dvi: $(erc_deps) @@ -375,8 +374,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/erc.texi ert_deps = ${srcdir}/ert.texi ${gfdl} -ert : $(buildinfodir)/ert$(INFO_EXT) -$(buildinfodir)/ert$(INFO_EXT): $(ert_deps) +ert : $(buildinfodir)/ert.info +$(buildinfodir)/ert.info: $(ert_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ert.texi ert.dvi: $(ert_deps) @@ -387,8 +386,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ert.texi eshell_deps = ${srcdir}/eshell.texi ${gfdl} -eshell : $(buildinfodir)/eshell$(INFO_EXT) -$(buildinfodir)/eshell$(INFO_EXT): $(eshell_deps) +eshell : $(buildinfodir)/eshell.info +$(buildinfodir)/eshell.info: $(eshell_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eshell.texi eshell.dvi: $(eshell_deps) @@ -399,8 +398,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/eshell.texi eudc_deps = ${srcdir}/eudc.texi ${gfdl} -eudc : $(buildinfodir)/eudc$(INFO_EXT) -$(buildinfodir)/eudc$(INFO_EXT): $(eudc_deps) +eudc : $(buildinfodir)/eudc.info +$(buildinfodir)/eudc.info: $(eudc_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eudc.texi eudc.dvi: $(eudc_deps) @@ -411,8 +410,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/eudc.texi eww_deps = ${srcdir}/eww.texi ${gfdl} -eww : $(buildinfodir)/eww$(INFO_EXT) -$(buildinfodir)/eww$(INFO_EXT): $(eww_deps) +eww : $(buildinfodir)/eww.info +$(buildinfodir)/eww.info: $(eww_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eww.texi eww.dvi: $(eww_deps) @@ -423,8 +422,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/eww.texi flymake_deps = ${srcdir}/flymake.texi ${gfdl} -flymake : $(buildinfodir)/flymake$(INFO_EXT) -$(buildinfodir)/flymake$(INFO_EXT): $(flymake_deps) +flymake : $(buildinfodir)/flymake.info +$(buildinfodir)/flymake.info: $(flymake_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/flymake.texi flymake.dvi: $(flymake_deps) @@ -435,8 +434,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/flymake.texi forms_deps = ${srcdir}/forms.texi ${gfdl} -forms : $(buildinfodir)/forms$(INFO_EXT) -$(buildinfodir)/forms$(INFO_EXT): $(forms_deps) +forms : $(buildinfodir)/forms.info +$(buildinfodir)/forms.info: $(forms_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/forms.texi forms.dvi: $(forms_deps) @@ -448,8 +447,8 @@ ## gnus/message/emacs-mime/sieve/pgg are part of Gnus. gnus_deps = ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl} -gnus : $(buildinfodir)/gnus$(INFO_EXT) -$(buildinfodir)/gnus$(INFO_EXT): $(gnus_deps) +gnus : $(buildinfodir)/gnus.info +$(buildinfodir)/gnus.info: $(gnus_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/gnus.texi gnus.dvi: $(gnus_deps) @@ -466,8 +465,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/gnus.texi htmlfontify_deps = ${srcdir}/htmlfontify.texi ${gfdl} -htmlfontify : $(buildinfodir)/htmlfontify$(INFO_EXT) -$(buildinfodir)/htmlfontify$(INFO_EXT): $(htmlfontify_deps) +htmlfontify : $(buildinfodir)/htmlfontify.info +$(buildinfodir)/htmlfontify.info: $(htmlfontify_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/htmlfontify.texi htmlfontify.dvi: $(htmlfontify_deps) @@ -478,9 +477,9 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/htmlfontify.texi idlwave_deps = ${srcdir}/idlwave.texi ${gfdl} -idlwave : $(buildinfodir)/idlwave$(INFO_EXT) +idlwave : $(buildinfodir)/idlwave.info # NB this one needs --no-split even without a .info extension. -$(buildinfodir)/idlwave$(INFO_EXT): $(idlwave_deps) +$(buildinfodir)/idlwave.info: $(idlwave_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/idlwave.texi idlwave.dvi: $(idlwave_deps) @@ -491,8 +490,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/idlwave.texi ido_deps = ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl} -ido : $(buildinfodir)/ido$(INFO_EXT) -$(buildinfodir)/ido$(INFO_EXT): $(ido_deps) +ido : $(buildinfodir)/ido.info +$(buildinfodir)/ido.info: $(ido_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ido.texi ido.dvi: $(ido_deps) @@ -504,9 +503,9 @@ info_deps = ${srcdir}/info.texi ${gfdl} # Avoid name clash with overall "info" target. -info.info : $(buildinfodir)/info$(INFO_EXT) +info.info : $(buildinfodir)/info.info # NB this one needs --no-split even without a .info extension. -$(buildinfodir)/info$(INFO_EXT): $(info_deps) +$(buildinfodir)/info.info: $(info_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/info.texi info.dvi: $(info_deps) @@ -517,8 +516,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/info.texi mairix_el_deps = ${srcdir}/mairix-el.texi ${gfdl} -mairix-el : $(buildinfodir)/mairix-el$(INFO_EXT) -$(buildinfodir)/mairix-el$(INFO_EXT): $(mairix_el_deps) +mairix-el : $(buildinfodir)/mairix-el.info +$(buildinfodir)/mairix-el.info: $(mairix_el_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/mairix-el.texi mairix-el.dvi: $(mairix_el_deps) @@ -529,8 +528,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/mairix-el.texi message_deps = ${srcdir}/message.texi ${gfdl} -message : $(buildinfodir)/message$(INFO_EXT) -$(buildinfodir)/message$(INFO_EXT): $(message_deps) +message : $(buildinfodir)/message.info +$(buildinfodir)/message.info: $(message_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/message.texi message.dvi: $(message_deps) @@ -541,8 +540,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/message.texi mh_e_deps = ${srcdir}/mh-e.texi ${gfdl} -mh-e : $(buildinfodir)/mh-e$(INFO_EXT) -$(buildinfodir)/mh-e$(INFO_EXT): $(mh_e_deps) +mh-e : $(buildinfodir)/mh-e.info +$(buildinfodir)/mh-e.info: $(mh_e_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/mh-e.texi mh-e.dvi: $(mh_e_deps) @@ -553,8 +552,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/mh-e.texi newsticker_deps = ${srcdir}/newsticker.texi ${gfdl} -newsticker : $(buildinfodir)/newsticker$(INFO_EXT) -$(buildinfodir)/newsticker$(INFO_EXT): $(newsticker_deps) +newsticker : $(buildinfodir)/newsticker.info +$(buildinfodir)/newsticker.info: $(newsticker_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/newsticker.texi newsticker.dvi: $(newsticker_deps) @@ -565,8 +564,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/newsticker.texi nxml_mode_deps = ${srcdir}/nxml-mode.texi ${gfdl} -nxml-mode : $(buildinfodir)/nxml-mode$(INFO_EXT) -$(buildinfodir)/nxml-mode$(INFO_EXT): $(nxml_mode_deps) +nxml-mode : $(buildinfodir)/nxml-mode.info +$(buildinfodir)/nxml-mode.info: $(nxml_mode_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/nxml-mode.texi nxml-mode.dvi: $(nxml_mode_deps) @@ -577,8 +576,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/nxml-mode.texi octave_mode_deps = ${srcdir}/octave-mode.texi ${gfdl} -octave-mode : $(buildinfodir)/octave-mode$(INFO_EXT) -$(buildinfodir)/octave-mode$(INFO_EXT): $(octave_mode_deps) +octave-mode : $(buildinfodir)/octave-mode.info +$(buildinfodir)/octave-mode.info: $(octave_mode_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/octave-mode.texi octave-mode.dvi: $(octave_mode_deps) @@ -589,8 +588,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/octave-mode.texi org_deps = ${srcdir}/org.texi ${gfdl} -org : $(buildinfodir)/org$(INFO_EXT) -$(buildinfodir)/org$(INFO_EXT): $(org_deps) +org : $(buildinfodir)/org.info +$(buildinfodir)/org.info: $(org_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/org.texi org.dvi: $(org_deps) @@ -601,8 +600,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/org.texi pcl_cvs_deps = ${srcdir}/pcl-cvs.texi ${gfdl} -pcl-cvs : $(buildinfodir)/pcl-cvs$(INFO_EXT) -$(buildinfodir)/pcl-cvs$(INFO_EXT): $(pcl_cvs_deps) +pcl-cvs : $(buildinfodir)/pcl-cvs.info +$(buildinfodir)/pcl-cvs.info: $(pcl_cvs_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/pcl-cvs.texi pcl-cvs.dvi: $(pcl_cvs_deps) @@ -613,8 +612,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/pcl-cvs.texi pgg_deps = ${srcdir}/pgg.texi ${gfdl} -pgg : $(buildinfodir)/pgg$(INFO_EXT) -$(buildinfodir)/pgg$(INFO_EXT): $(pgg_deps) +pgg : $(buildinfodir)/pgg.info +$(buildinfodir)/pgg.info: $(pgg_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/pgg.texi pgg.dvi: $(pgg_deps) @@ -625,8 +624,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/pgg.texi rcirc_deps = ${srcdir}/rcirc.texi ${gfdl} -rcirc : $(buildinfodir)/rcirc$(INFO_EXT) -$(buildinfodir)/rcirc$(INFO_EXT): $(rcirc_deps) +rcirc : $(buildinfodir)/rcirc.info +$(buildinfodir)/rcirc.info: $(rcirc_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/rcirc.texi rcirc.dvi: $(rcirc_deps) @@ -637,8 +636,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/rcirc.texi reftex_deps = ${srcdir}/reftex.texi $(emacsdir)/emacsver.texi ${gfdl} -reftex : $(buildinfodir)/reftex$(INFO_EXT) -$(buildinfodir)/reftex$(INFO_EXT): $(reftex_deps) +reftex : $(buildinfodir)/reftex.info +$(buildinfodir)/reftex.info: $(reftex_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/reftex.texi reftex.dvi: $(reftex_deps) @@ -649,8 +648,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/reftex.texi remember_deps = ${srcdir}/remember.texi ${gfdl} -remember : $(buildinfodir)/remember$(INFO_EXT) -$(buildinfodir)/remember$(INFO_EXT): $(remember_deps) +remember : $(buildinfodir)/remember.info +$(buildinfodir)/remember.info: $(remember_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/remember.texi remember.dvi: $(remember_deps) @@ -661,8 +660,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/remember.texi sasl_deps = ${srcdir}/sasl.texi ${gfdl} -sasl : $(buildinfodir)/sasl$(INFO_EXT) -$(buildinfodir)/sasl$(INFO_EXT): $(sasl_deps) +sasl : $(buildinfodir)/sasl.info +$(buildinfodir)/sasl.info: $(sasl_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/sasl.texi sasl.dvi: $(sasl_deps) @@ -673,8 +672,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/sasl.texi sc_deps = ${srcdir}/sc.texi ${gfdl} -sc : $(buildinfodir)/sc$(INFO_EXT) -$(buildinfodir)/sc$(INFO_EXT): $(sc_deps) +sc : $(buildinfodir)/sc.info +$(buildinfodir)/sc.info: $(sc_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/sc.texi sc.dvi: $(sc_deps) @@ -685,8 +684,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/sc.texi semantic_deps = ${srcdir}/semantic.texi ${srcdir}/sem-user.texi ${gfdl} -semantic : $(buildinfodir)/semantic$(INFO_EXT) -$(buildinfodir)/semantic$(INFO_EXT): $(semantic_deps) +semantic : $(buildinfodir)/semantic.info +$(buildinfodir)/semantic.info: $(semantic_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/semantic.texi semantic.dvi: $(semantic_deps) @@ -697,8 +696,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/semantic.texi ses_deps = ${srcdir}/ses.texi ${gfdl} -ses : $(buildinfodir)/ses$(INFO_EXT) -$(buildinfodir)/ses$(INFO_EXT): $(ses_deps) +ses : $(buildinfodir)/ses.info +$(buildinfodir)/ses.info: $(ses_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ses.texi ses.dvi: $(ses_deps) @@ -709,8 +708,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ses.texi sieve_deps = ${srcdir}/sieve.texi ${gfdl} -sieve : $(buildinfodir)/sieve$(INFO_EXT) -$(buildinfodir)/sieve$(INFO_EXT): $(sieve_deps) +sieve : $(buildinfodir)/sieve.info +$(buildinfodir)/sieve.info: $(sieve_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/sieve.texi sieve.dvi: $(sieve_deps) @@ -721,8 +720,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/sieve.texi smtpmail_deps = ${srcdir}/smtpmail.texi ${gfdl} -smtpmail : $(buildinfodir)/smtpmail$(INFO_EXT) -$(buildinfodir)/smtpmail$(INFO_EXT): $(smtpmail_deps) +smtpmail : $(buildinfodir)/smtpmail.info +$(buildinfodir)/smtpmail.info: $(smtpmail_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/smtpmail.texi smtpmail.dvi: $(smtpmail_deps) @@ -733,8 +732,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/smtpmail.texi speedbar_deps = ${srcdir}/speedbar.texi ${gfdl} -speedbar : $(buildinfodir)/speedbar$(INFO_EXT) -$(buildinfodir)/speedbar$(INFO_EXT): $(speedbar_deps) +speedbar : $(buildinfodir)/speedbar.info +$(buildinfodir)/speedbar.info: $(speedbar_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/speedbar.texi speedbar.dvi: $(speedbar_deps) @@ -745,8 +744,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/speedbar.texi srecode_deps = ${srcdir}/srecode.texi ${gfdl} -srecode : $(buildinfodir)/srecode$(INFO_EXT) -$(buildinfodir)/srecode$(INFO_EXT): $(srecode_deps) +srecode : $(buildinfodir)/srecode.info +$(buildinfodir)/srecode.info: $(srecode_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/srecode.texi srecode.dvi: $(srecode_deps) @@ -757,8 +756,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/srecode.texi todo_mode_deps = ${srcdir}/todo-mode.texi ${gfdl} -todo-mode : $(buildinfodir)/todo-mode$(INFO_EXT) -$(buildinfodir)/todo-mode$(INFO_EXT): $(todo_mode_deps) +todo-mode : $(buildinfodir)/todo-mode.info +$(buildinfodir)/todo-mode.info: $(todo_mode_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/todo-mode.texi todo-mode.dvi: $(todo_mode_deps) @@ -769,8 +768,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/todo-mode.texi tramp_deps = ${srcdir}/tramp.texi ${srcdir}/trampver.texi ${gfdl} -tramp : $(buildinfodir)/tramp$(INFO_EXT) -$(buildinfodir)/tramp$(INFO_EXT): $(tramp_deps) +tramp : $(buildinfodir)/tramp.info +$(buildinfodir)/tramp.info: $(tramp_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ -D emacs ${srcdir}/tramp.texi tramp.dvi: $(tramp_deps) @@ -781,8 +780,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ -D emacs ${srcdir}/tramp.texi url_deps = ${srcdir}/url.texi ${gfdl} -url : $(buildinfodir)/url$(INFO_EXT) -$(buildinfodir)/url$(INFO_EXT): $(url_deps) +url : $(buildinfodir)/url.info +$(buildinfodir)/url.info: $(url_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/url.texi url.dvi: $(url_deps) @@ -793,8 +792,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/url.texi vhdl_mode_deps = ${srcdir}/vhdl-mode.texi ${gfdl} -vhdl-mode : $(buildinfodir)/vhdl-mode$(INFO_EXT) -$(buildinfodir)/vhdl-mode$(INFO_EXT): $(vhdl_mode_deps) +vhdl-mode : $(buildinfodir)/vhdl-mode.info +$(buildinfodir)/vhdl-mode.info: $(vhdl_mode_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/vhdl-mode.texi vhdl-mode.dvi: $(vhdl_mode_deps) @@ -805,8 +804,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/vhdl-mode.texi vip_deps = ${srcdir}/vip.texi ${gfdl} -vip : $(buildinfodir)/vip$(INFO_EXT) -$(buildinfodir)/vip$(INFO_EXT): $(vip_deps) +vip : $(buildinfodir)/vip.info +$(buildinfodir)/vip.info: $(vip_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/vip.texi vip.dvi: $(vip_deps) @@ -817,8 +816,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/vip.texi viper_deps = ${srcdir}/viper.texi ${gfdl} -viper : $(buildinfodir)/viper$(INFO_EXT) -$(buildinfodir)/viper$(INFO_EXT): $(viper_deps) +viper : $(buildinfodir)/viper.info +$(buildinfodir)/viper.info: $(viper_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/viper.texi viper.dvi: $(viper_deps) @@ -829,8 +828,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/viper.texi widget_deps = ${srcdir}/wisent.texi ${gfdl} -widget : $(buildinfodir)/widget$(INFO_EXT) -$(buildinfodir)/widget$(INFO_EXT): $(widget_deps) +widget : $(buildinfodir)/widget.info +$(buildinfodir)/widget.info: $(widget_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/widget.texi widget.dvi: $(widget_deps) @@ -841,8 +840,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/widget.texi wisent_deps = ${srcdir}/wisent.texi ${gfdl} -wisent : $(buildinfodir)/wisent$(INFO_EXT) -$(buildinfodir)/wisent$(INFO_EXT): $(wisent_deps) +wisent : $(buildinfodir)/wisent.info +$(buildinfodir)/wisent.info: $(wisent_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/wisent.texi wisent.dvi: $(wisent_deps) @@ -853,8 +852,8 @@ $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/wisent.texi woman_deps = ${srcdir}/woman.texi $(emacsdir)/emacsver.texi ${gfdl} -woman : $(buildinfodir)/woman$(INFO_EXT) -$(buildinfodir)/woman$(INFO_EXT): $(woman_deps) +woman : $(buildinfodir)/woman.info +$(buildinfodir)/woman.info: $(woman_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/woman.texi woman.dvi: $(woman_deps) @@ -883,7 +882,7 @@ ## buildinfodir is relative to srcdir. infoclean: for file in $(INFO_TARGETS); do \ - file=`echo $${file} | sed 's/\.info$$//'`${INFO_EXT}; \ + file=`echo $${file} | sed 's/\.info$$//'`.info; \ rm -f \ $(buildinfodir)/$${file} \ $(buildinfodir)/$${file}-[1-9] \ @@ -904,7 +903,6 @@ -e 's/^\(clean:.*\)/\1 infoclean/' \ -e "s/@ver[s]ion@/${version}/" \ -e 's/@MAKE[I]NFO@/makeinfo/' -e 's/@MK[D]IR_P@/mkdir -p/' \ - -e 's/@IN[F]O_EXT@/.info/' -e 's/@IN[F]O_OPTS@//' \ ${srcdir}/Makefile.in > emacs-misc-${version}/Makefile @if grep '@[a-zA-Z_]*@' emacs-misc-${version}/Makefile; then \ echo "Unexpanded configure variables in Makefile?" 1>&2; exit 1; \ ------------------------------------------------------------ revno: 117295 committer: Glenn Morris branch nick: trunk timestamp: Mon 2014-06-09 21:44:11 -0400 message: leim/Makefile.in: use GNU Make features to simplify and parallelize. * leim/Makefile.in (CHINESE_TIT, TIT_SOURCES, MISC_SOURCES, changed.tit) (changed.misc): Remove. (${leimdir}/quail, ${leimdir}/ja-dic): Create using order-only prereq. (misc_convert): New. (${leimdir}/quail/%.el, ${leimdir}/quail/CT%.el) (${leimdir}/quail/PY.el, ${leimdir}/quail/ZIRANMA.el) (${leimdir}/quail/tsang-%.el, ${leimdir}/quail/quick-%.el): Use pattern rules. (${leimdir}/leim-list.el, ${leimdir}/ja-dic/ja-dic.el): Use automatic variables. (bootstrap-clean): No changed.* files to delete any more. * .bzrignore: No leim/changed.* files to ignore any more. diff: === modified file '.bzrignore' --- .bzrignore 2014-05-18 18:57:04 +0000 +++ .bzrignore 2014-06-10 01:44:11 +0000 @@ -82,9 +82,6 @@ !etc/refcards/Makefile etc/refcards/*.aux etc/refcards/*.log -# FIXME this ignores info and everything in it. -# It would be better to only ignore: -# info/ (i.e., just the directory) and info/*.info. info/ admin/unidata/unidata.txt build-aux/compile @@ -93,8 +90,6 @@ build-aux/depcomp build-aux/install-sh build-aux/missing -leim/changed.misc -leim/changed.tit lib/.deps lib/Makefile.in lib/deps === modified file 'leim/ChangeLog' --- leim/ChangeLog 2014-04-11 06:51:49 +0000 +++ leim/ChangeLog 2014-06-10 01:44:11 +0000 @@ -1,3 +1,18 @@ +2014-06-10 Glenn Morris + + Use GNU Make features to simplify and parallelize. + * Makefile.in (CHINESE_TIT, TIT_SOURCES, MISC_SOURCES, changed.tit) + (changed.misc): Remove. + (${leimdir}/quail, ${leimdir}/ja-dic): Create using order-only prereq. + (misc_convert): New. + (${leimdir}/quail/%.el, ${leimdir}/quail/CT%.el) + (${leimdir}/quail/PY.el, ${leimdir}/quail/ZIRANMA.el) + (${leimdir}/quail/tsang-%.el, ${leimdir}/quail/quick-%.el): + Use pattern rules. + (${leimdir}/leim-list.el, ${leimdir}/ja-dic/ja-dic.el): + Use automatic variables. + (bootstrap-clean): No changed.* files to delete any more. + 2014-04-11 Glenn Morris * Makefile.in (EMACSDATA, EMACSDOC, EMACSPATH): Unexport. === modified file 'leim/Makefile.in' --- leim/Makefile.in 2014-04-11 06:51:49 +0000 +++ leim/Makefile.in 2014-06-10 01:44:11 +0000 @@ -61,8 +61,6 @@ ${leimdir}/quail/QJ-b5.el \ ${leimdir}/quail/ZOZY.el -CHINESE_TIT=${TIT_GB} ${TIT_BIG5} - MISC= \ ${leimdir}/quail/tsang-b5.el \ ${leimdir}/quail/quick-b5.el \ @@ -73,80 +71,66 @@ ${leimdir}/quail/CTLau.el \ ${leimdir}/quail/CTLau-b5.el -## The generated .el files. -TIT_MISC=${CHINESE_TIT} ${MISC} +## All the generated .el files. +TIT_MISC = ${TIT_GB} ${TIT_BIG5} ${MISC} + all: ${leimdir}/leim-list.el ${leimdir}/ja-dic/ja-dic.el .PHONY: all -TIT_SOURCES= \ - ${srcdir}/CXTERM-DIC/4Corner.tit \ - ${srcdir}/CXTERM-DIC/ARRAY30.tit \ - ${srcdir}/CXTERM-DIC/CCDOSPY.tit \ - ${srcdir}/CXTERM-DIC/ECDICT.tit \ - ${srcdir}/CXTERM-DIC/ETZY.tit \ - ${srcdir}/CXTERM-DIC/PY-b5.tit \ - ${srcdir}/CXTERM-DIC/Punct-b5.tit \ - ${srcdir}/CXTERM-DIC/Punct.tit \ - ${srcdir}/CXTERM-DIC/QJ-b5.tit \ - ${srcdir}/CXTERM-DIC/QJ.tit \ - ${srcdir}/CXTERM-DIC/SW.tit \ - ${srcdir}/CXTERM-DIC/TONEPY.tit \ - ${srcdir}/CXTERM-DIC/ZOZY.tit - -${CHINESE_TIT}: changed.tit - @true - -## The changed.* files act to serialize this part of the build. -## A single Emacs invocation creates all the CHINESE_TIT files. -## Otherwise in a parallel build multiple Emacs instances could -## interfere with each other. If we used GNU make we could probably -## parallelize this without the need for an explicit rule for each -## file. Something like the pattern rule: -## quail/%.el: CXTERM-DIC/%.tit -## It doesn't seem possible to do this with VPATH and suffix rules. -changed.tit: ${TIT_SOURCES} - @${MKDIR_P} ${leimdir}/quail - ${RUN_EMACS} -l titdic-cnv \ - -f batch-titdic-convert -dir ${leimdir}/quail ${srcdir}/CXTERM-DIC - echo "changed" > $@ - -MISC_SOURCES= \ - ${srcdir}/MISC-DIC/CTLau-b5.html \ - ${srcdir}/MISC-DIC/CTLau.html \ - ${srcdir}/MISC-DIC/cangjie-table.b5 \ - ${srcdir}/MISC-DIC/cangjie-table.cns \ - ${srcdir}/MISC-DIC/pinyin.map \ - ${srcdir}/MISC-DIC/ziranma.cin - -${MISC}: changed.misc - @true - -changed.misc: ${MISC_SOURCES} - @${MKDIR_P} ${leimdir}/quail - ${RUN_EMACS} -l titdic-cnv \ - -f batch-miscdic-convert -dir ${leimdir}/quail ${srcdir}/MISC-DIC - echo "changed" > $@ + +## Ensure the output directory exists. +${TIT_MISC}: | ${leimdir}/quail + +${leimdir}/quail ${leimdir}/ja-dic: + ${MKDIR_P} $@ + + +## All of TIT_GB and TIT_BIG5. +${leimdir}/quail/%.el: ${srcdir}/CXTERM-DIC/%.tit + ${RUN_EMACS} -l titdic-cnv \ + -f batch-titdic-convert -dir ${leimdir}/quail $< + + +misc_convert = ${RUN_EMACS} -l titdic-cnv -f batch-miscdic-convert -dir ${leimdir}/quail + +## CTLau.el, CTLau-b5.el. +${leimdir}/quail/CT%.el: ${srcdir}/MISC-DIC/CT%.html + ${misc_convert} $< + +${leimdir}/quail/PY.el: ${srcdir}/MISC-DIC/pinyin.map + ${misc_convert} $< + +${leimdir}/quail/ZIRANMA.el: ${srcdir}/MISC-DIC/ziranma.cin + ${misc_convert} $< + +## Processing cangjie-table.b5 and cangjie-table.cns generates two files +## in each case. +${leimdir}/quail/tsang-%.el ${leimdir}/quail/quick-%.el: ${srcdir}/MISC-DIC/cangjie-table.% + ${misc_convert} $< + .PHONY: leim-list.el leim-list.el: ${leimdir}/leim-list.el -${leimdir}/leim-list.el: ${TIT_MISC} ${srcdir}/leim-ext.el +${leimdir}/leim-list.el: ${srcdir}/leim-ext.el ${TIT_MISC} rm -f $@ ${RUN_EMACS} -l international/quail \ --eval "(update-leim-list-file (unmsys--file-name \"${leimdir}\"))" - sed -n -e '/^[^;]/p' -e 's/^;\(;*\)inc /;\1 /p' < ${srcdir}/leim-ext.el >> $@ + sed -n -e '/^[^;]/p' -e 's/^;\(;*\)inc /;\1 /p' < $< >> $@ + + +${leimdir}/ja-dic/ja-dic.el: | $(leimdir)/ja-dic ${leimdir}/ja-dic/ja-dic.el: $(srcdir)/SKK-DIC/SKK-JISYO.L - @$(MKDIR_P) $(leimdir)/ja-dic $(RUN_EMACS) -batch -l ja-dic-cnv \ - -f batch-skkdic-convert -dir "$(leimdir)/ja-dic" \ - "$(srcdir)/SKK-DIC/SKK-JISYO.L" + -f batch-skkdic-convert -dir "$(leimdir)/ja-dic" "$<" + .PHONY: bootstrap-clean distclean maintainer-clean extraclean bootstrap-clean: - rm -f ${TIT_MISC} ${leimdir}/leim-list.el changed.tit changed.misc + rm -f ${TIT_MISC} ${leimdir}/leim-list.el distclean: rm -f Makefile @@ -155,8 +139,6 @@ ## We do not delete ja-dic, even in a bootstrap, because it rarely ## changes and is slow to regenerate. -## TODO? Could consider doing the same with TIT_MISC, though those -## are much faster to generate. extraclean: rm -rf ${leimdir}/ja-dic ------------------------------------------------------------ revno: 117294 committer: Paul Eggert branch nick: trunk timestamp: Mon 2014-06-09 13:31:06 -0700 message: Say (accept-process-output P)'s result pertains to P if P is non-nil. * doc/lispref/processes.texi (Accepting Output): * src/process.c (Faccept_process_output) (wait_reading_process_output): Mention that if PROCESS is non-nil, the return value is about PROCESS, not about other processes. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2014-06-08 23:41:43 +0000 +++ doc/lispref/ChangeLog 2014-06-09 20:31:06 +0000 @@ -1,3 +1,9 @@ +2014-06-09 Paul Eggert + + Say (accept-process-output P)'s result pertains to P if P is non-nil. + * processes.texi (Accepting Output): Mention that if PROCESS is non-nil, + the return value is about PROCESS, not about other processes. + 2014-06-08 Glenn Morris * os.texi (Startup Summary): Small fix for initial-buffer-choice. === modified file 'doc/lispref/processes.texi' --- doc/lispref/processes.texi 2014-04-29 04:14:27 +0000 +++ doc/lispref/processes.texi 2014-06-09 20:31:06 +0000 @@ -1484,7 +1484,7 @@ periods. The former specifies a period measured in seconds and the latter specifies one measured in milliseconds. The two time periods thus specified are added together, and @code{accept-process-output} -returns after that much time, whether or not there has been any +returns after that much time, even if there is no subprocess output. The argument @var{millisec} is obsolete (and should not be used), @@ -1502,7 +1502,8 @@ speech synthesis. The function @code{accept-process-output} returns non-@code{nil} if it -did get some output, or @code{nil} if the timeout expired before output +got output from @var{process}, or from any process if @var{process} is +@code{nil}. It returns @code{nil} if the timeout expired before output arrived. @end defun === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-09 15:03:49 +0000 +++ src/ChangeLog 2014-06-09 20:31:06 +0000 @@ -1,3 +1,10 @@ +2014-06-09 Paul Eggert + + Say (accept-process-output P)'s result pertains to P if P is non-nil. + * process.c (Faccept_process_output) + (wait_reading_process_output): Mention that if PROCESS is non-nil, + the return value is about PROCESS, not about other processes. + 2014-06-09 Dmitry Antipov Further adjustments to mark_object and friends. === modified file 'src/process.c' --- src/process.c 2014-06-08 18:27:22 +0000 +++ src/process.c 2014-06-09 20:31:06 +0000 @@ -3921,19 +3921,20 @@ 0, 4, 0, doc: /* Allow any pending output from subprocesses to be read by Emacs. It is given to their filter functions. -Non-nil arg PROCESS means do not return until some output has been received -from PROCESS. +Optional argument PROCESS means do not return until output has been +received from PROCESS. -Non-nil second arg SECONDS and third arg MILLISEC are number of seconds -and milliseconds to wait; return after that much time whether or not -there is any subprocess output. If SECONDS is a floating point number, +Optional second argument SECONDS and third argument MILLISEC +specify a timeout; return after that much time even if there is +no subprocess output. If SECONDS is a floating point number, it specifies a fractional number of seconds to wait. The MILLISEC argument is obsolete and should be avoided. -If optional fourth arg JUST-THIS-ONE is non-nil, only accept output -from PROCESS, suspending reading output from other processes. +If optional fourth argument JUST-THIS-ONE is non-nil, accept output +from PROCESS only, suspending reading output from other processes. If JUST-THIS-ONE is an integer, don't run any timers either. -Return non-nil if we received any output before the timeout expired. */) +Return non-nil if we received any output from PROCESS (or, if PROCESS +is nil, from any process) before the timeout expired. */) (register Lisp_Object process, Lisp_Object seconds, Lisp_Object millisec, Lisp_Object just_this_one) { intmax_t secs; @@ -4255,16 +4256,14 @@ (and gobble terminal input into the buffer if any arrives). If WAIT_PROC is specified, wait until something arrives from that - process. The return value is true if we read some input from - that process. + process. If JUST_WAIT_PROC is nonzero, handle only output from WAIT_PROC (suspending output from other processes). A negative value means don't run any timers either. - If WAIT_PROC is specified, then the function returns true if we - received input from that process before the timeout elapsed. - Otherwise, return true if we received input from any process. */ + Return true if we received input from WAIT_PROC, or from any + process if WAIT_PROC is null. */ bool wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, ------------------------------------------------------------ revno: 117293 committer: Dmitry Antipov branch nick: trunk timestamp: Mon 2014-06-09 19:03:49 +0400 message: Further adjustments to mark_object and friends. Now the mark_object's stack is just 32 bytes on a 64-bit system, which means extra 20% off the stack usage. * alloc.c (mark_save_value): As before, refactored out from ... (mark_object): ... adjusted user. Also add comment. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-09 14:50:57 +0000 +++ src/ChangeLog 2014-06-09 15:03:49 +0000 @@ -1,3 +1,11 @@ +2014-06-09 Dmitry Antipov + + Further adjustments to mark_object and friends. + Now the mark_object's stack is just 32 bytes on a 64-bit + system, which means extra 20% off the stack usage. + * alloc.c (mark_save_value): As before, refactored out from ... + (mark_object): ... adjusted user. Also add comment. + 2014-06-09 Paul Eggert Fix core dump after a dropped X connection (Bug#17704). === modified file 'src/alloc.c' --- src/alloc.c 2014-06-08 15:06:03 +0000 +++ src/alloc.c 2014-06-09 15:03:49 +0000 @@ -6068,6 +6068,30 @@ mark_object (blv->defcell); } +NO_INLINE /* To reduce stack depth in mark_object. */ +static void +mark_save_value (struct Lisp_Save_Value *ptr) +{ + /* If `save_type' is zero, `data[0].pointer' is the address + of a memory area containing `data[1].integer' potential + Lisp_Objects. */ + if (GC_MARK_STACK && ptr->save_type == SAVE_TYPE_MEMORY) + { + Lisp_Object *p = ptr->data[0].pointer; + ptrdiff_t nelt; + for (nelt = ptr->data[1].integer; nelt > 0; nelt--, p++) + mark_maybe_object (*p); + } + else + { + /* Find Lisp_Objects in `data[N]' slots and mark them. */ + int i; + for (i = 0; i < SAVE_VALUE_SLOTS; i++) + if (save_type (ptr, i) == SAVE_OBJECT) + mark_object (ptr->data[i].object); + } +} + /* Remove killed buffers or items whose car is a killed buffer from LIST, and mark other items. Return changed LIST, which is marked. */ @@ -6095,7 +6119,13 @@ return list; } -/* Determine type of generic Lisp_Object and mark it accordingly. */ +/* Determine type of generic Lisp_Object and mark it accordingly. + + This function implements a straightforward depth-first marking + algorithm and so the recursion depth may be very high (a few + tens of thousands is not uncommon). To minimize stack usage, + a few cold paths are moved out to NO_INLINE functions above. + In general, inlining them doesn't help you to gain more speed. */ void mark_object (Lisp_Object arg) @@ -6363,27 +6393,7 @@ case Lisp_Misc_Save_Value: XMISCANY (obj)->gcmarkbit = 1; - { - struct Lisp_Save_Value *ptr = XSAVE_VALUE (obj); - /* If `save_type' is zero, `data[0].pointer' is the address - of a memory area containing `data[1].integer' potential - Lisp_Objects. */ - if (GC_MARK_STACK && ptr->save_type == SAVE_TYPE_MEMORY) - { - Lisp_Object *p = ptr->data[0].pointer; - ptrdiff_t nelt; - for (nelt = ptr->data[1].integer; nelt > 0; nelt--, p++) - mark_maybe_object (*p); - } - else - { - /* Find Lisp_Objects in `data[N]' slots and mark them. */ - int i; - for (i = 0; i < SAVE_VALUE_SLOTS; i++) - if (save_type (ptr, i) == SAVE_OBJECT) - mark_object (ptr->data[i].object); - } - } + mark_save_value (XSAVE_VALUE (obj)); break; case Lisp_Misc_Overlay: ------------------------------------------------------------ revno: 117292 fixes bug: http://debbugs.gnu.org/17704 committer: Paul Eggert branch nick: trunk timestamp: Mon 2014-06-09 07:50:57 -0700 message: Fix core dump after a dropped X connection. * sysdep.c (stuff_char): Don't abort merely because the selected frame is dead, as we may be shutting down. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-08 23:41:43 +0000 +++ src/ChangeLog 2014-06-09 14:50:57 +0000 @@ -1,3 +1,9 @@ +2014-06-09 Paul Eggert + + Fix core dump after a dropped X connection (Bug#17704). + * sysdep.c (stuff_char): Don't abort merely because the selected frame + is dead, as we may be shutting down. + 2014-06-08 Glenn Morris * fileio.c (write-region-inhibit-fsync): Doc tweak. === modified file 'src/sysdep.c' --- src/sysdep.c 2014-06-08 00:35:27 +0000 +++ src/sysdep.c 2014-06-09 14:50:57 +0000 @@ -222,7 +222,9 @@ void stuff_char (char c) { - if (! FRAME_TERMCAP_P (SELECTED_FRAME ())) + if (! (FRAMEP (selected_frame) + && FRAME_LIVE_P (XFRAME (selected_frame)) + && FRAME_TERMCAP_P (XFRAME (selected_frame)))) return; /* Should perhaps error if in batch mode */ ------------------------------------------------------------ revno: 117291 [merge] committer: Glenn Morris branch nick: trunk timestamp: Sun 2014-06-08 16:41:43 -0700 message: Merge from emacs-24; up to r117230 diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2014-06-08 00:35:27 +0000 +++ doc/emacs/ChangeLog 2014-06-08 23:41:43 +0000 @@ -1,5 +1,27 @@ 2014-06-08 Glenn Morris + * entering.texi (Entering Emacs): Small fix re initial-buffer-choice. + * misc.texi (emacsclient Options): Copyedit. + + * buffers.texi (Uniquify): Copyedits. + * files.texi (Visiting): Update for uniquify changes. + + * dired.texi (Marks vs Flags): + * rmail.texi (Rmail Scrolling): Markup fixes re SPC. + + * help.texi (Help, Misc Help): Copyedits. + + * screen.texi (Menu Bar): Copyedits. + * msdog.texi (Windows Keyboard): F10 menus are now a general feature. + + * frames.texi (Frame Commands): Copyedits re M-F10, F11. + * cmdargs.texi (Window Size X): Copyedits. + + * ack.texi (Acknowledgments): + * emacs.texi (Acknowledgments): Updates. + +2014-06-08 Glenn Morris + * ack.texi (Acknowledgments): * emacs.texi (Acknowledgments): Updates. === modified file 'doc/emacs/buffers.texi' --- doc/emacs/buffers.texi 2014-04-29 15:17:02 +0000 +++ doc/emacs/buffers.texi 2014-06-08 07:41:27 +0000 @@ -608,20 +608,16 @@ @cindex unique buffer names @cindex directories in buffer names When several buffers visit identically-named files, Emacs must give -the buffers distinct names. The default method -(@code{uniquify-buffer-name-style} set to -@code{post-forward-angle-brackets}) for making buffer names unique -adds @samp{}, @samp{}, etc.@: to the end of the buffer -names, where @file{dir1} and @file{dir2} are the minimal parts of the -leading directories needed to make the buffer name unique. For -example, if you have files @file{/foo/bar/mumble/name} and -@file{/baz/quux/mumble/name} visited, their buffers will be named -@samp{name} and @samp{name} correspondingly. +the buffers distinct names. The default method adds a suffix based on +the names of the directories that contain the files. For example, if +you visit files @file{/foo/bar/mumble/name} and +@file{/baz/quux/mumble/name} at the same time, their buffers will be +named @samp{name} and @samp{name}, respectively. +Emacs adds as many directory parts as are needed to make a unique name. @vindex uniquify-buffer-name-style - There are several styles to make buffer names unique. To select -one, customize the variable @code{uniquify-buffer-name-style} -(@pxref{Easy Customization}). + You can choose from several different styles for constructing unique +buffer names, by customizing the option @code{uniquify-buffer-name-style}. The @code{forward} naming method includes part of the file's directory name at the beginning of the buffer name; using this method, @@ -631,8 +627,8 @@ In contrast, the @code{post-forward} naming method would call the buffers @samp{Makefile|tmp} and @samp{Makefile|zaphod}. The default -method @code{post-forward-angle-brackets} is like @code{post-forward} -except that it prepends the unique path in angle brackets. The +method @code{post-forward-angle-brackets} is like @code{post-forward}, +except that it encloses the unique path in angle brackets. The @code{reverse} naming method would call them @samp{Makefile\tmp} and @samp{Makefile\zaphod}. The nontrivial difference between @code{post-forward} and @code{reverse} occurs when just one directory @@ -641,8 +637,7 @@ becomes @samp{file\middle\top}, while @code{post-forward} puts them in forward order after the file name, as in @samp{file|top/middle}. If @code{uniquify-buffer-name-style} is set to @code{nil}, the buffer -names simply get a @samp{<2>} etc. prepended. This used to be the -default behavior in Emacs versions up to 24.4. +names simply get @samp{<2>}, @samp{<3>}, etc. appended. Which rule to follow for putting the directory names in the buffer name is not very important if you are going to @emph{look} at the === modified file 'doc/emacs/cmdargs.texi' --- doc/emacs/cmdargs.texi 2014-04-21 14:50:19 +0000 +++ doc/emacs/cmdargs.texi 2014-06-08 01:14:58 +0000 @@ -901,30 +901,33 @@ @itemx --fullscreen @opindex --fullscreen @cindex fullscreen, command-line argument -Specify that width and height shall be the size of the screen. Normally -no window manager decorations are shown. +Specify that width and height should be that of the screen. Normally +no window manager decorations are shown. (After starting Emacs, +you can toggle this state using @key{F11}, @code{toggle-frame-fullscreen}.) @item -mm @opindex -mm @itemx --maximized @opindex --maximized @cindex maximized, command-line argument -Specify that the Emacs frame shall be maximized. This normally +Specify that the Emacs frame should be maximized. This normally means that the frame has window manager decorations. +(After starting Emacs, you can toggle this state using @kbd{M-F10}, +@code{toggle-frame-maximized}.) @item -fh @opindex -fh @itemx --fullheight @opindex --fullheight @cindex fullheight, command-line argument -Specify that the height shall be the height of the screen. +Specify that the height should be the height of the screen. @item -fw @opindex -fw @itemx --fullwidth @opindex --fullwidth @cindex fullwidth, command-line argument -Specify that the width shall be the width of the screen. +Specify that the width should be the width of the screen. @end table @noindent === modified file 'doc/emacs/dired.texi' --- doc/emacs/dired.texi 2014-04-29 14:45:24 +0000 +++ doc/emacs/dired.texi 2014-06-08 06:57:15 +0000 @@ -522,7 +522,7 @@ that already have @samp{D} flags: @example -* c D t * c SPC D * c t SPC +* c D t * c @key{SPC} D * c t @key{SPC} @end example This assumes that no files were already marked with @samp{t}. === modified file 'doc/emacs/entering.texi' --- doc/emacs/entering.texi 2014-01-01 07:43:34 +0000 +++ doc/emacs/entering.texi 2014-06-08 17:46:51 +0000 @@ -76,12 +76,17 @@ You can also force Emacs to display a file or directory at startup by setting the variable @code{initial-buffer-choice} to a string naming that file or directory. The value of -@code{initial-buffer-choice} may also be a function which should -return a buffer which is then displayed. @code{initial-buffer-choice} -may also be @code{t} in which case the @file{*scratch*} buffer will be -shown. In any case, even if you specify one or more files on the -command line, Emacs opens but does not display them if -@code{initial-buffer-choice} is non-nil. +@code{initial-buffer-choice} may also be a function (of no arguments) +that should return a buffer which is then displayed. +@ignore +@c I do not think this should be mentioned. AFAICS it is just a dodge +@c around inhibit-startup-screen not being settable on a site-wide basis. +@code{initial-buffer-choice} may also be @code{t} in which case the +@file{*scratch*} buffer will be shown. +@end ignore +If @code{initial-buffer-choice} is non-@code{nil}, then if you specify +any files on the command line, Emacs still visits them, but does not +display them initially. @node Exiting @section Exiting Emacs === modified file 'doc/emacs/files.texi' --- doc/emacs/files.texi 2014-04-29 14:45:24 +0000 +++ doc/emacs/files.texi 2014-06-08 07:41:27 +0000 @@ -171,9 +171,9 @@ buffer name from the file name, omitting the directory name. For example, a file named @file{/usr/rms/emacs.tex} is visited in a buffer named @samp{emacs.tex}. If there is already a buffer with that name, -Emacs constructs a unique name; the normal method is to append -@samp{<2>}, @samp{<3>}, and so on, but you can select other methods. -@xref{Uniquify}. +Emacs constructs a unique name; the normal method is to add a suffix +based on the directory name (e.g., @samp{}, @samp{}, +and so on), but you can select other methods. @xref{Uniquify}. @cindex creating files To create a new file, just visit it using the same command, @kbd{C-x === modified file 'doc/emacs/frames.texi' --- doc/emacs/frames.texi 2014-05-21 16:35:31 +0000 +++ doc/emacs/frames.texi 2014-06-08 01:14:58 +0000 @@ -457,12 +457,16 @@ @item M- @kindex M- @findex toggle-frame-maximized -Toggle maximization state of the current frame. +Toggle the maximization state of the current frame. When a frame is +maximized, it fills the screen. @item @kindex @findex toggle-frame-fullscreen -Toggle fullscreen mode of the current frame. +Toggle fullscreen mode for the current frame. (The difference +between ``fullscreen'' and ``maximized'' is normally that the former +hides window manager decorations, giving slightly more screen space to +Emacs itself.) @end table The @kbd{C-x 5 0} (@code{delete-frame}) command deletes the selected === modified file 'doc/emacs/help.texi' --- doc/emacs/help.texi 2014-04-30 19:54:52 +0000 +++ doc/emacs/help.texi 2014-06-08 23:41:43 +0000 @@ -55,12 +55,12 @@ @xref{Package Keywords}. @end table - @kbd{C-h}, @key{F1}, or @kbd{?} means ``help'' in various other -contexts as well. For instance, you can type them after a prefix key -to view a list of the keys that can follow the prefix key. (A few -prefix keys don't support @kbd{C-h} or @kbd{?} in this way, because -they define other meanings for it, but they all support @key{F1} for -help.) + @kbd{C-h} or @key{F1} mean ``help'' in various other contexts as +well. For instance, you can type them after a prefix key to view a +list of the keys that can follow the prefix key. (You can also use +@kbd{?} in this context. A few prefix keys don't support @kbd{C-h} +or @kbd{?} in this way, because they define other meanings for those +inputs, but they all support @key{F1}.) @menu * Help Summary:: Brief list of all Help commands. @@ -556,10 +556,10 @@ typing @kbd{C-h}, @kbd{?}, or @key{F1} (@code{describe-prefix-bindings}) after the prefix key. (There are a few prefix keys for which not all of these keys work---those that -provide their own bindings for one of them. One of these prefix keys -is @key{ESC} in combination with @kbd{C-h}, because @kbd{@key{ESC} C-h} is -actually @kbd{C-M-h}, which marks a defun. However, @kbd{@key{ESC} @key{F1}} -and @kbd{@key{ESC} ?} work fine.) +provide their own bindings for that key. One of these prefix keys +is @key{ESC}, because @kbd{@key{ESC} C-h} is actually @kbd{C-M-h}, +which marks a defun. However, @kbd{@key{ESC} @key{F1}} and +@kbd{@key{ESC} ?} work fine.) @node Help Files @section Help Files === modified file 'doc/emacs/misc.texi' --- doc/emacs/misc.texi 2014-06-08 00:35:27 +0000 +++ doc/emacs/misc.texi 2014-06-08 23:41:43 +0000 @@ -1560,9 +1560,9 @@ current text terminal. @xref{Windows Startup}. If you omit a filename argument while supplying the @samp{-c} option, -the new frame displays the @file{*scratch*} buffer by default. This -behavior can be customized using the variable -@code{initial-buffer-choice} (@pxref{Entering Emacs}). +the new frame displays the @file{*scratch*} buffer by default. You +can customize this behavior with the variable @code{initial-buffer-choice} +(@pxref{Entering Emacs}). @item -F @var{alist} @itemx --frame-parameters=@var{alist} === modified file 'doc/emacs/msdog.texi' --- doc/emacs/msdog.texi 2014-04-29 14:45:24 +0000 +++ doc/emacs/msdog.texi 2014-06-08 01:20:35 +0000 @@ -458,13 +458,6 @@ You can redefine some of them with meanings more like the MS-Windows meanings by enabling CUA Mode (@pxref{CUA Bindings}). -@kindex F10 @r{(MS-Windows)} -@cindex menu bar access using keyboard @r{(MS-Windows)} - The @key{F10} key on Windows activates the menu bar in a way that -makes it possible to use the menus without a mouse. In this mode, the -arrow keys traverse the menus, @key{RET} selects a highlighted menu -item, and @key{ESC} closes the menu. - @iftex @inforef{Windows Keyboard, , emacs}, for information about additional Windows-specific variables in this category. === modified file 'doc/emacs/rmail.texi' --- doc/emacs/rmail.texi 2014-04-29 14:45:24 +0000 +++ doc/emacs/rmail.texi 2014-06-08 23:39:23 +0000 @@ -114,7 +114,7 @@ @kindex S-SPC @r{(Rmail)} Since the most common thing to do while reading a message is to scroll through it by screenfuls, Rmail makes @key{SPC} and @key{DEL} -(or @key{S-SPC}) do the same as @kbd{C-v} (@code{scroll-up-command}) +(or @kbd{S-@key{SPC}}) do the same as @kbd{C-v} (@code{scroll-up-command}) and @kbd{M-v} (@code{scroll-down-command}) respectively. @kindex . @r{(Rmail)} @@ -753,7 +753,7 @@ value should be a regular expression; any recipients that match are excluded from the @samp{CC} field. They are also excluded from the @samp{To} field, unless this would leave the field empty. If this -variable is nil, then the first time you compose a reply it is +variable is @code{nil}, then the first time you compose a reply it is initialized to a default value that matches your own address. To omit the @samp{CC} field completely for a particular reply, enter @@ -962,7 +962,7 @@ use for the summary window. The variable @code{rmail-summary-line-count-flag} controls whether the summary line for a message should include the line count of the message. Setting -this option to nil might speed up the generation of summaries. +this option to @code{nil} might speed up the generation of summaries. @node Rmail Summary Edit @subsection Editing in Summaries === modified file 'doc/emacs/screen.texi' --- doc/emacs/screen.texi 2014-04-29 14:45:24 +0000 +++ doc/emacs/screen.texi 2014-06-08 01:20:35 +0000 @@ -285,10 +285,7 @@ can use to perform common operations. There's no need to list them here, as you can more easily see them yourself. -@kindex M-` -@kindex F10 -@findex menu-bar-open - On a display that support a mouse, you can use the mouse to choose a + On a display that supports a mouse, you can use the mouse to choose a command from the menu bar. An arrow on the right edge of a menu item means it leads to a subsidiary menu, or @dfn{submenu}. A @samp{...} at the end of a menu item means that the command will prompt you for @@ -300,12 +297,16 @@ item, type @kbd{C-h k}, and then select the menu bar with the mouse in the usual way (@pxref{Key Help}). +@kindex F10 +@findex menu-bar-open +@cindex menu bar access using keyboard Instead of using the mouse, you can also invoke the first menu bar item by pressing @key{F10} (to run the command @code{menu-bar-open}). You can then navigate the menus with the arrow keys. To activate a selected menu item, press @key{RET}; to cancel menu navigation, press @kbd{C-g} or @kbd{@key{ESC} @key{ESC} @key{ESC}}. +@kindex M-` @findex tmm-menubar @vindex tty-menu-open-use-tmm On a text terminal, you can optionally access the menu-bar menus in === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2014-06-08 00:35:27 +0000 +++ doc/lispref/ChangeLog 2014-06-08 23:41:43 +0000 @@ -1,5 +1,13 @@ 2014-06-08 Glenn Morris + * os.texi (Startup Summary): Small fix for initial-buffer-choice. + + * files.texi (Subroutines of Visiting): Mention uniquify. + + * numbers.texi (Comparison of Numbers): Copyedits. + +2014-06-08 Glenn Morris + * display.texi (Window Systems): Remove window-setup-hook. * os.texi (Startup Summary, Init File): Improve description of window-setup-hook. === modified file 'doc/lispref/anti.texi' --- doc/lispref/anti.texi 2014-01-01 07:43:34 +0000 +++ doc/lispref/anti.texi 2014-06-08 23:39:23 +0000 @@ -30,7 +30,7 @@ making your programs hard to understand. @item -Calling a minor mode function from Lisp with a nil or omitted argument +Calling a minor mode function from Lisp with a @code{nil} or omitted argument does not enable the minor mode unconditionally; instead, it toggles the minor mode---which is the straightforward thing to do, since that is the behavior when invoked interactively. One downside is that it === modified file 'doc/lispref/display.texi' --- doc/lispref/display.texi 2014-06-06 07:19:23 +0000 +++ doc/lispref/display.texi 2014-06-08 23:39:23 +0000 @@ -1720,10 +1720,10 @@ @defun overlays-at pos &optional sorted This function returns a list of all the overlays that cover the character at -position @var{pos} in the current buffer. If @var{sorted} is non-nil, the list -is in decreasing order of priority, otherwise it is in no particular order. -An overlay contains position @var{pos} if it begins at or before @var{pos}, and -ends after @var{pos}. +position @var{pos} in the current buffer. If @var{sorted} is non-@code{nil}, +the list is in decreasing order of priority, otherwise it is in no particular +order. An overlay contains position @var{pos} if it begins at or before +@var{pos}, and ends after @var{pos}. To illustrate usage, here is a Lisp function that returns a list of the overlays that specify property @var{prop} for the character at point: === modified file 'doc/lispref/files.texi' --- doc/lispref/files.texi 2014-05-14 17:15:15 +0000 +++ doc/lispref/files.texi 2014-06-08 23:41:43 +0000 @@ -254,11 +254,16 @@ which are sometimes useful in user Lisp code: @code{create-file-buffer} and @code{after-find-file}. This section explains how to use them. +@c FIXME This does not describe the default behavior, because +@c uniquify is enabled by default and advises this function. +@c This is confusing. uniquify should be folded into the function proper. @defun create-file-buffer filename This function creates a suitably named buffer for visiting @var{filename}, and returns it. It uses @var{filename} (sans directory) as the name if that name is free; otherwise, it appends a string such as @samp{<2>} to get an unused name. See also @ref{Creating Buffers}. +Note that the @file{uniquify} library affects the result of this +function. @xref{Uniquify,,, emacs, The GNU Emacs Manual}. @strong{Please note:} @code{create-file-buffer} does @emph{not} associate the new buffer with a file and does not select the buffer. === modified file 'doc/lispref/keymaps.texi' --- doc/lispref/keymaps.texi 2014-03-18 01:19:03 +0000 +++ doc/lispref/keymaps.texi 2014-06-08 23:39:23 +0000 @@ -2901,7 +2901,7 @@ @item :key-sequence @var{keys} @var{keys} is a hint for speeding up Emacs's first display of the -menu. It should be nil if you know that the menu item has no keyboard +menu. It should be @code{nil} if you know that the menu item has no keyboard equivalent; otherwise it should be a string or vector specifying a keyboard equivalent for the menu item. @@ -2929,7 +2929,7 @@ @item :selected @var{selected} @var{selected} is an expression; the checkbox or radio button is -selected whenever the expression's value is non-nil. +selected whenever the expression's value is non-@code{nil}. @item :help @var{help} @var{help} is a string describing the menu item. === modified file 'doc/lispref/modes.texi' --- doc/lispref/modes.texi 2014-03-18 21:14:36 +0000 +++ doc/lispref/modes.texi 2014-06-08 23:39:23 +0000 @@ -702,7 +702,7 @@ retrieve the documentation strings of the major and minor mode commands (@pxref{Accessing Documentation}). -If called from Lisp with a non-nil @var{buffer} argument, this +If called from Lisp with a non-@code{nil} @var{buffer} argument, this function displays the documentation for that buffer's major and minor modes, rather than those of the current buffer. @end deffn @@ -3804,8 +3804,8 @@ @end itemize When @var{arg} is a token, the function is called with point just before -that token. A return value of nil always means to fallback on the -default behavior, so the function should return nil for arguments it +that token. A return value of @code{nil} always means to fallback on the +default behavior, so the function should return @code{nil} for arguments it does not expect. @var{offset} can be: @@ -3904,7 +3904,7 @@ @itemize @item The first case indicates the basic indentation increment to use. -If @code{sample-indent-basic} is nil, then SMIE uses the global +If @code{sample-indent-basic} is @code{nil}, then SMIE uses the global setting @code{smie-indent-basic}. The major mode could have set @code{smie-indent-basic} buffer-locally instead, but that is discouraged. === modified file 'doc/lispref/numbers.texi' --- doc/lispref/numbers.texi 2014-03-19 21:21:01 +0000 +++ doc/lispref/numbers.texi 2014-06-08 00:51:10 +0000 @@ -400,27 +400,23 @@ @end defun @defun < number-or-marker &rest number-or-markers -This function tests whether every argument is strictly less than the -respective next argument. It returns @code{t} if so, @code{nil} -otherwise. +This function tests whether each argument is strictly less than the +following argument. It returns @code{t} if so, @code{nil} otherwise. @end defun @defun <= number-or-marker &rest number-or-markers -This function tests whether every argument is less than or equal to -the respective next argument. It returns @code{t} if so, @code{nil} -otherwise. +This function tests whether each argument is less than or equal to +the following argument. It returns @code{t} if so, @code{nil} otherwise. @end defun @defun > number-or-marker &rest number-or-markers -This function tests whether every argument is strictly greater than -the respective next argument. It returns @code{t} if so, @code{nil} -otherwise. +This function tests whether each argument is strictly greater than +the following argument. It returns @code{t} if so, @code{nil} otherwise. @end defun @defun >= number-or-marker &rest number-or-markers -This function tests whether every argument is greater than or equal to -the respective next argument. It returns @code{t} if so, @code{nil} -otherwise. +This function tests whether each argument is greater than or equal to +the following argument. It returns @code{t} if so, @code{nil} otherwise. @end defun @defun max number-or-marker &rest numbers-or-markers === modified file 'doc/lispref/os.texi' --- doc/lispref/os.texi 2014-06-08 00:35:27 +0000 +++ doc/lispref/os.texi 2014-06-08 23:41:43 +0000 @@ -194,11 +194,16 @@ It now exits if the option @code{--batch} was specified. @item -If @code{initial-buffer-choice} is a string, it visits the file with -that name. If it is a function, it calls the function and selects the -buffer returned by the function. It it is @code{t}, it selects the -@file{*scratch*} buffer. If the @file{*scratch*} buffer exists and is -empty, it inserts @code{initial-scratch-message} into that buffer. +If @code{initial-buffer-choice} is a string, it visits the file (or +directory) with that name. If it is a function, it calls the function +with no arguments and selects the buffer that it returns. +@ignore +@c I do not think this should be mentioned. AFAICS it is just a dodge +@c around inhibit-startup-screen not being settable on a site-wide basis. +If it is @code{t}, it selects the @file{*scratch*} buffer. +@end ignore +If the @file{*scratch*} buffer exists and is empty, it inserts +@code{initial-scratch-message} into that buffer. @c To make things nice and confusing, the next three items can be @c called from two places. If displaying a startup screen, they are @@ -753,7 +758,7 @@ (add-hook 'suspend-resume-hook (lambda () (message "Resumed!") (sit-for 2))) @end smallexample -@c The sit-for prevents the ``nil'' that suspend-emacs returns +@c The sit-for prevents the @code{nil} that suspend-emacs returns @c hiding the message. Here is what you would see upon evaluating @code{(suspend-emacs "pwd")}: === modified file 'doc/lispref/sequences.texi' --- doc/lispref/sequences.texi 2014-05-22 04:30:48 +0000 +++ doc/lispref/sequences.texi 2014-06-08 23:41:43 +0000 @@ -862,7 +862,7 @@ @defun bool-vector-subsetp a b Return @code{t} if every @code{t} value in @var{a} is also t in -@var{b}, nil otherwise. All arguments should be bool vectors of the +@var{b}, @code{nil} otherwise. All arguments should be bool vectors of the same length. @end defun === modified file 'doc/lispref/text.texi' --- doc/lispref/text.texi 2014-05-27 01:53:45 +0000 +++ doc/lispref/text.texi 2014-06-08 23:39:23 +0000 @@ -806,7 +806,7 @@ If this command acts on the entire buffer (i.e. if called interactively with the mark inactive, or called from Lisp with -@var{end} nil), it also deletes all trailing lines at the end of the +@var{end} @code{nil}), it also deletes all trailing lines at the end of the buffer if the variable @code{delete-trailing-lines} is non-@code{nil}. @end deffn @@ -2865,7 +2865,7 @@ (@pxref{Special Properties}), such as a face name or an anonymous face (@pxref{Faces}). -If any text in the region already has a non-nil @code{face} property, +If any text in the region already has a non-@code{nil} @code{face} property, those face(s) are retained. This function sets the @code{face} property to a list of faces, with @var{face} as the first element (by default) and the pre-existing faces as the remaining elements. If the === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2014-06-02 01:02:21 +0000 +++ doc/misc/ChangeLog 2014-06-08 23:41:43 +0000 @@ -1,3 +1,24 @@ +2014-06-08 Karl Berry + + * doc/info.texi (Help-^L): "mode line", "screenful", + stand-alone and Emacs Info both use the mode line. + Use x instead of weird C-x 0 to get rid of help msg + in standalone Info. + +2014-06-08 Glenn Morris + + * vip.texi (Files): Defer to Emacs manual for uniquify details. + + * info.texi (Help-Small-Screen): Clarify details of S-SPC. + (Help-Small-Screen, Help-]): Do not mention S-SPC. + (Emacs Info Variables): Markup fix. + + * ebrowse.texi (Source Display, Finding/Viewing): + * erc.texi (Sample Session): + * ses.texi (The Basics): + * todo-mode.texi (Moving and Deleting Items): + * woman.texi (Navigation): Markup fixes re SPC, RET. + 2014-06-02 Glenn Morris * efaq.texi (Finding a package with particular functionality): === modified file 'doc/misc/calc.texi' --- doc/misc/calc.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/calc.texi 2014-06-08 23:39:23 +0000 @@ -21624,7 +21624,7 @@ @noindent Every character not part of the sub-formula @samp{b} has been changed to a dot. (If the customizable variable -@code{calc-highlight-selections-with-faces} is non-nil, then the characters +@code{calc-highlight-selections-with-faces} is non-@code{nil}, then the characters not part of the sub-formula are de-emphasized by using a less noticeable face instead of using dots. @pxref{Displaying Selections}.) The @samp{*} next to the line number is to remind you that @@ -21858,7 +21858,7 @@ @end group @end smallexample If the customizable variable -@code{calc-highlight-selections-with-faces} is non-nil, then the +@code{calc-highlight-selections-with-faces} is non-@code{nil}, then the non-selected portion of the formula will be de-emphasized by using a less noticeable face (@code{calc-nonselected-face}) instead of dots and the selected sub-formula will be highlighted by using a more === modified file 'doc/misc/cc-mode.texi' --- doc/misc/cc-mode.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/cc-mode.texi 2014-06-08 23:39:23 +0000 @@ -3915,7 +3915,7 @@ position higher up in the buffer (typically the indentation of the previous line). That position is the @dfn{anchor position} in the syntactic element. If there is an entry after the syntactic symbol in -the syntactic element list then it's either nil or that anchor position. +the syntactic element list then it's either @code{nil} or that anchor position. Here is an example. Suppose we had the following code as the only thing in a C++ buffer @footnote{The line numbers in this and future examples @@ -6067,7 +6067,7 @@ @defun c-lineup-assignments @findex lineup-assignments (c-) Line up the current line after the assignment operator on the first line -in the statement. If there isn't any, return nil to allow stacking with +in the statement. If there isn't any, return @code{nil} to allow stacking with other line-up functions. If the current line contains an assignment operator too, try to align it with the first one. @@ -6532,7 +6532,7 @@ @defun c-langelem-pos langelem @findex langelem-pos (c-) -Return the anchor position in @var{langelem}, or nil if there is none. +Return the anchor position in @var{langelem}, or @code{nil} if there is none. @end defun @defun c-langelem-col langelem &optional preserve-point === modified file 'doc/misc/ebrowse.texi' --- doc/misc/ebrowse.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/ebrowse.texi 2014-06-08 06:57:15 +0000 @@ -475,13 +475,13 @@ name. @table @kbd -@item SPC +@item @key{SPC} This command views the class declaration if the database contains information about it. If you don't parse the entire source you are working on, some classes will only be known to exist but the location of their declarations and definitions will not be known. -@item RET +@item @key{RET} Works like @kbd{SPC}, except that it finds the class declaration rather than viewing it, so that it is ready for editing. @@ -876,7 +876,7 @@ @cindex declaration of a member, in member buffers @table @kbd -@item RET +@item @key{RET} This command finds the definition of the member the cursor is on. Finding involves roughly the same as the standard Emacs tags facility does---loading the file and searching for a regular expression matching @@ -885,7 +885,7 @@ @item f This command finds the declaration of the member the cursor is on. -@item SPC +@item @key{SPC} This is the same command as @kbd{RET}, but views the member definition instead of finding the member's source file. === modified file 'doc/misc/ede.texi' --- doc/misc/ede.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/ede.texi 2014-06-08 23:39:23 +0000 @@ -1200,7 +1200,7 @@ from the autoload. If it is a string (i.e., a project file name), it checks to see if that exists in BUFFER's directory. If it is a function, then it calls that function and expects it to return a file -name or nil. If the file exists, then this directory is assumed to be +name or @code{nil}. If the file exists, then this directory is assumed to be part of a project, and @code{ede-directory-project-p} returns the instance of @code{ede-project-autoload} that matched. @@ -1275,11 +1275,11 @@ A brief description of the project or target. This is currently used by the @samp{ede-speedbar} interface. @item ede-want-file-p -Return non-nil if a target will accept a given file. +Return non-@code{nil} if a target will accept a given file. It is generally unnecessary to override this. See the section on source code. @item ede-buffer-mine -Return non-nil if a buffer belongs to this target. Used during +Return non-@code{nil} if a buffer belongs to this target. Used during association when a file is loaded. It is generally unnecessary to override this unless you keep auxiliary files. @end table @@ -1614,7 +1614,7 @@ @end deffn @deffn Method ede-map-any-target-p :AFTER this proc -For project @var{THIS}, map @var{PROC} to all targets and return if any non-nil. +For project @var{THIS}, map @var{PROC} to all targets and return if any non-@code{nil}. Return the first non-@code{nil} value returned by @var{PROC}. @end deffn @@ -1768,7 +1768,7 @@ @end deffn @deffn Method ede-find-target :AFTER proj buffer -Fetch the target in @var{PROJ} belonging to @var{BUFFER} or nil. +Fetch the target in @var{PROJ} belonging to @var{BUFFER} or @code{nil}. @end deffn @deffn Method ede-add-subproject :AFTER proj-a proj-b @@ -1884,8 +1884,8 @@ NAME - The name of the file to find. DIR - The directory root for this cpp-root project. -It should return the fully qualified file name passed in from NAME@. If that file does not -exist, it should return nil. +It should return the fully qualified file name passed in from NAME@. +If that file does not exist, it should return @code{nil}. @end table @@ -2047,7 +2047,7 @@ Non-@code{nil} if this is a metasubproject. Usually, a subproject is determined by a parent project. If multiple top level projects are grouped into a large project not maintained by EDE, then you need -to set this to non-nil. The only effect is that the @code{dist} rule will then avoid +to set this to non-@code{nil}. The only effect is that the @code{dist} rule will then avoid making a tar file. @end table @@ -2281,7 +2281,7 @@ Non-@code{nil} if this is a metasubproject. Usually, a subproject is determined by a parent project. If multiple top level projects are grouped into a large project not maintained by EDE, then you need -to set this to non-nil. The only effect is that the @code{dist} rule will then avoid +to set this to non-@code{nil}. The only effect is that the @code{dist} rule will then avoid making a tar file. @end table === modified file 'doc/misc/efaq-w32.texi' --- doc/misc/efaq-w32.texi 2014-02-25 03:11:11 +0000 +++ doc/misc/efaq-w32.texi 2014-06-08 23:39:23 +0000 @@ -1176,8 +1176,8 @@ @cindex font menu, adding fonts @vindex w32-fixed-font-alist -If you have set w32-use-w32-font-dialog to nil, you can add fonts to -the font menu by changing `w32-fixed-font-alist'. For example: +If you have set w32-use-w32-font-dialog to @code{nil}, you can add fonts to +the font menu by changing @code{w32-fixed-font-alist}. For example: @example (setq w32-fixed-font-alist @@ -1664,8 +1664,8 @@ @code{smtpmail-smtp-server}. If you are experiencing problems with sending large messages, check -the value of the variable @code{smtpmail-debug-info}. If it is non-nil, you -should set it to @code{nil}: +the value of the variable @code{smtpmail-debug-info}. If it is +non-@code{nil}, you should set it to @code{nil}: @node Incoming mail with Rmail @subsection Incoming mail with Rmail and POP3 === modified file 'doc/misc/efaq.texi' --- doc/misc/efaq.texi 2014-06-02 01:02:21 +0000 +++ doc/misc/efaq.texi 2014-06-08 23:41:43 +0000 @@ -1944,7 +1944,7 @@ left or right edge of the window. Note that this is overridden by the variable -@code{truncate-partial-width-windows} if that variable is non-nil +@code{truncate-partial-width-windows} if that variable is non-@code{nil} and the current buffer is not full-frame width. In Emacs 20, use @code{hscroll-mode}. === modified file 'doc/misc/eieio.texi' --- doc/misc/eieio.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/eieio.texi 2014-06-08 23:39:23 +0000 @@ -306,7 +306,7 @@ @end defun @defvar eieio-error-unsupported-class-tags -If non-nil, @code{defclass} signals an error if a tag in a slot +If non-@code{nil}, @code{defclass} signals an error if a tag in a slot specifier is unsupported. This option is here to support programs written with older versions of @@ -471,7 +471,7 @@ @item my-class-name An object of your class type. @item (or null symbol) - A symbol, or nil. + A symbol, or @code{nil}. @end table @item :allocation @@ -573,7 +573,7 @@ of slots, and before the options. @item :allow-nil-initform -If this option is non-nil, and the @code{:initform} is @code{nil}, but +If this option is non-@code{nil}, and the @code{:initform} is @code{nil}, but the @code{:type} is specifies something such as @code{string} then allow this to pass. The default is to have this option be off. This is implemented as an alternative to unbound slots. @@ -1264,7 +1264,7 @@ @defun class-slot-initarg class slot For the given @var{class} return the :initarg associated with @var{slot}. Not all slots have initargs, so the return value can be -nil. +@code{nil}. @end defun @node Base Classes === modified file 'doc/misc/emacs-gnutls.texi' --- doc/misc/emacs-gnutls.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/emacs-gnutls.texi 2014-06-08 23:39:23 +0000 @@ -94,7 +94,7 @@ Zaretskii) in the same directory as Emacs, you should be OK. @defun gnutls-available-p -This function returns t if GnuTLS is available in this instance of Emacs. +This function returns @code{t} if GnuTLS is available in this instance of Emacs. @end defun Oh, but sometimes things go wrong. Budgets aren't balanced, === modified file 'doc/misc/erc.texi' --- doc/misc/erc.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/erc.texi 2014-06-08 06:57:15 +0000 @@ -150,7 +150,7 @@ @item Join the #emacs channel -In that buffer, type ``/join SPC #emacs'' and hit @kbd{RET}. Depending +In that buffer, type ``/join @key{SPC} #emacs'' and hit @kbd{RET}. Depending on how you've set up ERC, either a new buffer for ``#emacs'' will be displayed, or a new buffer called ``#emacs'' will be created in the background. If the latter, switch to the ``#emacs'' buffer. You will === modified file 'doc/misc/ert.texi' --- doc/misc/ert.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/ert.texi 2014-06-08 23:39:23 +0000 @@ -139,8 +139,7 @@ If you know @code{defun}, the syntax of @code{ert-deftest} should look familiar: This example defines a test named @code{pp-test-quote} that -will pass if the three calls to @code{equal} all return true -(non-nil). +will pass if the three calls to @code{equal} all return non-@code{nil}. @code{should} is a macro with the same meaning as @code{cl-assert} but better error reporting. @xref{The @code{should} Macro}. @@ -315,7 +314,8 @@ @item @code{(tag TAG)} selects all tests that have TAG on their tags list. (Tags are optional labels you can apply to tests when you define them.) @item @code{(satisfies PREDICATE)} selects all tests that satisfy PREDICATE, -a function that takes a test as argument and returns non-nil if it is selected. +a function that takes a test as argument and returns non-@code{nil} if +it is selected. @end itemize Selectors that are frequently useful when selecting tests to run @@ -382,13 +382,13 @@ @end example In this example, @code{should} recorded the fact that (= (+ 1 2) 4) -reduced to (= 3 4) before it reduced to nil. When debugging why the +reduced to (= 3 4) before it reduced to @code{nil}. When debugging why the test failed, it helps to know that the function @code{+} returned 3 here. ERT records the return value for any predicate called directly within @code{should}. In addition to @code{should}, ERT provides @code{should-not}, which -checks that the predicate returns nil, and @code{should-error}, which +checks that the predicate returns @code{nil}, and @code{should-error}, which checks that the form called within it signals an error. An example use of @code{should-error}: @@ -531,7 +531,7 @@ predictable semantics like @code{with-temp-buffer}, @code{insert} or @code{insert-file-contents-literally}, and to activate any desired mode by calling the corresponding function directly, after binding the -hook variables to nil. This avoids the above problems. +hook variables to @code{nil}. This avoids the above problems. @node Useful Techniques @@ -761,7 +761,7 @@ that it returns. The explanation can be any object but should have a comprehensible printed representation. If the return value of the predicate needs no explanation for a given list of arguments, the -explanation function should return nil. +explanation function should return @code{nil}. To associate an explanation function with a predicate, add the property @code{ert-explainer} to the symbol that names the predicate. === modified file 'doc/misc/eshell.texi' --- doc/misc/eshell.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/eshell.texi 2014-06-08 23:39:23 +0000 @@ -676,8 +676,8 @@ by adding a list of the form @samp{("/dev/name" @var{function} @var{mode})} to @code{eshell-virtual-targets}. The first element is the device name; @var{function} may be either a lambda or a function name. If -@var{mode} is nil, then the function is the output function; if it is -non-nil, then the function is passed the redirection mode as a +@var{mode} is @code{nil}, then the function is the output function; if it is +non-@code{nil}, then the function is passed the redirection mode as a symbol--@code{overwrite} for @code{>}, @code{append} for @code{>>}, or @code{insert} for @code{>>>}--and the function is expected to return the output function. === modified file 'doc/misc/gnus-faq.texi' --- doc/misc/gnus-faq.texi 2014-03-23 23:16:06 +0000 +++ doc/misc/gnus-faq.texi 2014-06-08 23:41:43 +0000 @@ -377,7 +377,7 @@ You've got to tell Gnus where to fetch the news from. Read the documentation for information on how to do this. As a -first start, put those lines in ~/.gnus.el: +first start, put those lines in @file{~/.gnus.el}: @example (setq gnus-select-method '(nntp "news.yourprovider.net")) @@ -389,7 +389,7 @@ @node FAQ 3-2 @subsubheading Question 3.2 -I'm working under Windows and have no idea what ~/.gnus.el means. +I'm working under Windows and have no idea what @file{~/.gnus.el} means. @subsubheading Answer @@ -421,7 +421,7 @@ possibility to set environment variables. Create a new one with name HOME and value C:\myhome. Rebooting is not necessary. -Now to create ~/.gnus.el, say +Now to create @file{~/.gnus.el}, say @samp{C-x C-f ~/.gnus.el RET C-x C-s}. in Emacs. @@ -495,7 +495,7 @@ Of course. You can specify more sources for articles in the variable gnus-secondary-select-methods. Add something like -this in ~/.gnus.el: +this in @file{~/.gnus.el}: @example (add-to-list 'gnus-secondary-select-methods @@ -566,7 +566,7 @@ and is therefore quite fast. However you might prefer a one file per group approach if your file system has problems with many small files, the nnfolder back end is then probably the -choice for you. To use nnml add the following to ~/.gnus.el: +choice for you. To use nnml add the following to @file{~/.gnus.el}: @example (add-to-list 'gnus-secondary-select-methods '(nnml "")) @@ -591,7 +591,7 @@ @end example @noindent -Make sure ~/.gnus.el isn't readable to others if you store +Make sure @file{~/.gnus.el} isn't readable to others if you store your password there. If you want to read your mail from a traditional spool file on your local machine, it's @@ -630,7 +630,7 @@ want to send mail via sendmail (or whichever MTA is playing the role of sendmail on your system), you don't need to do anything. However, if you want to send your mail to an -SMTP Server you need the following in your ~/.gnus.el +SMTP Server you need the following in your @file{~/.gnus.el} @example (setq send-mail-function 'smtpmail-send-it) @@ -650,7 +650,7 @@ to use IMAP like POP3, that means Gnus fetches the mail from the IMAP server and stores it on disk. If you want to do this (you don't really want to do this) add the following to -~/.gnus.el +@file{~/.gnus.el} @example (add-to-list 'mail-sources '(imap :server "mail.mycorp.com" @@ -765,7 +765,7 @@ @end example @noindent -in ~/.gnus.el to load enough old articles to prevent teared threads, replace 'some with t to load +in @file{~/.gnus.el} to load enough old articles to prevent teared threads, replace 'some with @code{t} to load all articles (Warning: Both settings enlarge the amount of data which is fetched when you enter a group and slow down the process of entering a group). @@ -829,7 +829,7 @@ are shown, its value is a regular expression, header lines which match it are shown. So if you want author, subject, date, and if the header exists, Followup-To and MUA / NUA -say this in ~/.gnus.el: +say this in @file{~/.gnus.el}: @example (setq gnus-visible-headers @@ -856,7 +856,7 @@ @end example @noindent -in ~/.gnus.el. If you don't want HTML rendered, even if there's no text alternative add +in @file{~/.gnus.el}. If you don't want HTML rendered, even if there's no text alternative add @example (setq mm-automatic-display (remove "text/html" mm-automatic-display)) @@ -970,7 +970,7 @@ @end example @noindent -in ~/.gnus.el. +in @file{~/.gnus.el}. @node FAQ 4-10 @subsubheading Question 4.10 @@ -985,7 +985,7 @@ can set options for the group. At the bottom of the buffer you'll find an item that allows you to set variables locally for the group. To disable threading enter -gnus-show-threads as name of variable and nil as +gnus-show-threads as name of variable and @code{nil} as value. Hit button done at the top of the buffer when you're ready. @@ -1147,7 +1147,7 @@ @end example @noindent -in ~/.gnus.el. +in @file{~/.gnus.el}. An example might be better than thousand words, so here's my nnmail-split-methods. Note that I send duplicates in a @@ -1269,7 +1269,7 @@ @end example @noindent -in ~/.gnus.el. +in @file{~/.gnus.el}. You can reformat a paragraph by hitting @samp{M-q} (as usual). @@ -1303,7 +1303,7 @@ organization, address, name or body. The attribute name can also be a string. In that case, this will be used as a header name, and the value will be inserted in the -headers of the article; if the value is `nil', the header +headers of the article; if the value is @code{nil}, the header name will be removed. You can also say (eval (foo bar)), then the function foo will be evaluated with argument bar and the result will be thrown away. @@ -1395,7 +1395,7 @@ @end example @noindent -In your ~/.gnus.el, if you prefer on-the-fly spell-checking say +In your @file{~/.gnus.el}, if you prefer on-the-fly spell-checking say @example (add-hook 'message-mode-hook (lambda () (flyspell-mode 1))) @@ -1423,7 +1423,7 @@ @end example @noindent -in ~/.gnus.el. Change "^de\\." and "deutsch8" to something +in @file{~/.gnus.el}. Change "^de\\." and "deutsch8" to something that suits your needs. @node FAQ 5-7 @@ -1452,7 +1452,7 @@ However, what you really want is the Insidious Big Brother Database bbdb. Get it through the XEmacs package system or from @uref{http://bbdb.sourceforge.net/, bbdb's homepage}. -Now place the following in ~/.gnus.el, to activate bbdb for Gnus: +Now place the following in @file{~/.gnus.el}, to activate bbdb for Gnus: @example (require 'bbdb) @@ -1532,7 +1532,7 @@ @end example @noindent -in ~/.gnus.el. If you use Gnus 5.10, you can simply add an entry +in @file{~/.gnus.el}. If you use Gnus 5.10, you can simply add an entry @example (x-face-file "~/.xface") @@ -1550,7 +1550,7 @@ @subsubheading Answer -Put this in ~/.gnus.el: +Put this in @file{~/.gnus.el}: @example (setq gnus-confirm-mail-reply-to-news t) @@ -1580,7 +1580,7 @@ @subsubheading Answer Since 5.10 Gnus doesn't generate a sender header by -default. For older Gnus' try this in ~/.gnus.el: +default. For older Gnus' try this in @file{~/.gnus.el}: @example (eval-after-load "message" @@ -1645,7 +1645,7 @@ @end example @noindent -in ~/.gnus.el. If you use Gnus 5.9 or earlier, you can use this +in @file{~/.gnus.el}. If you use Gnus 5.9 or earlier, you can use this instead (works for newer versions as well): @example @@ -1745,7 +1745,7 @@ it be much more convenient to have more direct access to the archived message from Gnus? If you say yes, put this snippet by Frank Haun in -~/.gnus.el: +@file{~/.gnus.el}: @example (defun my-archive-article (&optional n) @@ -1898,7 +1898,7 @@ @subsubheading Answer -Say something like this in ~/.gnus.el: +Say something like this in @file{~/.gnus.el}: @example (setq nnmail-expiry-target "nnml:expired") @@ -1980,7 +1980,7 @@ mail and news and store them on disk for reading them later when you're offline. It kind of mimics offline newsreaders like Forte Agent. If you want to use -the Agent place the following in ~/.gnus.el if you are +the Agent place the following in @file{~/.gnus.el} if you are still using 5.8.8 or 5.9 (it's the default since 5.10): @example @@ -2175,13 +2175,13 @@ The reason for this could be the way Gnus reads its active file, see the node "The Active File" in the Gnus manual for things you might try to speed the process up. -An other idea would be to byte compile your ~/.gnus.el (say +An other idea would be to byte compile your @file{~/.gnus.el} (say @samp{M-x byte-compile-file RET ~/.gnus.el RET} to do it). Finally, if you have require statements in your .gnus, you could replace them with eval-after-load, which loads the stuff not at startup time, but when it's needed. Say you've got this in your -~/.gnus.el: +@file{~/.gnus.el}: @example (require 'message) @@ -2208,7 +2208,7 @@ @subsubheading Answer A speed killer is setting the variable -gnus-fetch-old-headers to anything different from nil, +gnus-fetch-old-headers to anything different from @code{nil}, so don't do this if speed is an issue. To speed up building of summary say @@ -2217,7 +2217,7 @@ @end example @noindent -at the bottom of your ~/.gnus.el, this will make gnus +at the bottom of your @file{~/.gnus.el}, this will make gnus byte-compile things like gnus-summary-line-format. then you could increase the value of gc-cons-threshold @@ -2237,7 +2237,7 @@ @end example @noindent -in ~/.gnus.el (thanks to Jesper harder for the last +in @file{~/.gnus.el} (thanks to Jesper harder for the last two suggestions). Finally if you are still using 5.8.8 or 5.9 and experience speed problems with summary buffer generation, you definitely should update to @@ -2263,8 +2263,8 @@ @table @dfn @item ~/.gnus.el -When the term ~/.gnus.el is used it just means your Gnus -configuration file. You might as well call it ~/.gnus or +When the term @file{~/.gnus.el} is used it just means your Gnus +configuration file. You might as well call it @file{~/.gnus} or specify another name. @item Back End === modified file 'doc/misc/gnus.texi' --- doc/misc/gnus.texi 2014-05-08 03:41:21 +0000 +++ doc/misc/gnus.texi 2014-06-08 23:41:43 +0000 @@ -12537,7 +12537,7 @@ Modify to suit your needs. @vindex gnus-message-highlight-citation -If @code{gnus-message-highlight-citation} is t, different levels of +If @code{gnus-message-highlight-citation} is @code{t}, different levels of citations are highlighted like in Gnus article buffers also in message mode buffers. @@ -20487,7 +20487,7 @@ You can inhibit this slow scoring on headers or body by setting the variable @code{gnus-inhibit-slow-scoring}. If @code{gnus-inhibit-slow-scoring} is regexp, slow scoring is inhibited if -the group matches the regexp. If it is t, slow scoring on it is +the group matches the regexp. If it is @code{t}, slow scoring on it is inhibited for all groups. Now, there's not much you can do about the slowness for news groups, but for @@ -21414,18 +21414,19 @@ %g Article original short group name (string) @end example -If nil (the default) this will use @code{gnus-summary-line-format}. +If @code{nil} (the default) this will use @code{gnus-summary-line-format}. @item nnir-retrieve-headers-override-function -If non-nil, a function that retrieves article headers rather than using +If non-@code{nil}, a function that retrieves article headers rather than using the gnus built-in function. This function takes an article list and group as arguments and populates the `nntp-server-buffer' with the retrieved headers. It should then return either 'nov or 'headers indicating the retrieved header format. Failure to retrieve headers should return @code{nil}. -If this variable is nil, or if the provided function returns nil for a -search result, @code{gnus-retrieve-headers} will be called instead." +If this variable is @code{nil}, or if the provided function returns +@code{nil} for a search result, @code{gnus-retrieve-headers} will be +called instead." @end table @@ -21928,7 +21929,7 @@ search for determining the file name of the article. This, of course, is way slower than the registry---if you set hundreds or even thousands of marks this way, it might take some time. You can avoid this situation by -setting @code{nnmairix-only-use-registry} to t. +setting @code{nnmairix-only-use-registry} to @code{t}. Maybe you also want to propagate marks the other way round, i.e., if you tick an article in a "real" mail group, you'd like to have the same @@ -24874,7 +24875,7 @@ While @code{spam-use-BBDB-exclusive} @emph{can} be used as an alias for @code{spam-use-BBDB} as far as @code{spam.el} is concerned, it is @emph{not} a separate back end. If you set -@code{spam-use-BBDB-exclusive} to t, @emph{all} your BBDB splitting +@code{spam-use-BBDB-exclusive} to @code{t}, @emph{all} your BBDB splitting will be exclusive. @end defvar === modified file 'doc/misc/htmlfontify.texi' --- doc/misc/htmlfontify.texi 2014-05-24 22:23:47 +0000 +++ doc/misc/htmlfontify.texi 2014-06-08 23:39:23 +0000 @@ -792,7 +792,7 @@ @end lisp Given @var{props}, a list of text-properties, return the value of the -face property, or nil. +face property, or @code{nil}. @item hfy-box-to-border-assoc @findex hfy-box-to-border-assoc @@ -824,7 +824,7 @@ This matches Emacs's behavior when deciding on which face attributes to use, to the best of my understanding ). -If @var{class} is nil, then you just get get whatever +If @var{class} is @code{nil}, then you just get get whatever @code{face-attr-construct} returns; i.e., the current specification in effect for @var{face}. === modified file 'doc/misc/idlwave.texi' --- doc/misc/idlwave.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/idlwave.texi 2014-06-08 23:39:23 +0000 @@ -1645,7 +1645,7 @@ @defopt idlwave-completion-force-default-case (@code{nil}) Non-@code{nil} means completion will always honor the settings in -@code{idlwave-completion-case}. When nil (the default), entirely lower +@code{idlwave-completion-case}. When @code{nil} (the default), entirely lower case strings will always be completed to lower case, no matter what the settings in @code{idlwave-completion-case}. @end defopt === modified file 'doc/misc/info.texi' --- doc/misc/info.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/info.texi 2014-06-08 19:30:13 +0000 @@ -151,19 +151,22 @@ screen, it is necessary to give you special advice at the beginning. If the entire text you are looking at fits on the screen, the text -@samp{All} will be displayed at the bottom of the screen. In the -stand-alone Info reader, it is displayed at the bottom right corner of -the screen; in Emacs, it is displayed on the modeline. If you see the -text @samp{Top} instead, it means that there is more text below that -does not fit. To move forward through the text and see another screen -full, press @key{SPC}, the Space bar. To move back up, press the key +@samp{All} will be displayed near the bottom of the screen, on the +mode line (usually, the line in inverse video). If you see the text +@samp{Top} instead, it means that there is more text below that does +not fit. To move forward through the text and see another screenful, +press @key{SPC}, the Space bar. To move back up, press the key labeled @samp{Backspace} or @samp{DEL} (on some keyboards, this key -might be labeled @samp{Delete}), or @key{S-SPC}. +might be labeled @samp{Delete}). In a graphical Emacs, you can also use +@kbd{S-@key{SPC}} (press and hold the @key{Shift} key and then press +@key{SPC}) to move backwards, but this does not work in the +stand-alone Info reader (nor in Emacs, if you are using it in a +text-mode terminal). @ifinfo -Here are 40 lines of junk, so you can try @key{SPC} and @key{DEL} (or -@key{S-SPC}) and see what they do. At the end are instructions of -what you should do next. +Here are 40 lines of junk, so you can try @key{SPC} and @key{DEL} and +see what they do. At the end are instructions of what you should do +next. @format This is line 20 @@ -209,11 +212,11 @@ @end format If you have managed to get here, go back to the beginning with -@kbd{DEL} (or @key{S-SPC}), and come back here again, then you -understand the about the @samp{Space} and @samp{Backspace} keys. So -now type an @kbd{n}---just one character; don't type the quotes and -don't type the Return key afterward---to get to the normal start of -the course. +@key{DEL} (or @key{BACKSPACE}), and come back here again, then you +understand about the @samp{Space} and @samp{Backspace} keys. So now +type an @kbd{n}---just one character; don't type the quotes and don't +type the Return key afterward---to get to the normal start of the +course. @end ifinfo @node Help @@ -401,13 +404,10 @@ >> Type a @key{?} now. Press @key{SPC} to see consecutive screenfuls of the list until finished. Then type @key{SPC} several times. If you are using Emacs, the help will then go away automatically. + If you are using the stand-alone Info reader, type @kbd{x} to + return here. @end format - (If you are using the stand-alone Info reader, type @kbd{C-x 0} to -return here, that is---press and hold @key{CTRL}, type an @kbd{x}, -then release @key{CTRL} and @kbd{x}, and press @kbd{0}; that's a zero, -not the letter ``o''.) - From now on, you will encounter large nodes without warning, and will be expected to know how to use @key{SPC} and @key{BACKSPACE} to move around in them without being told. Since not all terminals have @@ -478,10 +478,10 @@ If you immediately want to go to that node, without having to scroll to the bottom of the screen first, you can type @kbd{]}. -Similarly, @kbd{@key{BACKSPACE}} (or @kbd{@key{S-SPC}}) carries you to -the preceding node regardless of level, after you scrolled to the -beginning of the present node. If you want to go to the preceding -node immediately, you can type @kbd{[}. +Similarly, @kbd{@key{BACKSPACE}} carries you to the preceding node +regardless of level, after you scrolled to the beginning of the +present node. If you want to go to the preceding node immediately, +you can type @kbd{[}. For instance, typing this sequence will come back here in three steps: @kbd{[ n [}. To do the same backward, type @kbd{] p ]}. @@ -1214,7 +1214,7 @@ @item Info-scroll-prefer-subnodes If set to a non-@code{nil} value, @key{SPC} and @key{BACKSPACE} (or -@key{DEL}, or @key{S-SPC}) keys in a menu visit subnodes of the +@key{DEL}, or @kbd{S-@key{SPC}}) keys in a menu visit subnodes of the current node before scrolling to its end or beginning, respectively. For example, if the node's menu appears on the screen, the next @key{SPC} moves to a subnode indicated by the following menu item. === modified file 'doc/misc/mairix-el.texi' --- doc/misc/mairix-el.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/mairix-el.texi 2014-06-08 23:39:23 +0000 @@ -307,7 +307,7 @@ make updates as fast as possible. Note that by using these options, absolutely no integrity checking is done. If your database somehow gets corrupted, simply delete it and update. If `mairix-synchronous-update' -is nil (the default), mairix will be called in a subprocess so Emacs +is @code{nil} (the default), mairix will be called in a subprocess so Emacs will still be usable while the update is done. @end table === modified file 'doc/misc/message.texi' --- doc/misc/message.texi 2014-05-08 03:41:21 +0000 +++ doc/misc/message.texi 2014-06-08 23:41:43 +0000 @@ -2137,7 +2137,7 @@ @vindex message-fill-column @cindex auto-fill Local value for the column beyond which automatic line-wrapping should -happen for message buffers. If non-nil (the default), also turn on +happen for message buffers. If non-@code{nil} (the default), also turn on auto-fill in message buffers. @item message-signature-separator === modified file 'doc/misc/mh-e.texi' --- doc/misc/mh-e.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/mh-e.texi 2014-06-08 23:39:23 +0000 @@ -3739,7 +3739,7 @@ The hook @code{mh-kill-folder-suppress-prompt-functions} is an abnormal hook run at the beginning of the command @kbd{k}. The hook functions -are called with no arguments and should return a non-nil value to +are called with no arguments and should return a non-@code{nil} value to suppress the normal prompt when you remove a folder. This is useful for folders that are easily regenerated. The default value of @code{mh-search-p} suppresses the prompt on folders generated by === modified file 'doc/misc/reftex.texi' --- doc/misc/reftex.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/reftex.texi 2014-06-08 23:39:23 +0000 @@ -4078,7 +4078,7 @@ This may also be a function to do local parsing and identify point to be in a non-standard label environment. The function must take an argument @var{bound} and limit backward searches to this value. It -should return either nil or a cons cell @code{(@var{function} +should return either @code{nil} or a cons cell @code{(@var{function} . @var{position})} with the function symbol and the position where the special environment starts. See the Info documentation for an example. @@ -4235,7 +4235,7 @@ default does parse around each label to detect the correct label type, but this process can be slow when a document contains thousands of labels. If you use label prefixes consistently, you may speed up -document parsing by setting this variable to a non-nil value. RefTeX +document parsing by setting this variable to a non-@code{nil} value. RefTeX will then compare the label prefix with the prefixes found in `reftex-label-alist' and derive the correct label type in this way. Possible values for this option are: @@ -4822,7 +4822,7 @@ @defopt reftex-index-verify-function A function which is called at each match during global indexing. -If the function returns nil, the current match is skipped. +If the function returns @code{nil}, the current match is skipped. @end defopt @defopt reftex-index-phrases-skip-indexed-matches @@ -4942,7 +4942,7 @@ @defopt reftex-revisit-to-echo Non-@code{nil} means, automatic citation display will revisit files if -necessary. When nil, citation display in echo area will only be active +necessary. When @code{nil}, citation display in echo area will only be active for cached echo strings (see @code{reftex-cache-cite-echo}), or for @BibTeX{} database files which are already visited by a live associated buffers. @@ -5275,8 +5275,8 @@ - supply arguments for macros like @code{\index} (flag 5) @end example -You may also set the variable itself to t or nil in order to turn all -options on or off, respectively.@* +You may also set the variable itself to @code{t} or @code{nil} in +order to turn all options on or off, respectively.@* Supplying labels in new sections and environments applies when creating sections with @kbd{C-c C-s} and environments with @kbd{C-c C-e}.@* Supplying macro arguments applies when you insert such a macro @@ -5286,7 +5286,7 @@ @defopt reftex-revisit-to-follow Non-@code{nil} means, follow-mode will revisit files if necessary. -When nil, follow-mode will be suspended for stuff in unvisited files. +When @code{nil}, follow-mode will be suspended for stuff in unvisited files. @end defopt @defopt reftex-allow-detached-macro-args @@ -5395,8 +5395,8 @@ This can speed-up document parsing, but may in some cases reduce the quality of the context used by RefTeX to describe a label. @item -Fixed bug in @code{reftex-create-bibtex-file} when @code{reftex-comment-citations} -is non-nil. +Fixed bug in @code{reftex-create-bibtex-file} when +@code{reftex-comment-citations} is non-@code{nil}. @item Fixed bugs in indexing: Case-sensitive search, quotes before and/or after words. Disabled indexing in comment lines. @@ -5743,7 +5743,7 @@ @kbd{M-x reftex-reset-mode} now also removes the file with parsing info. @item -Default of @code{reftex-revisit-to-follow} changed to nil. +Default of @code{reftex-revisit-to-follow} changed to @code{nil}. @end itemize @noindent @b{Version 3.24} === modified file 'doc/misc/ses.texi' --- doc/misc/ses.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/ses.texi 2014-06-08 06:57:15 +0000 @@ -223,7 +223,7 @@ ranges. @table @kbd -@item C-SPC +@item C-@key{SPC} @itemx C-@@ Set mark at point (@code{set-mark-command}). === modified file 'doc/misc/srecode.texi' --- doc/misc/srecode.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/srecode.texi 2014-06-08 23:39:23 +0000 @@ -1175,7 +1175,7 @@ @subsubsection Argument :indent -Supplies the @code{INDENT} macro. When @code{INDENT} is non-nil, then +Supplies the @code{INDENT} macro. When @code{INDENT} is non-@code{nil}, then each line is individually indented with @code{indent-according-to-mode} during macro processing. @@ -1577,7 +1577,7 @@ @defun srecode-insert-fcn template dictionary &optional stream @anchor{srecode-insert-fcn} Insert @var{template} using @var{dictionary} into @var{stream}. -If @var{stream} is nil, then use the current buffer. +If @var{stream} is @code{nil}, then use the current buffer. @end defun @node Template Naming Conventions === modified file 'doc/misc/todo-mode.texi' --- doc/misc/todo-mode.texi 2014-05-23 16:54:35 +0000 +++ doc/misc/todo-mode.texi 2014-06-08 23:39:23 +0000 @@ -634,12 +634,12 @@ @item @samp{diary} (@kbd{y}): Override the option @code{todo-include-in-diary}; that is, add @code{todo-nondiary-marker} -if the option is non-nil, omit this marker if the option is nil. +if the option is non-@code{nil}, omit this marker if the option is @code{nil}. @samp{nonmarking} (@kbd{k}): Override the option @code{todo-diary-nonmarking}; that is, add -@code{diary-nonmarking-symbol} if the option is non-nil, omit this -symbol if the option is nil. Since this symbol only applies to diary +@code{diary-nonmarking-symbol} if the option is non-@code{nil}, omit this +symbol if the option is @code{nil}. Since this symbol only applies to diary items, the new item is automatically marked as such, i.e., lacks @code{todo-nondiary-marker}. @@ -658,7 +658,7 @@ @samp{time} (@kbd{t}): Prompt for entering a time string in the minibuffer instead of automatically inserting the current time; however, typing @key{RET} at the prompt enters the current time if -@code{todo-always-add-time-string} is non-nil, otherwise it enters the +@code{todo-always-add-time-string} is non-@code{nil}, otherwise it enters the empty string (i.e., no time string). @item @@ -669,7 +669,7 @@ @samp{region} (@kbd{r}): Use the text of the selected region as the text of the new item, and insert this in accordance with the item insertion options and other parameters passed. If the option -@code{todo-use-only-highlighted-region} is non-nil, then use the +@code{todo-use-only-highlighted-region} is non-@code{nil}, then use the region only when it is highlighted; otherwise, use the region regardless of highlighting. @end enumerate @@ -733,14 +733,14 @@ @c @item @c @kbd{i y h} does the same as the preceding command, except that @c @code{todo-nondiary-marker} is added if @code{todo-include-in-diary} is -@c non-nil and omitted if that option is nil; that is, the diary key @kbd{y} -@c overrides the setting of this option. +@c non-@code{nil} and omitted if that option is @code{nil}; that is, +@c the diary key @kbd{y} @c overrides the setting of this option. @c @item @c @kbd{i y t h} does the same as the preceding command, except that it @c prompts for a time string instead of automatically inserting the @c current time; however, typing @key{RET} at the prompt returns the -@c current time if @code{todo-always-add-time-string} is non-nil, otherwise -@c the empty string (i.e., no time string). +@c current time if @code{todo-always-add-time-string} is non-@code{nil}, +@c otherwise the empty string (i.e., no time string). @c @item @c @kbd{i y t t} does the same as the preceding command, except that it @c prompts for the item's priority and inserts it accordingly. @@ -815,7 +815,7 @@ @samp{time} (@kbd{t}): Edit the current item's time string, if present; otherwise, add one. Typing @key{RET} at the prompt enters -the current time if @code{todo-always-add-time-string} is non-nil, +the current time if @code{todo-always-add-time-string} is non-@code{nil}, otherwise it enters the empty string (i.e., no time string). @end enumerate @@ -839,7 +839,7 @@ @samp{full} (@kbd{f}): Successively prompt for editing the year, month (with completion) and day number parts of the current item's date string, and, if the option @code{todo-always-add-time-string} is -non-nil, also for editing its time string. +non-@code{nil}, also for editing its time string. @samp{calendar} (@kbd{c}): This pops up the Emacs calendar, and after you type @key{RET} on a date in the calendar makes that date the @@ -1029,7 +1029,7 @@ or @kbd{Y}, but not @key{SPC}, as an affirmative answer. This is to diminish the risk of unintentionally executing the command, which is especially important with commands that do deletion, since there is no -Todo command to undo a deletion. If you want to be able to use SPC for +Todo command to undo a deletion. If you want to be able to use @key{SPC} for confirmation, enable the option @code{todo-y-with-space}. @end quotation @@ -1174,7 +1174,7 @@ You may find it preferable not to delete empty todo categories but to enable the option @code{todo-skip-archived-categories}. When this is -non-nil, such empty todo categories are skipped over by the sequential +non-@code{nil}, such empty todo categories are skipped over by the sequential category navigation commands @kbd{f} and @kbd{b}, so they don't distract you while navigating and you maintain the structural correspondence between todo and archive files (you can also still jump to empty todo categories === modified file 'doc/misc/url.texi' --- doc/misc/url.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/url.texi 2014-06-08 23:39:23 +0000 @@ -872,7 +872,7 @@ @end defun @defun url-cache-expired -This function returns non-nil if a cache entry has expired (or is absent). +This function returns non-@code{nil} if a cache entry has expired (or is absent). The arguments are a URL and optional expiration delay in seconds (default @var{url-cache-expire-time}). @end defun === modified file 'doc/misc/vip.texi' --- doc/misc/vip.texi 2014-06-02 01:02:21 +0000 +++ doc/misc/vip.texi 2014-06-08 23:41:43 +0000 @@ -901,9 +901,9 @@ already exists in the directory, Emacs will visit that file, and if not, the file will be created. Emacs will use the file name (@file{vip.el}, in this case) as the name of the buffer visiting the file. In order to make -the buffer name unique, Emacs may append @samp{<2>}, @samp{<3>} etc., to -the buffer name. As the @dfn{file name completion} is provided here, you -can sometime save typing. For instance, suppose there is only one file in the +the buffer name unique, Emacs may add a suffix (@pxref{Uniquify,,, +emacs, The GNU Emacs Manual}). As @dfn{file name completion} is provided here, you +can sometimes save typing. For instance, suppose there is only one file in the default directory whose name starts with @samp{v}, that is @samp{vip.el}. Then if you just type @kbd{v @key{TAB}} then it will be completed to @samp{vip.el}. Thus, in this case, you just have to type @kbd{v v @key{TAB} === modified file 'doc/misc/wisent.texi' --- doc/misc/wisent.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/wisent.texi 2014-06-08 23:39:23 +0000 @@ -1443,7 +1443,7 @@ @defun wisent-skip-token @anchor{wisent-skip-token} Skip the lookahead token in order to resume parsing. -Return nil. +Return @code{nil}. Must be used in error recovery semantic actions. It typically looks like this: @@ -1463,7 +1463,7 @@ @findex wisent-skip-block @defun wisent-skip-block Safely skip a block in order to resume parsing. -Return nil. +Return @code{nil}. Must be used in error recovery semantic actions. A block is data between an open-delimiter (syntax class @code{(}) and === modified file 'doc/misc/woman.texi' --- doc/misc/woman.texi 2014-05-07 17:34:53 +0000 +++ doc/misc/woman.texi 2014-06-08 06:57:15 +0000 @@ -630,7 +630,7 @@ Scroll the man page up the window (@code{scroll-up}). @item @key{DEL} -@itemx @key{S-SPC} +@itemx @kbd{S-@key{SPC}} @kindex DEL @kindex S-SPC @findex scroll-down === modified file 'etc/ChangeLog' --- etc/ChangeLog 2014-06-08 00:35:27 +0000 +++ etc/ChangeLog 2014-06-08 23:41:43 +0000 @@ -1,3 +1,7 @@ +2014-06-08 Leo Liu + + * themes/deeper-blue-theme.el: Use another fix. (Bug#17695) + 2014-06-08 Juri Linkov * themes/deeper-blue-theme.el (diff-added, diff-changed, diff-removed): === modified file 'etc/NEWS' --- etc/NEWS 2014-06-08 00:35:27 +0000 +++ etc/NEWS 2014-06-08 23:41:43 +0000 @@ -547,6 +547,10 @@ +++ ** Uniquify is enabled by default, with `post-forward-angle-brackets' style. +In other words, if you visit two files that have the same base name, +then rather than creating buffers basename and basename<2>, +Emacs uses basename and basename. To change this, +customize `uniquify-buffer-name-style'. Set it to nil for the old behavior. +++ ** New command `C-x SPC' (`rectangle-mark-mode') makes a rectangular region. === modified file 'etc/themes/deeper-blue-theme.el' --- etc/themes/deeper-blue-theme.el 2014-06-05 23:31:46 +0000 +++ etc/themes/deeper-blue-theme.el 2014-06-08 03:25:22 +0000 @@ -40,19 +40,19 @@ `(cperl-hash-face ((,class (:foreground "coral1")))) `(cursor ((,class (:background "green")))) `(default ((,class (:background "#181a26" :foreground "gray80")))) - `(diff-added ((,class (:foreground "white" :background "darkolivegreen")))) - `(diff-changed ((,class (:foreground "white" :background "dodgerblue4")))) + ;; `(diff-added ((,class (nil)))) + ;; `(diff-changed ((,class (nil)))) `(diff-context ((,class (:foreground "seashell4")))) `(diff-file-header ((,class (:background "grey60")))) `(diff-function ((,class (:inherit diff-header)))) `(diff-header ((,class (:background "grey45")))) `(diff-hunk-header ((,class (:inherit diff-header)))) `(diff-index ((,class (:inherit diff-file-header)))) - `(diff-indicator-added ((,class (:inherit diff-added)))) - `(diff-indicator-changed ((,class (:inherit diff-changed)))) - `(diff-indicator-removed ((,class (:inherit diff-removed)))) + `(diff-indicator-added ((,class (:foreground "white" :background "darkolivegreen")))) + `(diff-indicator-changed ((,class (:foreground "white" :background "dodgerblue4")))) + `(diff-indicator-removed ((,class (:foreground "white" :background "indianred4")))) `(diff-refine-change ((,class (:background "skyblue4")))) - `(diff-removed ((,class (:foreground "white" :background "indianred4")))) + ;; `(diff-removed ((,class (nil)))) `(dired-marked ((,class (:background "dodgerblue3" :foreground "white")))) `(ediff-current-diff-A ((,class (:background "green4" :foreground "white")))) `(ediff-current-diff-B ((,class (:background "darkorange3" :foreground "white")))) === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-08 00:35:27 +0000 +++ lisp/ChangeLog 2014-06-08 23:41:43 +0000 @@ -1,3 +1,11 @@ +2014-06-08 Glenn Morris + + * startup.el (initial-buffer-choice): Doc fix. + Reset :version (adding an option does not merit a :version bump). + + * bookmark.el (bookmark-load): + * uniquify.el (uniquify-buffer-name-style): Doc fixes. + 2014-06-08 Juri Linkov * desktop.el: Activate auto-saving on window configuration changes. === modified file 'lisp/bookmark.el' --- lisp/bookmark.el 2014-03-22 22:36:29 +0000 +++ lisp/bookmark.el 2014-06-08 23:41:43 +0000 @@ -1420,8 +1420,7 @@ If you load a file containing bookmarks with the same names as bookmarks already present in your Emacs, the new bookmarks will get -unique numeric suffixes \"<2>\", \"<3>\", ... following the same -method buffers use to resolve name collisions." +unique numeric suffixes \"<2>\", \"<3>\", etc." (interactive (list (read-file-name (format "Load bookmarks from: (%s) " === modified file 'lisp/files.el' --- lisp/files.el 2014-05-31 02:27:22 +0000 +++ lisp/files.el 2014-06-08 23:41:43 +0000 @@ -1637,6 +1637,8 @@ (let (kill-buffer-query-functions kill-buffer-hook) (kill-buffer obuf)))))) +;; FIXME we really need to fold the uniquify stuff in here by default, +;; not using advice, and add it to the doc string. (defun create-file-buffer (filename) "Create a suitably named buffer for visiting FILENAME, and return it. FILENAME (sans directory) is used unchanged if that name is free; === modified file 'lisp/startup.el' --- lisp/startup.el 2014-06-08 00:35:27 +0000 +++ lisp/startup.el 2014-06-08 23:41:43 +0000 @@ -42,20 +42,21 @@ "Buffer to show after starting Emacs. If the value is nil and `inhibit-startup-screen' is nil, show the startup screen. If the value is a string, switch to a buffer -visiting the file or directory specified by that string. If the -value is a function, switch to the buffer returned by that -function. If t, open the `*scratch*' buffer. +visiting the file or directory that the string specifies. If the +value is a function, call it with no arguments and switch to the buffer +that it returns. If t, open the `*scratch*' buffer. -A string value also causes emacsclient to open the specified file -or directory when no target file is specified." +If you use `emacsclient' with no target file, then it obeys any +string or function value that this variable has." :type '(choice (const :tag "Startup screen" nil) (directory :tag "Directory" :value "~/") (file :tag "File" :value "~/.emacs") - (const :tag "Notes buffer" remember-notes) + ;; Note sure about hard-coding this as an option... + (const :tag "Remember Mode notes buffer" remember-notes) (function :tag "Function") (const :tag "Lisp scratch buffer" t)) - :version "24.4" + :version "23.1" :group 'initialization) (defcustom inhibit-startup-screen nil === modified file 'lisp/uniquify.el' --- lisp/uniquify.el 2014-02-10 01:34:22 +0000 +++ lisp/uniquify.el 2014-06-08 07:41:27 +0000 @@ -26,7 +26,7 @@ ;;; Commentary: -;; Emacs's standard method for making buffer names unique adds <2>, <3>, +;; Emacs's traditional method for making buffer names unique adds <2>, <3>, ;; etc. to the end of (all but one of) the buffers. This file replaces ;; that behavior, for buffers visiting files and dired buffers, with a ;; uniquification that adds parts of the file name until the buffer names @@ -94,23 +94,27 @@ (defcustom uniquify-buffer-name-style 'post-forward-angle-brackets - "If non-nil, buffer names are uniquified with parts of directory name. -The value determines the buffer name style and is one of `forward', -`reverse', `post-forward', or `post-forward-angle-brackets'. -For example, files `/foo/bar/mumble/name' and `/baz/quux/mumble/name' + "How to construct unique buffer names for files with the same base name. +The value can be one of: `forward', `reverse', `post-forward', +`post-forward-angle-brackets', or nil. + +For example, the files `/foo/bar/mumble/name' and `/baz/quux/mumble/name' would have the following buffer names in the various styles: - forward bar/mumble/name quux/mumble/name - reverse name\\mumble\\bar name\\mumble\\quux - post-forward name|bar/mumble name|quux/mumble - post-forward-angle-brackets name name - nil name name<2> -Of course, the \"mumble\" part may be stripped as well, depending on the setting -of `uniquify-strip-common-suffix'." + + forward bar/mumble/name quux/mumble/name + reverse name\\mumble\\bar name\\mumble\\quux + post-forward name|bar/mumble name|quux/mumble + post-forward-angle-brackets name name + nil name name<2> + +The \"mumble\" part may be stripped as well, depending on the +setting of `uniquify-strip-common-suffix'. For more options that +you can set, browse the `uniquify' custom group." :type '(radio (const forward) (const reverse) (const post-forward) (const post-forward-angle-brackets) - (const :tag "standard Emacs behavior (nil)" nil)) + (const :tag "numeric suffixes" nil)) :version "24.4" :require 'uniquify :group 'uniquify) === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-08 18:27:22 +0000 +++ src/ChangeLog 2014-06-08 23:41:43 +0000 @@ -1,3 +1,9 @@ +2014-06-08 Glenn Morris + + * fileio.c (write-region-inhibit-fsync): Doc tweak. + + * data.c (Flss, Fgtr, Fleq, Fgeq): Doc tweaks. + 2014-06-08 Paul Eggert If a C name must be extern on some platforms, make it extern on all. === modified file 'src/data.c' --- src/data.c 2014-05-28 00:50:44 +0000 +++ src/data.c 2014-06-08 23:41:43 +0000 @@ -2347,7 +2347,7 @@ } DEFUN ("<", Flss, Slss, 1, MANY, 0, - doc: /* Return t if each arg is less than the next arg. All must be numbers or markers. + doc: /* Return t if each arg (a number or marker), is less than the next arg. usage: (< NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */) (ptrdiff_t nargs, Lisp_Object *args) { @@ -2355,7 +2355,7 @@ } DEFUN (">", Fgtr, Sgtr, 1, MANY, 0, - doc: /* Return t if each arg is greater than the next arg. All must be numbers or markers. + doc: /* Return t if each arg (a number or marker) is greater than the next arg. usage: (> NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */) (ptrdiff_t nargs, Lisp_Object *args) { @@ -2363,8 +2363,7 @@ } DEFUN ("<=", Fleq, Sleq, 1, MANY, 0, - doc: /* Return t if each arg is less than or equal to the next arg. -All must be numbers or markers. + doc: /* Return t if each arg (a number or marker) is less than or equal to the next. usage: (<= NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */) (ptrdiff_t nargs, Lisp_Object *args) { @@ -2372,8 +2371,7 @@ } DEFUN (">=", Fgeq, Sgeq, 1, MANY, 0, - doc: /* Return t if each arg is greater than or equal to the next arg. -All must be numbers or markers. + doc: /* Return t if each arg (a number or marker) is greater than or equal to the next. usage: (>= NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */) (ptrdiff_t nargs, Lisp_Object *args) { === modified file 'src/fileio.c' --- src/fileio.c 2014-06-02 00:18:22 +0000 +++ src/fileio.c 2014-06-08 23:41:43 +0000 @@ -6029,7 +6029,7 @@ doc: /* Non-nil means don't call fsync in `write-region'. This variable affects calls to `write-region' as well as save commands. Setting this to nil may avoid data loss if the system loses power or -the operating system crashes. */); +the operating system crashes. By default, it is non-nil in batch mode. */); write_region_inhibit_fsync = 0; /* See also `init_fileio' above. */ DEFVAR_BOOL ("delete-by-moving-to-trash", delete_by_moving_to_trash, ------------------------------------------------------------ revno: 117290 committer: Paul Eggert branch nick: trunk timestamp: Sun 2014-06-08 11:27:22 -0700 message: If a C name must be extern on some platforms, make it extern on all. * dispextern.h (set_vertical_scroll_bar, erase_phys_cursor) (load_color): * font.h (ftxfont_driver) [HAVE_XFT]: * keyboard.h (menu_items_inuse, ignore_mouse_drag_p, make_ctrl_char): * lisp.h (get_frame_param): * menu.h (tty_menu_show): * process.h (conv_sockaddr_to_lisp, catch_child_signal): * termhooks.h (encode_terminal_code): * xterm.h (x_menu_wait_for_event): Always declare. * frame.c (get_frame_param): * fringe.c (max_used_fringe_bitmap): * ftxfont.c (ftxfont_driver): * keyboard.c (ignore_mouse_drag_p, make_ctrl_char): * menu.c (menu_items_inuse): * process.c (conv_sockaddr_to_lisp, catch_child_signal): * term.c (encode_terminal_code, tty_menu_show): * xdisp.c (set_vertical_scroll_bar, erase_phys_cursor): * xfaces.c (load_color): * xmenu.c (x_menu_wait_for_event): Now always extern. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-08 15:06:03 +0000 +++ src/ChangeLog 2014-06-08 18:27:22 +0000 @@ -1,3 +1,28 @@ +2014-06-08 Paul Eggert + + If a C name must be extern on some platforms, make it extern on all. + * dispextern.h (set_vertical_scroll_bar, erase_phys_cursor) + (load_color): + * font.h (ftxfont_driver) [HAVE_XFT]: + * keyboard.h (menu_items_inuse, ignore_mouse_drag_p, make_ctrl_char): + * lisp.h (get_frame_param): + * menu.h (tty_menu_show): + * process.h (conv_sockaddr_to_lisp, catch_child_signal): + * termhooks.h (encode_terminal_code): + * xterm.h (x_menu_wait_for_event): + Always declare. + * frame.c (get_frame_param): + * fringe.c (max_used_fringe_bitmap): + * ftxfont.c (ftxfont_driver): + * keyboard.c (ignore_mouse_drag_p, make_ctrl_char): + * menu.c (menu_items_inuse): + * process.c (conv_sockaddr_to_lisp, catch_child_signal): + * term.c (encode_terminal_code, tty_menu_show): + * xdisp.c (set_vertical_scroll_bar, erase_phys_cursor): + * xfaces.c (load_color): + * xmenu.c (x_menu_wait_for_event): + Now always extern. + 2014-06-08 Dmitry Antipov Change object marking routines to minimize stack usage. === modified file 'src/dispextern.h' --- src/dispextern.h 2014-06-04 09:16:46 +0000 +++ src/dispextern.h 2014-06-08 18:27:22 +0000 @@ -3163,9 +3163,7 @@ int display_prop_intangible_p (Lisp_Object, Lisp_Object, ptrdiff_t, ptrdiff_t); void resize_echo_area_exactly (void); int resize_mini_window (struct window *, int); -#if defined USE_TOOLKIT_SCROLL_BARS && !defined USE_GTK void set_vertical_scroll_bar (struct window *); -#endif int try_window (Lisp_Object, struct text_pos, int); void window_box (struct window *, enum glyph_row_area, int *, int *, int *, int *); @@ -3238,9 +3236,7 @@ enum draw_glyphs_face); extern void get_phys_cursor_geometry (struct window *, struct glyph_row *, struct glyph *, int *, int *, int *); -#if HAVE_NTGUI extern void erase_phys_cursor (struct window *); -#endif extern void display_and_set_cursor (struct window *, bool, int, int, int, int); extern void x_update_cursor (struct frame *, bool); extern void x_clear_cursor (struct window *); @@ -3354,10 +3350,8 @@ Lisp_Object); Lisp_Object tty_color_name (struct frame *, int); void clear_face_cache (int); -#ifdef MSDOS unsigned long load_color (struct frame *, struct face *, Lisp_Object, enum lface_attribute_index); -#endif char *choose_face_font (struct frame *, Lisp_Object *, Lisp_Object, int *); void prepare_face_for_display (struct frame *, struct face *); === modified file 'src/font.h' --- src/font.h 2014-04-16 13:27:28 +0000 +++ src/font.h 2014-06-08 18:27:22 +0000 @@ -834,7 +834,8 @@ extern Lisp_Object Qxft; extern struct font_driver xftfont_driver; extern void syms_of_xftfont (void); -#elif defined HAVE_FREETYPE +#endif +#if defined HAVE_FREETYPE || defined HAVE_XFT extern struct font_driver ftxfont_driver; #endif #ifdef HAVE_BDFFONT === modified file 'src/frame.c' --- src/frame.c 2014-06-02 00:18:22 +0000 +++ src/frame.c 2014-06-08 18:27:22 +0000 @@ -1965,9 +1965,6 @@ /* Return the value of frame parameter PROP in frame FRAME. */ #ifdef HAVE_WINDOW_SYSTEM -#if !HAVE_NS && !HAVE_NTGUI -static -#endif Lisp_Object get_frame_param (register struct frame *frame, Lisp_Object prop) { === modified file 'src/fringe.c' --- src/fringe.c 2014-04-03 20:46:04 +0000 +++ src/fringe.c 2014-06-08 18:27:22 +0000 @@ -480,9 +480,6 @@ static Lisp_Object *fringe_faces; static int max_fringe_bitmaps; -#ifndef HAVE_NS -static -#endif int max_used_fringe_bitmap = MAX_STANDARD_FRINGE_BITMAPS; === modified file 'src/ftxfont.c' --- src/ftxfont.c 2014-01-01 07:43:34 +0000 +++ src/ftxfont.c 2014-06-08 18:27:22 +0000 @@ -37,9 +37,6 @@ static Lisp_Object Qftx; -#if defined HAVE_XFT || !defined HAVE_FREETYPE -static -#endif struct font_driver ftxfont_driver; struct ftxfont_frame_data === modified file 'src/keyboard.c' --- src/keyboard.c 2014-06-06 02:35:17 +0000 +++ src/keyboard.c 2014-06-08 18:27:22 +0000 @@ -1286,9 +1286,6 @@ If ignore_mouse_drag_p is non-zero, ignore (implicit) mouse movement after resizing the tool-bar window. */ -#if !defined HAVE_WINDOW_SYSTEM || defined USE_GTK || defined HAVE_NS -static -#endif bool ignore_mouse_drag_p; static struct frame * @@ -2085,9 +2082,6 @@ /* Apply the control modifier to CHARACTER. */ -#ifndef HAVE_NTGUI -static -#endif int make_ctrl_char (int c) { === modified file 'src/keyboard.h' --- src/keyboard.h 2014-06-02 18:01:21 +0000 +++ src/keyboard.h 2014-06-08 18:27:22 +0000 @@ -305,9 +305,7 @@ /* If non-nil, means that the global vars defined here are already in use. Used to detect cases where we try to re-enter this non-reentrant code. */ -#if defined USE_GTK || defined USE_MOTIF extern Lisp_Object menu_items_inuse; -#endif /* Number of slots currently allocated in menu_items. */ extern int menu_items_allocated; @@ -415,9 +413,7 @@ happens. */ extern struct timespec *input_available_clear_time; -#if defined HAVE_WINDOW_SYSTEM && !defined USE_GTK && !defined HAVE_NS extern bool ignore_mouse_drag_p; -#endif /* The primary selection. */ extern Lisp_Object QPRIMARY; @@ -467,9 +463,7 @@ extern void clear_input_pending (void); extern bool requeued_events_pending_p (void); extern void bind_polling_period (int); -#if HAVE_NTGUI extern int make_ctrl_char (int) ATTRIBUTE_CONST; -#endif extern void stuff_buffered_input (Lisp_Object); extern void clear_waiting_for_input (void); extern void swallow_events (bool); === modified file 'src/lisp.h' --- src/lisp.h 2014-06-02 06:08:49 +0000 +++ src/lisp.h 2014-06-08 18:27:22 +0000 @@ -4127,9 +4127,7 @@ extern void store_frame_param (struct frame *, Lisp_Object, Lisp_Object); extern void store_in_alist (Lisp_Object *, Lisp_Object, Lisp_Object); extern Lisp_Object do_switch_frame (Lisp_Object, int, int, Lisp_Object); -#if HAVE_NS || HAVE_NTGUI extern Lisp_Object get_frame_param (struct frame *, Lisp_Object); -#endif extern void frames_discard_buffer (Lisp_Object); extern void syms_of_frame (void); === modified file 'src/menu.c' --- src/menu.c 2014-06-04 15:16:54 +0000 +++ src/menu.c 2014-06-08 18:27:22 +0000 @@ -66,9 +66,6 @@ /* If non-nil, means that the global vars defined here are already in use. Used to detect cases where we try to re-enter this non-reentrant code. */ -#if ! (defined USE_GTK || defined USE_MOTIF) -static -#endif Lisp_Object menu_items_inuse; /* Number of slots currently allocated in menu_items. */ === modified file 'src/menu.h' --- src/menu.h 2014-06-07 07:25:49 +0000 +++ src/menu.h 2014-06-08 18:27:22 +0000 @@ -64,14 +64,12 @@ #ifdef HAVE_NTGUI extern Lisp_Object w32_menu_show (struct frame *, int, int, int, Lisp_Object, const char **); -#ifdef WINDOWSNT -extern Lisp_Object tty_menu_show (struct frame *, int, int, int, - Lisp_Object, const char **); -#endif #endif #ifdef HAVE_NS extern Lisp_Object ns_menu_show (struct frame *, int, int, int, Lisp_Object, const char **); #endif +extern Lisp_Object tty_menu_show (struct frame *, int, int, int, + Lisp_Object, const char **); extern ptrdiff_t menu_item_width (const unsigned char *); #endif /* MENU_H */ === modified file 'src/process.c' --- src/process.c 2014-06-05 06:24:54 +0000 +++ src/process.c 2014-06-08 18:27:22 +0000 @@ -1957,9 +1957,6 @@ /* Convert an internal struct sockaddr to a lisp object (vector or string). The address family of sa is not included in the result. */ -#ifndef WINDOWSNT -static -#endif Lisp_Object conv_sockaddr_to_lisp (struct sockaddr *sa, int len) { @@ -7051,9 +7048,6 @@ futz with the SIGCHLD handler, but before Emacs forks any children. This function's caller should block SIGCHLD. */ -#ifndef NS_IMPL_GNUSTEP -static -#endif void catch_child_signal (void) { === modified file 'src/process.h' --- src/process.h 2014-06-01 23:17:56 +0000 +++ src/process.h 2014-06-08 18:27:22 +0000 @@ -225,9 +225,7 @@ extern void record_deleted_pid (pid_t, Lisp_Object); struct sockaddr; -#ifdef WINDOWSNT extern Lisp_Object conv_sockaddr_to_lisp (struct sockaddr *, int); -#endif extern void hold_keyboard_input (void); extern void unhold_keyboard_input (void); extern bool kbd_on_hold_p (void); @@ -238,9 +236,7 @@ extern void delete_read_fd (int fd); extern void add_write_fd (int fd, fd_callback func, void *data); extern void delete_write_fd (int fd); -#ifdef NS_IMPL_GNUSTEP extern void catch_child_signal (void); -#endif #ifdef WINDOWSNT extern Lisp_Object network_interface_list (void); === modified file 'src/term.c' --- src/term.c 2014-06-08 00:35:27 +0000 +++ src/term.c 2014-06-08 18:27:22 +0000 @@ -527,9 +527,6 @@ Set CODING->produced to the byte-length of the resulting byte sequence, and return a pointer to that byte sequence. */ -#ifndef DOS_NT -static -#endif unsigned char * encode_terminal_code (struct glyph *src, int src_len, struct coding_system *coding) @@ -3583,9 +3580,6 @@ } /* WINDOWSNT uses this as menu_show_hook, see w32console.c. */ -#ifndef WINDOWSNT -static -#endif Lisp_Object tty_menu_show (struct frame *f, int x, int y, int menuflags, Lisp_Object title, const char **error_name) === modified file 'src/termhooks.h' --- src/termhooks.h 2014-06-04 14:59:09 +0000 +++ src/termhooks.h 2014-06-08 18:27:22 +0000 @@ -651,10 +651,8 @@ /* The initial terminal device, created by initial_term_init. */ extern struct terminal *initial_terminal; -#ifdef DOS_NT extern unsigned char *encode_terminal_code (struct glyph *, int, struct coding_system *); -#endif #ifdef HAVE_GPM extern void close_gpm (int gpm_fd); === modified file 'src/xdisp.c' --- src/xdisp.c 2014-05-30 07:40:29 +0000 +++ src/xdisp.c 2014-06-08 18:27:22 +0000 @@ -15710,9 +15710,6 @@ return rc; } -#if !defined USE_TOOLKIT_SCROLL_BARS || defined USE_GTK -static -#endif void set_vertical_scroll_bar (struct window *w) { @@ -27055,9 +27052,6 @@ /* Erase the image of a cursor of window W from the screen. */ -#ifndef HAVE_NTGUI -static -#endif void erase_phys_cursor (struct window *w) { === modified file 'src/xfaces.c' --- src/xfaces.c 2014-04-05 19:30:36 +0000 +++ src/xfaces.c 2014-06-08 18:27:22 +0000 @@ -1248,9 +1248,6 @@ record that fact in flags of the face so that we don't try to free these colors. */ -#ifndef MSDOS -static -#endif unsigned long load_color (struct frame *f, struct face *face, Lisp_Object name, enum lface_attribute_index target_index) === modified file 'src/xmenu.c' --- src/xmenu.c 2014-06-04 04:58:31 +0000 +++ src/xmenu.c 2014-06-08 18:27:22 +0000 @@ -208,9 +208,6 @@ /* Wait for an X event to arrive or for a timer to expire. */ -#ifndef USE_MOTIF -static -#endif void x_menu_wait_for_event (void *data) { === modified file 'src/xterm.h' --- src/xterm.h 2014-06-02 18:01:21 +0000 +++ src/xterm.h 2014-06-08 18:27:22 +0000 @@ -1031,9 +1031,7 @@ #if defined USE_GTK || defined USE_MOTIF extern void x_menu_set_in_use (int); #endif -#ifdef USE_MOTIF extern void x_menu_wait_for_event (void *data); -#endif extern int popup_activated (void); extern void initialize_frame_menubar (struct frame *); ------------------------------------------------------------ revno: 117289 committer: Dmitry Antipov branch nick: trunk timestamp: Sun 2014-06-08 19:06:03 +0400 message: Change object marking routines to minimize stack usage. This change moves a few cold paths from mark_object to NO_INLINE functions and adjusts symbol marking loop. According to GCC 4.8.2 -Wstack-usage, this reduces mark_object's stack usage from 80 to 48 bytes on a 64-bit system. For a long byte-force-recompile runs, stack usage at the mark phase is reduced up to 28%. Surprisingly, it also gains up to 3% in speed (with default '-O2 -g3' flags). * alloc.c (mark_compiled, mark_localized_symbol): New functions, refactored out from ... (mark_object): ... adjusted user. Also mark symbols in a tight inner loop. (mark_face_cache): Add NO_INLINE. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-08 00:35:27 +0000 +++ src/ChangeLog 2014-06-08 15:06:03 +0000 @@ -1,3 +1,18 @@ +2014-06-08 Dmitry Antipov + + Change object marking routines to minimize stack usage. + This change moves a few cold paths from mark_object to NO_INLINE + functions and adjusts symbol marking loop. According to GCC 4.8.2 + -Wstack-usage, this reduces mark_object's stack usage from 80 to + 48 bytes on a 64-bit system. For a long byte-force-recompile runs, + stack usage at the mark phase is reduced up to 28%. Surprisingly, + it also gains up to 3% in speed (with default '-O2 -g3' flags). + * alloc.c (mark_compiled, mark_localized_symbol): New functions, + refactored out from ... + (mark_object): ... adjusted user. Also mark symbols in a tight + inner loop. + (mark_face_cache): Add NO_INLINE. + 2014-06-08 Eli Zaretskii * sysdep.c (reset_sys_modes): Use cursorX, not curX, as the latter === modified file 'src/alloc.c' --- src/alloc.c 2014-06-02 00:18:22 +0000 +++ src/alloc.c 2014-06-08 15:06:03 +0000 @@ -5974,6 +5974,19 @@ } } +NO_INLINE /* To reduce stack depth in mark_object. */ +static Lisp_Object +mark_compiled (struct Lisp_Vector *ptr) +{ + int i, size = ptr->header.size & PSEUDOVECTOR_SIZE_MASK; + + VECTOR_MARK (ptr); + for (i = 0; i < size; i++) + if (i != COMPILED_CONSTANTS) + mark_object (ptr->contents[i]); + return size > COMPILED_CONSTANTS ? ptr->contents[COMPILED_CONSTANTS] : Qnil; +} + /* Mark the chain of overlays starting at PTR. */ static void @@ -6014,6 +6027,7 @@ /* Mark Lisp faces in the face cache C. */ +NO_INLINE /* To reduce stack depth in mark_object. */ static void mark_face_cache (struct face_cache *c) { @@ -6036,6 +6050,24 @@ } } +NO_INLINE /* To reduce stack depth in mark_object. */ +static void +mark_localized_symbol (struct Lisp_Symbol *ptr) +{ + struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (ptr); + Lisp_Object where = blv->where; + /* If the value is set up for a killed buffer or deleted + frame, restore it's global binding. If the value is + forwarded to a C variable, either it's not a Lisp_Object + var, or it's staticpro'd already. */ + if ((BUFFERP (where) && !BUFFER_LIVE_P (XBUFFER (where))) + || (FRAMEP (where) && !FRAME_LIVE_P (XFRAME (where)))) + swap_in_global_binding (ptr); + mark_object (blv->where); + mark_object (blv->valcell); + mark_object (blv->defcell); +} + /* Remove killed buffers or items whose car is a killed buffer from LIST, and mark other items. Return changed LIST, which is marked. */ @@ -6180,22 +6212,13 @@ break; case PVEC_COMPILED: - { /* We could treat this just like a vector, but it is better - to save the COMPILED_CONSTANTS element for last and avoid - recursion there. */ - int size = ptr->header.size & PSEUDOVECTOR_SIZE_MASK; - int i; - - VECTOR_MARK (ptr); - for (i = 0; i < size; i++) - if (i != COMPILED_CONSTANTS) - mark_object (ptr->contents[i]); - if (size > COMPILED_CONSTANTS) - { - obj = ptr->contents[COMPILED_CONSTANTS]; - goto loop; - } - } + /* Although we could treat this just like a vector, mark_compiled + returns the COMPILED_CONSTANTS element, which is marked at the + next iteration of goto-loop here. This is done to avoid a few + recursive calls to mark_object. */ + obj = mark_compiled (ptr); + if (!NILP (obj)) + goto loop; break; case PVEC_FRAME: @@ -6283,8 +6306,7 @@ case Lisp_Symbol: { register struct Lisp_Symbol *ptr = XSYMBOL (obj); - struct Lisp_Symbol *ptrx; - + nextsym: if (ptr->gcmarkbit) break; CHECK_ALLOCATED_AND_LIVE (live_symbol_p); @@ -6304,21 +6326,8 @@ break; } case SYMBOL_LOCALIZED: - { - struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (ptr); - Lisp_Object where = blv->where; - /* If the value is set up for a killed buffer or deleted - frame, restore it's global binding. If the value is - forwarded to a C variable, either it's not a Lisp_Object - var, or it's staticpro'd already. */ - if ((BUFFERP (where) && !BUFFER_LIVE_P (XBUFFER (where))) - || (FRAMEP (where) && !FRAME_LIVE_P (XFRAME (where)))) - swap_in_global_binding (ptr); - mark_object (blv->where); - mark_object (blv->valcell); - mark_object (blv->defcell); - break; - } + mark_localized_symbol (ptr); + break; case SYMBOL_FORWARDED: /* If the value is forwarded to a buffer or keyboard field, these are marked when we see the corresponding object. @@ -6330,14 +6339,10 @@ if (!PURE_POINTER_P (XSTRING (ptr->name))) MARK_STRING (XSTRING (ptr->name)); MARK_INTERVAL_TREE (string_intervals (ptr->name)); - + /* Inner loop to mark next symbol in this bucket, if any. */ ptr = ptr->next; if (ptr) - { - ptrx = ptr; /* Use of ptrx avoids compiler bug on Sun. */ - XSETSYMBOL (obj, ptrx); - goto loop; - } + goto nextsym; } break; ------------------------------------------------------------ revno: 117288 [merge] committer: Glenn Morris branch nick: trunk timestamp: Sat 2014-06-07 17:35:27 -0700 message: Merge from emacs-24; up to r117218 diff: === modified file 'ChangeLog' --- ChangeLog 2014-06-05 17:31:41 +0000 +++ ChangeLog 2014-06-08 00:35:27 +0000 @@ -1,3 +1,12 @@ +2014-06-08 Paul Eggert + + Port better to AIX (Bug#17598). + * configure.ac (with_xpm_set): New shell var. + (_THREAD_SAFE): Define on AIX if HAVE_PTHREAD. + (with_xpm): Default to 'no' on AIX. + (LIBXPM): Append -lXpm if -lXaw is also used, as the latter + requires the former on AIX. + 2014-06-05 Paul Eggert Try harder to find GNU Make when configuring. === modified file 'admin/FOR-RELEASE' --- admin/FOR-RELEASE 2014-05-28 17:53:11 +0000 +++ admin/FOR-RELEASE 2014-06-06 06:49:17 +0000 @@ -11,6 +11,10 @@ find doc -name '*.texi' -exec grep '^@node[^,]*[:.()]' {} + Sadly makeinfo does not warn about such characters. +Check for major new features added since the last release (e.g. new +lisp files), and add the relevant authors to the Acknowledgments in +doc/emacs/ack.texi and emacs.texi. + Check cross-references between the manuals (eg from emacs to elisp) are correct. You can use something like the following in the info directory in the Emacs build tree: === modified file 'configure.ac' --- configure.ac 2014-06-05 08:03:22 +0000 +++ configure.ac 2014-06-08 00:35:27 +0000 @@ -287,6 +287,7 @@ dnl _ON results in a '--without' option in the --help output, so dnl the help text should refer to "don't compile", etc. +with_xpm_set=${with_xpm+set} OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support]) OPTION_DEFAULT_ON([jpeg],[don't compile with JPEG image support]) OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support]) @@ -2089,7 +2090,14 @@ OLD_LIBS=$LIBS AC_SEARCH_LIBS([$emacs_pthread_function], [pthread], [AC_DEFINE([HAVE_PTHREAD], [1], - [Define to 1 if you have pthread (-lpthread).])]) + [Define to 1 if you have pthread (-lpthread).]) + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in . + if test "$opsys" = aix4-2; then + AC_DEFINE([_THREAD_SAFE], [1], + [Define to 1 if your system requires this in multithreaded code.]) + fi]) if test "X$LIBS" != "X$OLD_LIBS"; then eval LIB_PTHREAD=\$ac_cv_search_$emacs_pthread_function fi @@ -2989,6 +2997,9 @@ fi if test "${HAVE_X11}" = "yes"; then + dnl Avoid Xpm on AIX unless requested, as it crashes; see Bug#17598. + test "$opsys$with_xpm_set" = aix4-2 && with_xpm=no + if test "${with_xpm}" != "no"; then AC_CHECK_HEADER(X11/xpm.h, [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)]) @@ -3012,6 +3023,9 @@ if test "${HAVE_XPM}" = "yes"; then AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).]) LIBXPM=-lXpm + elif test "$opsys,$LUCID_LIBW" = aix4-2,-lXaw; then + dnl AIX -lXaw needs -lXpm linked too; see Bug#17598 Message#152. + LIBXPM=-lXpm fi fi === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2014-06-02 01:08:13 +0000 +++ doc/emacs/ChangeLog 2014-06-08 00:35:27 +0000 @@ -1,3 +1,16 @@ +2014-06-08 Glenn Morris + + * ack.texi (Acknowledgments): + * emacs.texi (Acknowledgments): Updates. + + * programs.texi (Prettifying Symbols): Remove node. + (Misc for Programs): Mention more briefly here. + * emacs.texi (Top): Update menu. + + * package.texi (Package Menu, Package Installation): + Mention signed packages. + (Package Installation): Mention package-pinned-packages. + 2014-06-02 Glenn Morris * ack.texi (Acknowledgments): Remove some obsolete items. === modified file 'doc/emacs/ack.texi' --- doc/emacs/ack.texi 2014-06-02 01:02:21 +0000 +++ doc/emacs/ack.texi 2014-06-08 00:35:27 +0000 @@ -15,7 +15,7 @@ This list is intended to mention every contributor of a major package or feature we currently distribute; if you know of someone we have omitted, -please report that as a manual bug. More comprehensive information is +please make a bug report. More comprehensive information is available in the @file{ChangeLog} files, summarized in the file @file{etc/AUTHORS} in the distribution. @@ -51,12 +51,12 @@ @item Michael Albinus wrote @file{dbus.el}, a package that implements the D-Bus message bus protocol; @file{zeroconf.el}, a mode for browsing -Avahi services; -and @file{secrets.el}, an interface to keyring daemons for -storing confidential data. He and Kai Großjohann wrote the Tramp package, which -provides transparent remote file editing using rcp, ssh, ftp, and -other network protocols. He and Daniel Pittman wrote -@file{tramp-cache.el}. +Avahi services; @file{secrets.el}, an interface to keyring daemons for +storing confidential data; and @file{filenotify.el} and the associated +low-level interface routines, for watching file status changes. +He and Kai Großjohann wrote the Tramp package, which provides +transparent remote file editing using ssh, ftp, and other network +protocols. He and Daniel Pittman wrote @file{tramp-cache.el}. @item Ralf Angeli wrote @file{scroll-lock.el}, a minor mode which keeps the @@ -88,7 +88,8 @@ @item Juanma Barranquero wrote @file{emacs-lock.el} (based on the original version by Tom Wurgler), which makes it harder to exit with valuable -buffers unsaved. He also made many other contributions to other +buffers unsaved; and @file{frameset.el}, for saving and restoring the +frame/window setup. He also made many other contributions to other areas, including MS Windows support. @item @@ -203,7 +204,9 @@ @item Andrew Choi and Yamamoto Mitsuharu wrote the Carbon support, used -prior to Emacs 23 for Mac OS. +prior to Emacs 23 for Mac OS. Yamamoto Mitsuharu continued to +contribute to Mac OS support in the newer Nextstep port; and also +improved support for multi-monitor displays. @item Chong Yidong was the Emacs co-maintainer from Emacs 23 to 24.3. He made many @@ -350,6 +353,10 @@ together. @item +Romain Francoise contributed ACL (Access Control List) support, +for preserving extended file attributes on backup and copy. + +@item Noah Friedman wrote @file{rlogin.el}, an interface to Rlogin, @file{type-break.el}, which reminds you to take periodic breaks from typing, and @code{eldoc-mode}, a mode to show the defined parameters or @@ -510,13 +517,14 @@ @file{time-date.el} for general date and time handling. He also wrote @file{network-stream.el}, for opening network processes; @file{url-queue.el}, for controlling parallel downloads of URLs; -and implemented libxml2 support. +and implemented libxml2 support. He also wrote @file{eww.el}, +an Emacs Lisp web browser; and implemented native zlib decompression. Components of Gnus have also been written by: Nagy Andras, David Blacka, Scott Byer, Ludovic Courtès, Julien Danjou, Kevin Greiner, Kai Großjohann, Joe Hildebrand, Paul Jarc, Simon Josefsson, Sascha Lüdecke, David Moore, Jim Radford, Benjamin Rutt, Raymond Scholz, -Thomas Steffen, Reiner Steib, Didier Verna, Ilja Weis, Katsumi -Yamaoka, Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the +Thomas Steffen, Reiner Steib, Jan Tatarik, Didier Verna, Ilja Weis, +Katsumi Yamaoka, Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the Gnus Manual}). @item @@ -696,6 +704,10 @@ creates a virtual Info manual of package keywords. @item +Leo Liu wrote @file{pcmpl-x.el}, providing completion for +miscellaneous external tools; and revamped support for Octave in Emacs 24.4. + +@item Károly Lőrentey wrote the ``multi-terminal'' code, which allows Emacs to run on graphical and text terminals simultaneously. @@ -840,8 +852,8 @@ indentation engine; and @file{pcase.el}, implementing ML-style pattern matching. In Emacs 24, he integrated the lexical binding code, cleaned up the CL namespace (making it acceptable to use CL -functions at runtime), and added generalized variables to core Emacs -Lisp. +functions at runtime), added generalized variables to core Emacs +Lisp, and implemented a new lightweight advice mechanism. @item Morioka Tomohiko wrote several packages for MIME support in Gnus and @@ -1042,7 +1054,8 @@ DSSSL code. @item -Martin Rudalics implemented improved display-buffer handling in Emacs 24. +Martin Rudalics implemented improved display-buffer handling in Emacs 24; +and implemented ``pixel-wise'' resizing of windows and frames. @item Ivar Rummelhoff wrote @file{winner.el}, which records recent window @@ -1390,7 +1403,8 @@ Eli Zaretskii made many standard Emacs features work on MS-DOS and Microsoft Windows. He also wrote @file{tty-colors.el}, which implements transparent mapping of X colors to tty colors; and -@file{rxvt.el}. He implemented support for bidirectional text. +@file{rxvt.el}. He implemented support for bidirectional text, +and also menus on text-mode terminals. @item Jamie Zawinski wrote much of the support for faces and X selections. === modified file 'doc/emacs/emacs.texi' --- doc/emacs/emacs.texi 2014-06-02 01:02:21 +0000 +++ doc/emacs/emacs.texi 2014-06-08 00:35:27 +0000 @@ -669,7 +669,6 @@ * Symbol Completion:: Completion on symbol names of your program or language. * MixedCase Words:: Dealing with identifiersLikeThis. * Semantic:: Suite of editing tools based on source code parsing. -* Prettifying Symbols:: Display symbols as composed characters. * Misc for Programs:: Other Emacs features useful for editing programs. * C Modes:: Special commands of C, C++, Objective-C, Java, IDL, Pike and AWK modes. @@ -1366,12 +1365,14 @@ @node Acknowledgments @unnumberedsec Acknowledgments +@c It's hard to update this fairly. +@c I wonder if it would be better to drop it in favor of AUTHORS? Contributors to GNU Emacs include Jari Aalto, Per Abrahamsen, Tomas Abrahamsson, Jay K. Adams, Alon Albert, Michael Albinus, Nagy Andras, Benjamin Andresen, Ralf Angeli, Dmitry Antipov, Joe Arceneaux, Emil Åström, Miles Bader, David Bakhash, Juanma Barranquero, Eli Barzilay, Thomas Baumann, Steven L. Baur, Jay Belanger, Alexander L. Belikoff, -Thomas Bellman, Scott Bender, Boaz Ben-Zvi, Sergey Berezin, Karl +Thomas Bellman, Scott Bender, Boaz Ben-Zvi, Sergey Berezin, Stephen Berman, Karl Berry, Anna M. Bigatti, Ray Blaak, Martin Blais, Jim Blandy, Johan Bockgård, Jan Böcker, Joel Boehland, Lennart Borgman, Per Bothner, Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, Kevin @@ -1391,13 +1392,13 @@ Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick Farnbach, Oscar Figueiredo, Fred Fish, Steve Fisk, Karl Fogel, Gary Foster, Eric S. Fraga, Romain Francoise, Noah Friedman, Andreas -Fuchs, Shigeru Fukaya, Hallvard Furuseth, Keith Gabryelski, Peter S. +Fuchs, Shigeru Fukaya, Xue Fuqiao, Hallvard Furuseth, Keith Gabryelski, Peter S. Galbraith, Kevin Gallagher, Fabián E. Gallina, Kevin Gallo, Juan León Lahoz García, Howard Gayle, Daniel German, Stephen Gildea, Julien Gilles, David Gillespie, Bob Glickstein, Deepak Goel, David De La Harpe Golden, Boris Goldowsky, David Goodger, Chris Gray, Kevin Greiner, Michelangelo Grigni, Odd Gripenstam, Kai Großjohann, Michael Gschwind, Bastien Guerry, Henry -Guillaume, Doug Gwyn, Bruno Haible, Ken'ichi Handa, Lars Hansen, Chris +Guillaume, Dmitry Gutov, Doug Gwyn, Bruno Haible, Ken'ichi Handa, Lars Hansen, Chris Hanson, Jesper Harder, Alexandru Harsanyi, K. Shane Hartman, John Heidemann, Jon K. Hellan, Magnus Henoch, Markus Heritsch, Dirk Herrmann, Karl Heuer, Manabu Higashida, Konrad Hinsen, Anders Holst, @@ -1415,14 +1416,14 @@ Landstrom, Mario Lang, Aaron Larson, James R. Larus, Vinicius Jose Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Christian Limpach, Lars Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link, -Juri Linkov, Francis Litterio, Sergey Litvinov, Emilio C. Lopes, +Juri Linkov, Francis Litterio, Sergey Litvinov, Leo Liu, Emilio C. Lopes, Martin Lorentzon, Dave Love, Eric Ludlam, Károly Lőrentey, Sascha Lüdecke, Greg McGary, Roland McGrath, Michael McNamara, Alan Mackenzie, Christopher J. Madsen, Neil M. Mager, Ken Manheimer, Bill Mann, Brian Marick, Simon Marshall, Bengt Martensson, Charlie Martin, Yukihiro Matsumoto, Tomohiro Matsuyama, David Maus, Thomas May, Will Mengarini, David Megginson, Stefan Merten, Ben A. Mesander, Wayne Mesard, Brad -Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Möllmann, Stefan +Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Möllmann, Dani Moncayo, Stefan Monnier, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris, Don Morrison, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum, Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann, Mike Newton, Thien-Thi Nguyen, @@ -1453,7 +1454,7 @@ Reiner Steib, Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F. Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto -Takahashi, Steven Tamm, Luc Teirlinck, Jean-Philippe Theberge, Jens +Takahashi, Steven Tamm, Jan Tatarik, Luc Teirlinck, Jean-Philippe Theberge, Jens T. Berger Thielemann, Spencer Thomas, Jim Thompson, Toru Tomabechi, David O'Toole, Markus Triska, Tom Tromey, Enami Tsugutomo, Eli Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil === modified file 'doc/emacs/package.texi' --- doc/emacs/package.texi 2014-02-12 01:20:34 +0000 +++ doc/emacs/package.texi 2014-06-05 08:14:36 +0000 @@ -59,8 +59,9 @@ @item The package's status---normally one of @samp{available} (can be -downloaded from the package archive), @samp{installed}, or -@samp{built-in} (included in Emacs by default). +downloaded from the package archive), @samp{installed}, +@samp{unsigned} (installed, but not signed; @pxref{Package Signing}), +or @samp{built-in} (included in Emacs by default). The status can also be @samp{new}. This is equivalent to @samp{available}, except that it means the package became newly @@ -167,6 +168,48 @@ wish to use third party package archives---but do so at your own risk, and use only third parties that you think you can trust! +@anchor{Package Signing} +@cindex package security +@cindex package signing + The maintainers of package archives can increase the trust that you +can have in their packages by @dfn{signing} them. They generate a +private/public pair of cryptographic keys, and use the private key to +create a @dfn{signature file} for each package. With the public key, you +can use the signature files to verify who created the package, and +that it has not been modified. A valid signature is not a cast-iron +guarantee that a package is not malicious, so you should still +exercise caution. Package archives should provide instructions +on how you can obtain their public key. One way is to download the +key from a server such as @url{http://pgp.mit.edu/}. +Use @kbd{M-x package-import-keyring} to import the key into Emacs. +Emacs stores package keys in the @file{gnupg} subdirectory +of @code{package-user-dir}. +@c Uncomment this if it becomes true. +@ignore +The public key for the GNU package archive is distributed with Emacs, +in the @file{etc/package-keyring.gpg}. Emacs uses it automatically. +@end ignore + +@vindex package-check-signature +@vindex package-unsigned-archives + If the user option @code{package-check-signature} is non-@code{nil}, +Emacs attempts to verify signatures when you install packages. If the +option has the value @code{allow-unsigned}, you can still install a +package that is not signed. If you use some archives that do not sign +their packages, you can add them to the list @code{package-unsigned-archives}. + + For more information on cryptographic keys and signing, +@pxref{Top,, Top, gnupg, The GNU Privacy Guard Manual}. +Emacs comes with an interface to GNU Privacy Guard, +@pxref{Top,, EasyPG, epa, Emacs EasyPG Assistant Manual}. + +@vindex package-pinned-packages + If you have more than one package archive enabled, and some of them +offer different versions of the same package, you may find the option +@code{package-pinned-packages} useful. You can add package/archive +pairs to this list, to ensure that the specified package is only ever +downloaded from the specified archive. + Once a package is downloaded and installed, it is @dfn{loaded} into the current Emacs session. Loading a package is not quite the same as loading a Lisp library (@pxref{Lisp Libraries}); its effect varies === modified file 'doc/emacs/programs.texi' --- doc/emacs/programs.texi 2014-04-29 14:45:24 +0000 +++ doc/emacs/programs.texi 2014-06-07 23:39:40 +0000 @@ -38,7 +38,6 @@ * Symbol Completion:: Completion on symbol names of your program or language. * MixedCase Words:: Dealing with identifiersLikeThis. * Semantic:: Suite of editing tools based on source code parsing. -* Prettifying Symbols:: Display symbols as composed characters. * Misc for Programs:: Other Emacs features useful for editing programs. * C Modes:: Special commands of C, C++, Objective-C, Java, IDL, Pike and AWK modes. @@ -1434,37 +1433,6 @@ @xref{Top, Semantic,, semantic, Semantic}, for details. @end ifnottex -@node Prettifying Symbols -@section Prettifying Symbols -@cindex prettifying symbols -@cindex symbol, prettifying - -@code{prettify-symbols-mode} and @code{global-prettify-symbols-mode} -are two minor modes (@pxref{Minor Modes}) that can display specified -symbols as composed characters. For instance, in Emacs Lisp mode -(@pxref{Lisp Eval}), this mode will replace the string ``lambda'' with -the Greek lambda character. - -@findex prettify-symbols-mode -@vindex prettify-symbols-alist -When Prettify Symbols mode and Font Lock mode (@pxref{Font Lock}) are -enabled, symbols are prettified (displayed as composed characters) -according to the rules in @code{prettify-symbols-alist}, which are -locally defined by major modes (@pxref{Major Modes}) supporting -prettifying. To add further customizations for a given major mode, -you can modify @code{prettify-symbols-alist}. For example: - -@example -(add-hook 'emacs-lisp-mode-hook - (lambda () - (push '("<=" . ?≤) prettify-symbols-alist))) -@end example - -@findex global-prettify-symbols-mode -You can enable this mode locally in desired buffers, or use -@code{global-prettify-symbols-mode} to enable it for all modes that -support it. - @node Misc for Programs @section Other Features Useful for Editing Programs @@ -1512,6 +1480,17 @@ @xref{Top,,Autotyping, autotype, Autotyping}. @end ifinfo +@findex prettify-symbols-mode + Prettify Symbols mode is a buffer-local minor mode that replaces +certain strings with more ``attractive'' versions for display +purposes. For example, in Emacs Lisp mode, it replaces the string +``lambda'' with the Greek lambda character. You may wish to use this +in non-programming modes as well. You can customize the mode by +adding more entries to @code{prettify-symbols-alist}. There is also a +global version, @code{global-prettify-symbols-mode}, which enables the +mode in all buffers that support it. + + @node C Modes @section C and Related Modes @cindex C mode === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2014-06-07 14:29:48 +0000 +++ doc/lispref/ChangeLog 2014-06-08 00:35:27 +0000 @@ -1,3 +1,15 @@ +2014-06-08 Glenn Morris + + * display.texi (Window Systems): Remove window-setup-hook. + * os.texi (Startup Summary, Init File): + Improve description of window-setup-hook. + (Terminal-Specific): Update window-setup-hook cross-reference. + * hooks.texi (Standard Hooks): Update window-setup-hook cross-reference. + + * display.texi (Overlay Properties): Update re priority. (Bug#17234) + + * package.texi (Package Archives): Mention signing packages. + 2014-06-07 Eli Zaretskii * commands.texi (Click Events): Update contents of click event's === modified file 'doc/lispref/display.texi' --- doc/lispref/display.texi 2014-05-17 08:58:17 +0000 +++ doc/lispref/display.texi 2014-06-06 07:19:23 +0000 @@ -1515,9 +1515,9 @@ @table @code @item priority @kindex priority @r{(overlay property)} -This property's value determines the priority of the overlay. No priority, or -@code{nil}, means zero. A non-nil and non-integer value has -undefined behavior. +This property's value determines the priority of the overlay. +If you want to specify a priority value, use either @code{nil} +(or zero), or a positive integer. Any other value has undefined behavior. The priority matters when two or more overlays cover the same character and both specify the same property; the one whose @@ -1527,9 +1527,13 @@ override the face attributes of the lower priority @code{face} property. -Currently, all overlays take priority over text properties. Please -avoid using negative priority values, as we have not yet decided just -what they should mean. +Currently, all overlays take priority over text properties. + +Note that Emacs sometimes uses non-numeric priority values for some of +its internal overlays, so do not try to do arithmetic on the +priority of an overlay (unless it is one that you created). If you +need to put overlays in priority order, use the @var{sorted} argument +of @code{overlays-at}. @xref{Finding Overlays}. @item window @kindex window @r{(overlay property)} @@ -6515,18 +6519,6 @@ @code{display-graphic-p} or any of the other @code{display-*-p} predicates described in @ref{Display Feature Testing}. -@defvar window-setup-hook -This variable is a normal hook which Emacs runs after handling the -initialization files. Emacs runs this hook after it has completed -loading your init file, the default initialization file (if -any), and the terminal-specific Lisp code, and running the hook -@code{emacs-startup-hook}. - -This hook is used for internal purposes: setting up communication with -the window system, and creating the initial window. Users should not -interfere with it. -@end defvar - @node Bidirectional Display @section Bidirectional Display @cindex bidirectional display === modified file 'doc/lispref/hooks.texi' --- doc/lispref/hooks.texi 2014-05-27 01:53:45 +0000 +++ doc/lispref/hooks.texi 2014-06-06 07:19:23 +0000 @@ -55,6 +55,7 @@ @item after-init-hook @itemx before-init-hook @itemx emacs-startup-hook +@itemx window-setup-hook @xref{Init File}. @item after-insert-file-functions @@ -220,9 +221,6 @@ @itemx window-size-change-functions @xref{Window Hooks}. -@item window-setup-hook -@xref{Window Systems}. - @item window-text-change-functions @vindex window-text-change-functions Functions to call in redisplay when text in the window might change. === modified file 'doc/lispref/os.texi' --- doc/lispref/os.texi 2014-04-07 20:54:16 +0000 +++ doc/lispref/os.texi 2014-06-08 00:35:27 +0000 @@ -218,7 +218,9 @@ specify. @item -It runs @code{window-setup-hook}. @xref{Window Systems}. +It runs @code{window-setup-hook}. The only difference between this +hook and @code{emacs-startup-hook} is that this one runs after the +previously mentioned modifications to the frame parameters. @item @cindex startup screen @@ -411,6 +413,12 @@ arguments. In batch mode, Emacs does not run this hook. @end defvar +@defvar window-setup-hook +This normal hook is very similar to @code{emacs-startup-hook}. +The only difference is that it runs slightly later, after setting +of the frame parameters. @xref{Startup Summary, window-setup-hook}. +@end defvar + @defvar user-init-file This variable holds the absolute file name of the user's init file. If the actual init file loaded is a compiled file, such as @file{.emacs.elc}, @@ -497,7 +505,7 @@ terminal-specific Lisp file, so you can use it to adjust the definitions made by that file. -For a related feature, @pxref{Window Systems, window-setup-hook}. +For a related feature, @pxref{Init File, window-setup-hook}. @end defvar @node Command-Line Arguments === modified file 'doc/lispref/package.texi' --- doc/lispref/package.texi 2014-02-12 01:43:35 +0000 +++ doc/lispref/package.texi 2014-06-05 08:14:36 +0000 @@ -342,3 +342,38 @@ @noindent After you create an archive, remember that it is not accessible in the Package Menu interface unless it is in @code{package-archives}. + +@cindex package archive security +@cindex package signing +Maintaining a public package archive entails a degree of responsibility. +When Emacs users install packages from your archive, those packages +can cause Emacs to run arbitrary code with the permissions of the +installing user. (This is true for Emacs code in general, not just +for packages.) So you should ensure that your archive is +well-maintained and keep the hosting system secure. + + One way to increase the security of your packages is to @dfn{sign} +them using a cryptographic key. If you have generated a +private/public gpg key pair, you can use gpg to sign the package like +this: + +@c FIXME EasyPG / package-x way to do this. +@example +gpg -ba -o @var{file}.sig @var{file} +@end example + +@noindent +For a single-file package, @var{file} is the package Lisp file; +for a multi-file package, it is the package tar file. +You can also sign the archive's contents file in the same way. +Make the @file{.sig} files available in the same location as the packages. +You should also make your public key available for people to download; +e.g., by uploading it to a key server such as @url{http://pgp.mit.edu/}. +When people install packages from your archive, they can use +your public key to verify the signatures. + +A full explanation of these matters is outside the scope of this +manual. For more information on cryptographic keys and signing, +@pxref{Top,, GnuPG, gnupg, The GNU Privacy Guard Manual}. Emacs comes +with an interface to GNU Privacy Guard, @pxref{Top,, EasyPG, epa, +Emacs EasyPG Assistant Manual}. === modified file 'etc/ChangeLog' --- etc/ChangeLog 2014-05-28 12:54:58 +0000 +++ etc/ChangeLog 2014-06-08 00:35:27 +0000 @@ -1,3 +1,9 @@ +2014-06-08 Juri Linkov + + * themes/deeper-blue-theme.el (diff-added, diff-changed, diff-removed): + Set face definitions explicitly. Inherit indicator faces from them. + (Bug#17695) + 2014-05-28 Reuben Thomas * TODO: add a note that undo-tree could be used to save undo === modified file 'etc/NEWS' --- etc/NEWS 2014-06-07 14:29:48 +0000 +++ etc/NEWS 2014-06-08 00:35:27 +0000 @@ -962,6 +962,24 @@ ** Package +++ +*** The package library now supports digital signing of packages. +Maintainers of package archives should consider signing their packages +to enhance security. + ++++ +**** If the user option `package-check-signature' is non-nil, +Emacs tries to check package signatures at install time. +The value `allow-unsigned' allows installation of unsigned packages. + ++++ +**** The user option `package-unsigned-archives' lists archives where +Emacs will not try to check signatures. + ++++ +*** New option `package-pinned-packages'. This is useful if you have multiple +archives enabled, with more than one offering a package that you want. + ++++ *** In the `list-packages' buffer, you can use `f' (`package-menu-filter') to filter the list of packages by a keyword. @@ -1276,6 +1294,12 @@ * Incompatible Lisp Changes in Emacs 24.4 ++++ +** Do not assume that the priority of all overlays will be numeric. +(You should still only specify integer priorities on overlays you create.) +If you need to sort arbitrary overlays into priority order, `overlays-at' +can now optionally do this. + --- ** `kill-region' has lost its `yank-handler' optional argument. @@ -1375,8 +1399,6 @@ * Lisp Changes in Emacs 24.4 -** overlays-at can optionally sort its result by priority. - +++ ** The second argument of `eval' can now specify a lexical environment. === modified file 'etc/TODO' --- etc/TODO 2014-05-28 12:54:58 +0000 +++ etc/TODO 2014-06-08 00:35:27 +0000 @@ -659,7 +659,7 @@ [As of trunk r109635, 2012-08-15, the event loop no longer polls.] **** (mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back -up on top of all others +up on top of all others (probably fixed in bug#17439) **** free_frame_resources, face colors === modified file 'etc/themes/deeper-blue-theme.el' --- etc/themes/deeper-blue-theme.el 2014-01-01 07:43:34 +0000 +++ etc/themes/deeper-blue-theme.el 2014-06-05 23:31:46 +0000 @@ -40,19 +40,19 @@ `(cperl-hash-face ((,class (:foreground "coral1")))) `(cursor ((,class (:background "green")))) `(default ((,class (:background "#181a26" :foreground "gray80")))) - `(diff-added ((,class (nil)))) - `(diff-changed ((,class (nil)))) + `(diff-added ((,class (:foreground "white" :background "darkolivegreen")))) + `(diff-changed ((,class (:foreground "white" :background "dodgerblue4")))) `(diff-context ((,class (:foreground "seashell4")))) `(diff-file-header ((,class (:background "grey60")))) `(diff-function ((,class (:inherit diff-header)))) `(diff-header ((,class (:background "grey45")))) `(diff-hunk-header ((,class (:inherit diff-header)))) `(diff-index ((,class (:inherit diff-file-header)))) - `(diff-indicator-added ((,class (:foreground "white" :background "darkolivegreen")))) - `(diff-indicator-changed ((,class (:foreground "white" :background "dodgerblue4")))) - `(diff-indicator-removed ((,class (:foreground "white" :background "indianred4")))) + `(diff-indicator-added ((,class (:inherit diff-added)))) + `(diff-indicator-changed ((,class (:inherit diff-changed)))) + `(diff-indicator-removed ((,class (:inherit diff-removed)))) `(diff-refine-change ((,class (:background "skyblue4")))) - `(diff-removed ((,class (nil)))) + `(diff-removed ((,class (:foreground "white" :background "indianred4")))) `(dired-marked ((,class (:background "dodgerblue3" :foreground "white")))) `(ediff-current-diff-A ((,class (:background "green4" :foreground "white")))) `(ediff-current-diff-B ((,class (:background "darkorange3" :foreground "white")))) === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-06 16:38:44 +0000 +++ lisp/ChangeLog 2014-06-08 00:35:27 +0000 @@ -1,3 +1,53 @@ +2014-06-08 Juri Linkov + + * desktop.el: Activate auto-saving on window configuration changes. + (desktop-save-mode, desktop-auto-save-timeout): Add/remove + `desktop-auto-save-set-timer' to/from + `window-configuration-change-hook'. + (desktop-auto-save-set-timer): Change REPEAT arg of + `run-with-idle-timer' from t to nil. + http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00147.html + +2014-06-08 Santiago Payà i Miralta + + * vc/vc-hg.el (vc-hg-working-revision): Use "hg parent" and + vc-hg-command (bug#17570). + +2014-06-08 Stefan Monnier + + * international/mule-cmds.el (ucs-names): Add special entry for BEL + (bug#17702). + +2014-06-08 Glenn Morris + + * startup.el (window-setup-hook): Doc fix. + + * emacs-lisp/package.el (package-check-signature) + (package-unsigned-archives): Doc fixes. + +2014-06-08 Martin Rudalics + + * window.el (display-buffer-use-some-window): Don't make window + used smaller than it was before (Bug#17671). + +2014-06-08 Eli Zaretskii + + * menu-bar.el (menu-bar-open): Fix last change: use the PC + 'redisplay' instead of '(sit-for 0)'. + +2014-06-08 Michael Albinus + + * net/tramp.el (tramp-ssh-controlmaster-options): + Improve search regexp. (Bug#17653) + +2014-06-08 Glenn Morris + + * emacs-lisp/package.el (package-pinned-packages): Doc fix. + +2014-06-08 Eli Zaretskii + + * menu-bar.el (menu-bar-open): Fix invocation via M-x. + 2014-06-06 Santiago Payà i Miralta * vc/vc-hg.el (vc-hg-create-tag, vc-hg-retrieve-tag): New functions === modified file 'lisp/desktop.el' --- lisp/desktop.el 2014-04-27 08:22:11 +0000 +++ lisp/desktop.el 2014-06-06 23:38:40 +0000 @@ -174,7 +174,10 @@ :global t :group 'desktop (if desktop-save-mode - (desktop-auto-save-set-timer) + (when (and (integerp desktop-auto-save-timeout) + (> desktop-auto-save-timeout 0)) + (add-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer)) + (remove-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) (desktop-auto-save-cancel-timer))) (defun desktop-save-mode-off () @@ -207,13 +210,18 @@ (defcustom desktop-auto-save-timeout auto-save-timeout "Number of seconds idle time before auto-save of the desktop. +The idle timer activates auto-saving only when window configuration changes. This applies to an existing desktop file when `desktop-save-mode' is enabled. Zero or nil means disable auto-saving due to idleness." :type '(choice (const :tag "Off" nil) (integer :tag "Seconds")) :set (lambda (symbol value) (set-default symbol value) - (ignore-errors (desktop-auto-save-set-timer))) + (ignore-errors + (if (and (integerp value) (> value 0)) + (add-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) + (remove-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) + (desktop-auto-save-cancel-timer)))) :group 'desktop :version "24.4") @@ -1244,7 +1252,7 @@ (when (and (integerp desktop-auto-save-timeout) (> desktop-auto-save-timeout 0)) (setq desktop-auto-save-timer - (run-with-idle-timer desktop-auto-save-timeout t + (run-with-idle-timer desktop-auto-save-timeout nil 'desktop-auto-save)))) (defun desktop-auto-save-cancel-timer () === modified file 'lisp/emacs-lisp/package.el' --- lisp/emacs-lisp/package.el 2014-06-02 00:18:22 +0000 +++ lisp/emacs-lisp/package.el 2014-06-08 00:35:27 +0000 @@ -113,8 +113,6 @@ ;;; ToDo: -;; - a trust mechanism, since compiling a package can run arbitrary code. -;; For example, download package signatures and check that they match. ;; - putting info dirs at the start of the info path means ;; users see a weird ordering of categories. OTOH we want to ;; override later entries. maybe emacs needs to enforce @@ -229,18 +227,25 @@ :version "24.1") (defcustom package-pinned-packages nil - "An alist of packages that are pinned to a specific archive - -Each element has the form (SYM . ID). - SYM is a package, as a symbol. - ID is an archive name. This should correspond to an - entry in `package-archives'. - -If the archive of name ID does not contain the package SYM, no -other location will be considered, which will make the -package unavailable." + "An alist of packages that are pinned to specific archives. +This can be useful if you have multiple package archives enabled, +and want to control which archive a given package gets installed from. + +Each element of the alist has the form (PACKAGE . ARCHIVE), where: + PACKAGE is a symbol representing a package + ARCHIVE is a string representing an archive (it should be the car of +an element in `package-archives', e.g. \"gnu\"). + +Adding an entry to this variable means that only ARCHIVE will be +considered as a source for PACKAGE. If other archives provide PACKAGE, +they are ignored (for this package). If ARCHIVE does not contain PACKAGE, +the package will be unavailable." :type '(alist :key-type (symbol :tag "Package") :value-type (string :tag "Archive name")) + ;; I don't really see why this is risky... + ;; I suppose it could prevent you receiving updates for a package, + ;; via an entry (PACKAGE . NON-EXISTING). Which could be an issue + ;; if PACKAGE has a known vulnerability that is fixed in newer versions. :risky t :group 'package :version "24.4") @@ -285,7 +290,12 @@ :version "24.1") (defcustom package-check-signature 'allow-unsigned - "Whether to check package signatures when installing." + "Non-nil means to check package signatures when installing. +The value `allow-unsigned' means to still install a package even if +it is unsigned. + +This also applies to the \"archive-contents\" file that lists the +contents of the archive." :type '(choice (const nil :tag "Never") (const allow-unsigned :tag "Allow unsigned") (const t :tag "Check always")) @@ -294,7 +304,7 @@ :version "24.4") (defcustom package-unsigned-archives nil - "A list of archives which do not use package signature." + "List of archives where we do not check for package signatures." :type '(repeat (string :tag "Archive name")) :risky t :group 'package === modified file 'lisp/international/mule-cmds.el' --- lisp/international/mule-cmds.el 2014-01-01 07:43:34 +0000 +++ lisp/international/mule-cmds.el 2014-06-06 14:25:39 +0000 @@ -2945,7 +2945,10 @@ (if (setq name (get-char-code-property c 'name)) (push (cons name c) names)) (setq c (1+ c)))) - (setq ucs-names names)))) + ;; Special case for "BELL" which is apparently the only char which + ;; doesn't have a new name and whose old-name is shadowed by a newer + ;; char with that name. + (setq ucs-names `(("BELL (BEL)" . 7) ,@names))))) (defun read-char-by-name (prompt) "Read a character by its Unicode name or hex number string. === modified file 'lisp/menu-bar.el' --- lisp/menu-bar.el 2014-06-02 19:02:31 +0000 +++ lisp/menu-bar.el 2014-06-08 00:35:27 +0000 @@ -2272,6 +2272,12 @@ ((eq type 'w32) (w32-menu-bar-open frame)) ((and (null tty-menu-open-use-tmm) (not (zerop (or (frame-parameter nil 'menu-bar-lines) 0)))) + ;; Make sure the menu bar is up to date. One situation where + ;; this is important is when this function is invoked by name + ;; via M-x, in which case the menu bar includes the "Minibuf" + ;; menu item that should be removed when we exit the minibuffer. + (force-mode-line-update) + (redisplay) (let* ((x tty-menu--initial-menu-x) (menu (menu-bar-menu-at-x-y x 0 frame))) (popup-menu (or === modified file 'lisp/net/tramp.el' --- lisp/net/tramp.el 2014-06-02 18:36:47 +0000 +++ lisp/net/tramp.el 2014-06-08 00:35:27 +0000 @@ -302,18 +302,19 @@ ;;;###tramp-autoload (defconst tramp-ssh-controlmaster-options - (let ((result "")) + (let ((result "") + (case-fold-search t)) (ignore-errors (with-temp-buffer (call-process "ssh" nil t nil "-o" "ControlMaster") (goto-char (point-min)) - (when (search-forward-regexp "Missing ControlMaster argument" nil t) + (when (search-forward-regexp "missing.+argument" nil t) (setq result "-o ControlPath=%t.%%r@%%h:%%p -o ControlMaster=auto"))) - (when result + (unless (zerop (length result)) (with-temp-buffer (call-process "ssh" nil t nil "-o" "ControlPersist") (goto-char (point-min)) - (when (search-forward-regexp "Missing ControlPersist argument" nil t) + (when (search-forward-regexp "missing.+argument" nil t) (setq result (concat result " -o ControlPersist=no")))))) result) "Call ssh to detect whether it supports the Control* arguments. === modified file 'lisp/startup.el' --- lisp/startup.el 2014-03-27 20:57:23 +0000 +++ lisp/startup.el 2014-06-08 00:35:27 +0000 @@ -303,9 +303,12 @@ environment variable TERM.") (defvar window-setup-hook nil - "Normal hook run to initialize window system display. -Emacs runs this hook after processing the command line arguments and loading -the user's init file.") + "Normal hook run after loading init files and handling the command line. +This is very similar to `emacs-startup-hook'. The only difference +is that this hook runs after frame parameters have been set up in +response to any settings from your init file. Unless this matters +to you, use `emacs-startup-hook' instead. (The name of this hook +is due to historical reasons, and does not reflect its purpose very well.)") (defcustom initial-major-mode 'lisp-interaction-mode "Major mode command symbol to use for the initial `*scratch*' buffer." === modified file 'lisp/vc/vc-hg.el' --- lisp/vc/vc-hg.el 2014-06-06 16:38:44 +0000 +++ lisp/vc/vc-hg.el 2014-06-08 00:35:27 +0000 @@ -234,14 +234,11 @@ (defun vc-hg-working-revision (file) "Hg-specific version of `vc-working-revision'." - (let ((default-directory (if (file-directory-p file) - (file-name-as-directory file) - (file-name-directory file)))) - (ignore-errors - (with-output-to-string - (process-file vc-hg-program nil standard-output nil - "log" "-l" "1" "--template" "{rev}" - (file-relative-name file)))))) + (or (ignore-errors + (with-output-to-string + (vc-hg-command standard-output 0 file + "parent" "--template" "{rev}"))) + "0")) ;;; History functions === modified file 'lisp/window.el' --- lisp/window.el 2014-05-25 10:06:35 +0000 +++ lisp/window.el 2014-06-03 12:38:17 +0000 @@ -6497,7 +6497,7 @@ ;; resize it to its old height but don't signal an error. (when (and (listp quad) (integerp (nth 3 quad)) - (/= (nth 3 quad) (window-total-height window))) + (> (nth 3 quad) (window-total-height window))) (condition-case nil (window-resize window (- (nth 3 quad) (window-total-height window))) (error nil))) === modified file 'nt/INSTALL' --- nt/INSTALL 2014-05-27 17:31:17 +0000 +++ nt/INSTALL 2014-06-08 00:35:27 +0000 @@ -276,6 +276,19 @@ Bash will find MSYS executables first, which is exactly what you need. +* Starting the MSYS Bash shell + + For most reliable and predictable results, we recommend to start + Bash by clicking the "MSYS" icon on your desktop. That icon is + created when you install MSYS, and using it is the official way of + running the MSYS tools. + + For other methods of starting the shell, make sure Bash is invoked + with the "--login" command-line switch. + + When the shell window opens and you get the shell prompt, change to + the directory where you intend to build Emacs. + At this point, you are ready to build Emacs in its basic configuration. If you want to build it with image support and other optional libraries, read about that near the end of this document. @@ -290,7 +303,7 @@ auto-generated files. To generate the configure script, type this at the MSYS Bash prompt - from the top-level directory of the Emacs tree: + from the top-level directory of the Emacs source tree: ./autogen.sh === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-07 07:25:49 +0000 +++ src/ChangeLog 2014-06-08 00:35:27 +0000 @@ -1,3 +1,35 @@ +2014-06-08 Eli Zaretskii + + * sysdep.c (reset_sys_modes): Use cursorX, not curX, as the latter + contains garbage on WINDOWSNT (which could potentially infloop at + exit). + + Minimize cursor motion during TTY menu updates. + * term.c (tty_menu_display): Don't position cursor here. + Instead, pass the cursor coordinates to update_frame_with_menu. + (tty_menu_activate): Send the hide cursor command only once in an + iteration through the outer 'while' loop. + + * dispnew.c (update_frame_1): Accept an additional argument + SET_CURSOR_P, and position the cursor at the end of the frame + update only if that argument is non-zero. All callers changed to + provide the additional argument as non-zero, except for + update_frame_with_menu. + (update_frame_with_menu): Accept 2 additional arguments ROW and + COL; if they are non-negative, instruct update_frame_1 not to + position the cursor, and instead position it according to ROW and COL. + + * dispextern.h (update_frame_with_menu): Update prototype. + +2014-06-08 Stefan Monnier + + * callproc.c (call_process): Don't check read-only if we don't insert + anything (bug#17666). + +2014-06-08 Eli Zaretskii + + * dispnew.c (update_frame_with_menu): Set display_completed. + 2014-06-07 Eli Zaretskii * term.c (tty_menu_show) [WINDOWSNT]: Make tty_menu_show extern === modified file 'src/callproc.c' --- src/callproc.c 2014-06-01 23:17:56 +0000 +++ src/callproc.c 2014-06-08 00:35:27 +0000 @@ -805,8 +805,10 @@ /* Now NREAD is the total amount of data in the buffer. */ immediate_quit = 0; - if (NILP (BVAR (current_buffer, enable_multibyte_characters)) - && ! CODING_MAY_REQUIRE_DECODING (&process_coding)) + if (!nread) + ; + else if (NILP (BVAR (current_buffer, enable_multibyte_characters)) + && ! CODING_MAY_REQUIRE_DECODING (&process_coding)) insert_1_both (buf, nread, nread, 0, 1, 0); else { /* We have to decode the input. */ @@ -814,6 +816,7 @@ ptrdiff_t count1 = SPECPDL_INDEX (); XSETBUFFER (curbuf, current_buffer); + /* FIXME: Call signal_after_change! */ prepare_to_modify_buffer (PT, PT, NULL); /* We cannot allow after-change-functions be run during decoding, because that might modify the === modified file 'src/dispextern.h' --- src/dispextern.h 2014-02-04 07:36:58 +0000 +++ src/dispextern.h 2014-06-04 09:16:46 +0000 @@ -3454,7 +3454,7 @@ int *, int *, int *, int *); extern void redraw_frame (struct frame *); extern bool update_frame (struct frame *, bool, bool); -extern void update_frame_with_menu (struct frame *); +extern void update_frame_with_menu (struct frame *, int, int); extern void bitch_at_user (void); extern void adjust_frame_glyphs (struct frame *); void free_glyphs (struct frame *); === modified file 'src/dispnew.c' --- src/dispnew.c 2014-03-05 13:50:48 +0000 +++ src/dispnew.c 2014-06-04 09:16:46 +0000 @@ -92,7 +92,7 @@ static void mirror_line_dance (struct window *, int, int, int *, char *); static bool update_window_tree (struct window *, bool); static bool update_window (struct window *, bool); -static bool update_frame_1 (struct frame *, bool, bool); +static bool update_frame_1 (struct frame *, bool, bool, bool); static bool scrolling (struct frame *); static void set_window_cursor_after_update (struct window *); static void adjust_frame_glyphs_for_window_redisplay (struct frame *); @@ -3070,7 +3070,7 @@ /* Update the display */ update_begin (f); - paused_p = update_frame_1 (f, force_p, inhibit_hairy_id_p); + paused_p = update_frame_1 (f, force_p, inhibit_hairy_id_p, 1); update_end (f); if (FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f)) @@ -3100,12 +3100,17 @@ glyphs. This is like the second part of update_frame, but it doesn't call build_frame_matrix, because we already have the desired matrix prepared, and don't want it to be overwritten by the - text of the normal display. */ + text of the normal display. + + ROW and COL, if non-negative, are the row and column of the TTY + frame where to position the cursor after the frame update is + complete. Negative values mean ask update_frame_1 to position the + cursor "normally", i.e. at point in the selected window. */ void -update_frame_with_menu (struct frame *f) +update_frame_with_menu (struct frame *f, int row, int col) { struct window *root_window = XWINDOW (f->root_window); - bool paused_p; + bool paused_p, cursor_at_point_p; eassert (FRAME_TERMCAP_P (f)); @@ -3115,9 +3120,14 @@ /* Update the display. */ update_begin (f); + cursor_at_point_p = !(row >= 0 && col >= 0); /* Force update_frame_1 not to stop due to pending input, and not try scrolling. */ - paused_p = update_frame_1 (f, 1, 1); + paused_p = update_frame_1 (f, 1, 1, cursor_at_point_p); + /* ROW and COL tell us where in the menu to position the cursor, so + that screen readers know the active region on the screen. */ + if (!cursor_at_point_p) + cursor_to (f, row, col); update_end (f); if (FRAME_TTY (f)->termscript) @@ -3132,12 +3142,11 @@ check_window_matrix_pointers (root_window); #endif add_frame_display_history (f, paused_p); -#else - IF_LINT ((void) paused_p); #endif /* Reset flags indicating that a window should be updated. */ set_window_update_flags (root_window, false); + display_completed = !paused_p; } @@ -4414,12 +4423,14 @@ /* Update the desired frame matrix of frame F. FORCE_P means that the update should not be stopped by pending input. - INHIBIT_HAIRY_ID_P means that scrolling should not be tried. + INHIBIT_ID_P means that scrolling by insert/delete should not be tried. + SET_CURSOR_P false means do not set cursor at point in selected window. Value is true if update was stopped due to pending input. */ static bool -update_frame_1 (struct frame *f, bool force_p, bool inhibit_id_p) +update_frame_1 (struct frame *f, bool force_p, bool inhibit_id_p, + bool set_cursor_p) { /* Frame matrices to work on. */ struct glyph_matrix *current_matrix = f->current_matrix; @@ -4491,7 +4502,7 @@ pause_p = 0 < i && i < FRAME_LINES (f) - 1; /* Now just clean up termcap drivers and set cursor, etc. */ - if (!pause_p) + if (!pause_p && set_cursor_p) { if ((cursor_in_echo_area /* If we are showing a message instead of the mini-buffer, === modified file 'src/sysdep.c' --- src/sysdep.c 2014-06-01 23:17:56 +0000 +++ src/sysdep.c 2014-06-08 00:35:27 +0000 @@ -1270,7 +1270,7 @@ int i; tty_turn_off_insert (tty_out); - for (i = curX (tty_out); i < FrameCols (tty_out) - 1; i++) + for (i = cursorX (tty_out); i < FrameCols (tty_out) - 1; i++) { fputc (' ', tty_out->output); } === modified file 'src/term.c' --- src/term.c 2014-06-07 07:25:49 +0000 +++ src/term.c 2014-06-08 00:35:27 +0000 @@ -2934,8 +2934,7 @@ display_tty_menu_item (menu->text[j], max_width, face, x, y + i, menu->submenu[j] != NULL); } - update_frame_with_menu (sf); - cursor_to (sf, row, col); + update_frame_with_menu (sf, row, col); } /* --------------------------- X Menu emulation ---------------------- */ @@ -3106,7 +3105,7 @@ screen_update (struct frame *f, struct glyph_matrix *mtx) { restore_desired_matrix (f, mtx); - update_frame_with_menu (f); + update_frame_with_menu (f, -1, -1); } typedef enum { @@ -3255,7 +3254,7 @@ /* Force update of the current frame, so that the desired and the current matrices are identical. */ - update_frame_with_menu (sf); + update_frame_with_menu (sf, -1, -1); state[0].menu = menu; state[0].screen_behind = save_and_enable_current_matrix (sf); @@ -3400,8 +3399,6 @@ state[statecount - 1].y, state[statecount - 1].pane, faces, x, y, first_item, 1); - tty_hide_cursor (tty); - fflush (tty->output); /* The call to display help-echo below will move the cursor, so remember its current position as computed by tty_menu_display. */ @@ -3420,10 +3417,13 @@ item, so that screen readers and other accessibility aids know where the active region is. */ cursor_to (sf, row, col); - tty_hide_cursor (tty); - fflush (tty->output); prev_menu_help_message = menu_help_message; } + /* Both tty_menu_display and help_callback invoke update_end, + which calls tty_show_cursor. Re-hide it, so it doesn't show + through the menus. */ + tty_hide_cursor (tty); + fflush (tty->output); } sf->mouse_moved = 0; ------------------------------------------------------------ revno: 117287 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2014-06-07 17:29:48 +0300 message: Document latest changes in make_lispy_position. doc/lispref/commands.texi (Click Events): Update contents of click event's position list due to last changes in make_lispy_position. etc/NEWS: Mention the incompatible change. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2014-06-02 00:18:22 +0000 +++ doc/lispref/ChangeLog 2014-06-07 14:29:48 +0000 @@ -1,3 +1,8 @@ +2014-06-07 Eli Zaretskii + + * commands.texi (Click Events): Update contents of click event's + position list due to last changes in make_lispy_position. + 2014-06-02 Glenn Morris * text.texi (Buffer Contents): === modified file 'doc/lispref/commands.texi' --- doc/lispref/commands.texi 2014-03-22 22:36:29 +0000 +++ doc/lispref/commands.texi 2014-06-07 14:29:48 +0000 @@ -1396,8 +1396,9 @@ @item @var{text-pos} For clicks on a marginal area or on a fringe, this is the buffer position of the first visible character in the corresponding line in -the window. For other events, it is the current buffer position in -the window. +the window. For clicks on the mode line or the header line, this is +@code{nil}. For other events, it is the buffer position closest to +the click. @item @var{col}, @var{row} These are the actual column and row coordinate numbers of the glyph === modified file 'etc/NEWS' --- etc/NEWS 2014-06-02 01:02:21 +0000 +++ etc/NEWS 2014-06-07 14:29:48 +0000 @@ -132,6 +132,12 @@ ** cl-the now asserts that its argument is of the given type. ++++ +** Mouse click events on mode line or header line no longer include +any reference to a buffer position. The 6th member of the mouse +position list returned for such events is now nil. + + * Lisp Changes in Emacs 24.5 ------------------------------------------------------------ revno: 117286 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2014-06-07 10:25:49 +0300 message: Fix last commit. src/term.c (tty_menu_show) [WINDOWSNT]: Make tty_menu_show extern only for WINDOWSNT. src/menu.h (tty_menu_show) [WINDOWSNT]: Declare extern only for WINDOWSNT. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-06 19:33:19 +0000 +++ src/ChangeLog 2014-06-07 07:25:49 +0000 @@ -1,3 +1,9 @@ +2014-06-07 Eli Zaretskii + + * term.c (tty_menu_show) [WINDOWSNT]: Make tty_menu_show extern + only for WINDOWSNT. + * menu.h (tty_menu_show) [WINDOWSNT]: Declare extern only for WINDOWSNT. + 2014-06-06 Paul Eggert * term.c (tty_menu_show) [!HAVE_NTGUI]: Now static. === modified file 'src/menu.h' --- src/menu.h 2014-06-06 19:33:19 +0000 +++ src/menu.h 2014-06-07 07:25:49 +0000 @@ -64,9 +64,11 @@ #ifdef HAVE_NTGUI extern Lisp_Object w32_menu_show (struct frame *, int, int, int, Lisp_Object, const char **); +#ifdef WINDOWSNT extern Lisp_Object tty_menu_show (struct frame *, int, int, int, Lisp_Object, const char **); #endif +#endif #ifdef HAVE_NS extern Lisp_Object ns_menu_show (struct frame *, int, int, int, Lisp_Object, const char **); === modified file 'src/term.c' --- src/term.c 2014-06-06 19:33:19 +0000 +++ src/term.c 2014-06-07 07:25:49 +0000 @@ -3582,7 +3582,8 @@ } } -#ifndef HAVE_NTGUI +/* WINDOWSNT uses this as menu_show_hook, see w32console.c. */ +#ifndef WINDOWSNT static #endif Lisp_Object ------------------------------------------------------------ revno: 117285 committer: Paul Eggert branch nick: trunk timestamp: Fri 2014-06-06 12:33:19 -0700 message: * term.c (tty_menu_show) [!HAVE_NTGUI]: Now static. * menu.h (tty_menu_show) [!HAVE_NTGUI]: Omit extern decl. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-06 14:37:05 +0000 +++ src/ChangeLog 2014-06-06 19:33:19 +0000 @@ -1,3 +1,8 @@ +2014-06-06 Paul Eggert + + * term.c (tty_menu_show) [!HAVE_NTGUI]: Now static. + * menu.h (tty_menu_show) [!HAVE_NTGUI]: Omit extern decl. + 2014-06-06 Stefan Monnier * window.c (Frecenter): Signal an error if window-buffer is not === modified file 'src/menu.h' --- src/menu.h 2014-06-04 04:58:31 +0000 +++ src/menu.h 2014-06-06 19:33:19 +0000 @@ -29,7 +29,7 @@ /* Bit fields used by terminal-specific menu_show_hook. */ enum { - MENU_KEYMAPS = 0x1, + MENU_KEYMAPS = 0x1, MENU_FOR_CLICK = 0x2, MENU_KBD_NAVIGATION = 0x4 }; @@ -64,12 +64,12 @@ #ifdef HAVE_NTGUI extern Lisp_Object w32_menu_show (struct frame *, int, int, int, Lisp_Object, const char **); +extern Lisp_Object tty_menu_show (struct frame *, int, int, int, + Lisp_Object, const char **); #endif #ifdef HAVE_NS extern Lisp_Object ns_menu_show (struct frame *, int, int, int, Lisp_Object, const char **); #endif -extern Lisp_Object tty_menu_show (struct frame *, int, int, int, - Lisp_Object, const char **); extern ptrdiff_t menu_item_width (const unsigned char *); #endif /* MENU_H */ === modified file 'src/term.c' --- src/term.c 2014-06-04 04:58:31 +0000 +++ src/term.c 2014-06-06 19:33:19 +0000 @@ -3582,6 +3582,9 @@ } } +#ifndef HAVE_NTGUI +static +#endif Lisp_Object tty_menu_show (struct frame *f, int x, int y, int menuflags, Lisp_Object title, const char **error_name) ------------------------------------------------------------ revno: 117284 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17586 author: Santiago Payà i Miralta committer: Stefan Monnier branch nick: trunk timestamp: Fri 2014-06-06 12:38:44 -0400 message: * lisp/vc/vc-hg.el (vc-hg-create-tag, vc-hg-retrieve-tag): New functions. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-06 16:11:53 +0000 +++ lisp/ChangeLog 2014-06-06 16:38:44 +0000 @@ -1,5 +1,8 @@ 2014-06-06 Santiago Payà i Miralta + * vc/vc-hg.el (vc-hg-create-tag, vc-hg-retrieve-tag): New functions + (bug#17586). + * vc/vc-hg.el (vc-hg-log-graph): New var. (vc-hg-print-log): Use it. (vc-hg-root-log-format): Include branch name and bookmarks; ignore === modified file 'lisp/vc/vc-hg.el' --- lisp/vc/vc-hg.el 2014-06-06 16:11:53 +0000 +++ lisp/vc/vc-hg.el 2014-06-06 16:38:44 +0000 @@ -82,8 +82,8 @@ ;; - annotate-current-time () NOT NEEDED ;; - annotate-extract-revision-at-line () OK ;; TAG SYSTEM -;; - create-tag (dir name branchp) NEEDED -;; - retrieve-tag (dir name update) NEEDED +;; - create-tag (dir name branchp) OK +;; - retrieve-tag (dir name update) OK FIXME UPDATE BUFFERS ;; MISCELLANEOUS ;; - make-version-backups-p (file) ?? ;; - repository-hostname (dirname) ?? @@ -391,8 +391,26 @@ (if (match-beginning 3) (match-string-no-properties 1) (cons (match-string-no-properties 1) - (expand-file-name (match-string-no-properties 4) - (vc-hg-root default-directory))))))) + (expand-file-name (match-string-no-properties 4) + (vc-hg-root default-directory))))))) + +;;; Tag system + +(defun vc-hg-create-tag (dir name branchp) + "Attach the tag NAME to the state of the working copy." + (let ((default-directory dir)) + (and (vc-hg-command nil 0 nil "status") + (vc-hg-command nil 0 nil (if branchp "bookmark" "tag") name)))) + +(defun vc-hg-retrieve-tag (dir name update) + "Retrieve the version tagged by NAME of all registered files at or below DIR." + (let ((default-directory dir)) + (vc-hg-command nil 0 nil "update" name) + ;; FIXME: update buffers if `update' is true + ;; TODO: update *vc-change-log* buffer so can see @ if --graph + )) + +;;; Miscellaneous (defun vc-hg-previous-revision (_file rev) (let ((newrev (1- (string-to-number rev)))) ------------------------------------------------------------ revno: 117283 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17515 author: Santiago Payà i Miralta committer: Stefan Monnier branch nick: trunk timestamp: Fri 2014-06-06 12:11:53 -0400 message: * lisp/vc/vc-hg.el (vc-hg-log-graph): New var. (vc-hg-print-log): Use it. (vc-hg-root-log-format): Include branch name and bookmarks; ignore graph output. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-06 14:37:05 +0000 +++ lisp/ChangeLog 2014-06-06 16:11:53 +0000 @@ -1,3 +1,10 @@ +2014-06-06 Santiago Payà i Miralta + + * vc/vc-hg.el (vc-hg-log-graph): New var. + (vc-hg-print-log): Use it. + (vc-hg-root-log-format): Include branch name and bookmarks; ignore + graph output (bug#17515). + 2014-06-06 Stefan Monnier * mouse.el (mouse-posn-property): Ignore buffer position info when the @@ -631,7 +638,7 @@ * emacs-lisp/nadvice.el (advice--interactive-form): Don't get fooled into autoloading just because of a silly indirection. -2014-05-12 Santiago Payà i Miralta (tiny change) +2014-05-12 Santiago Payà i Miralta * vc/vc-hg.el (vc-hg-unregister): New function. (Bug#17454) === modified file 'lisp/vc/vc-hg.el' --- lisp/vc/vc-hg.el 2014-05-11 02:01:08 +0000 +++ lisp/vc/vc-hg.el 2014-06-06 16:11:53 +0000 @@ -146,12 +146,19 @@ :group 'vc-hg) (defcustom vc-hg-root-log-format - '("{rev}:{tags}: {author|person} {date|shortdate} {desc|firstline}\\n" - "^\\([0-9]+\\):\\([^:]*\\): \\(.*?\\)[ \t]+\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}\\)" + `(,(concat "{rev}:{ifeq(branch, 'default','', '{branch}')}" + ":{bookmarks}:{tags}:{author|person}" + " {date|shortdate} {desc|firstline}\\n") + ,(concat "^\\(?:[+@o x|-]*\\)" ;Graph data. + "\\([0-9]+\\):\\([^:]*\\)" + ":\\([^:]*\\):\\([^:]*\\):\\(.*?\\)" + "[ \t]+\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}\\)") ((1 'log-view-message-face) - (2 'change-log-list) - (3 'change-log-name) - (4 'change-log-date))) + (2 'change-log-file) + (3 'change-log-list) + (4 'change-log-conditionals) + (5 'change-log-name) + (6 'change-log-date))) "Mercurial log template for `vc-hg-print-log' short format. This should be a list (TEMPLATE REGEXP KEYWORDS), where TEMPLATE is the \"--template\" argument string to pass to Mercurial, @@ -160,7 +167,7 @@ highlighting the Log View buffer." :type '(list string string (repeat sexp)) :group 'vc-hg - :version "24.1") + :version "24.5") ;;; Properties of the backend @@ -247,6 +254,9 @@ (autoload 'vc-setup-buffer "vc-dispatcher") +(defvar vc-hg-log-graph nil + "If non-nil, use `--graph' in the short log output.") + (defun vc-hg-print-log (files buffer &optional shortlog start-revision limit) "Print commit log associated with FILES into specified BUFFER. If SHORTLOG is non-nil, use a short format based on `vc-hg-root-log-format'. @@ -264,7 +274,9 @@ (nconc (when start-revision (list (format "-r%s:0" start-revision))) (when limit (list "-l" (format "%s" limit))) - (when shortlog (list "--template" (car vc-hg-root-log-format))) + (when shortlog `(,@(if vc-hg-log-graph '("--graph")) + "--template" + ,(car vc-hg-root-log-format))) vc-hg-log-switches))))) (defvar log-view-message-re) ------------------------------------------------------------ revno: 117282 committer: Stefan Monnier branch nick: trunk timestamp: Fri 2014-06-06 10:37:05 -0400 message: * src/window.c (Frecenter): Signal an error if window-buffer is not current-buffer. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-06-06 00:39:22 +0000 +++ lisp/ChangeLog 2014-06-06 14:37:05 +0000 @@ -1,3 +1,8 @@ +2014-06-06 Stefan Monnier + + * mouse.el (mouse-posn-property): Ignore buffer position info when the + even happened elsewhere. + 2014-06-06 Mario Lang * emacs-lisp/tabulated-list.el (tabulated-list-print): Only call @@ -9,8 +14,8 @@ 2014-06-05 Michal Nazarewicz - * textmodes/tildify.el (tildify-foreach-region-outside-env): New - function which calls a callback on portions of the buffer that are + * textmodes/tildify.el (tildify-foreach-region-outside-env): + New function which calls a callback on portions of the buffer that are outside of ignored environments. (tildify-build-regexp): Remove function since it is now incorporated in `tildify-foreach-region-outside-env' where it is @@ -243,14 +248,14 @@ 2014-05-30 Ken Olum (tiny change) - * mail/rmail.el (rmail-delete-forward, rmail-delete-backward): The - argument COUNT is now optional, to be more backward-compatible. + * mail/rmail.el (rmail-delete-forward, rmail-delete-backward): + The argument COUNT is now optional, to be more backward-compatible. Doc fix. (Bug#17560) 2014-05-29 Reuben Thomas - * whitespace.el (whitespace-report-region): Simplify - documentation. + * whitespace.el (whitespace-report-region): + Simplify documentation. (whitespace-report-region): Allow report-if-bogus to take the value `never', for non-interactive use. (whitespace-report): Refer to whitespace-report-region's === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-06 02:35:17 +0000 +++ src/ChangeLog 2014-06-06 14:37:05 +0000 @@ -1,5 +1,8 @@ 2014-06-06 Stefan Monnier + * window.c (Frecenter): Signal an error if window-buffer is not + current-buffer. + * keyboard.c (make_lispy_position): Don't include a buffer position in mode/header-line mouse events. === modified file 'src/window.c' --- src/window.c 2014-04-29 15:16:07 +0000 +++ src/window.c 2014-06-06 14:37:05 +0000 @@ -4867,7 +4867,7 @@ /* If PT is not visible in WINDOW, move back one half of the screen. Allow PT to be partially visible, otherwise something like (scroll-down 1) with PT in the line before - the partially visible one would recenter. */ + the partially visible one would recenter. */ if (!pos_visible_p (w, PT, &x, &y, &rtop, &rbot, &rowh, &vpos)) { @@ -4896,7 +4896,7 @@ } else if (auto_window_vscroll_p) { - if (rtop || rbot) /* partially visible */ + if (rtop || rbot) /* Partially visible. */ { int px; int dy = frame_line_height; @@ -5643,14 +5643,16 @@ { struct window *w = XWINDOW (selected_window); struct buffer *buf = XBUFFER (w->contents); - struct buffer *obuf = current_buffer; bool center_p = 0; ptrdiff_t charpos, bytepos; EMACS_INT iarg IF_LINT (= 0); int this_scroll_margin; + if (buf != current_buffer) + error ("`recenter'ing a window that does not display current-buffer."); + /* If redisplay is suppressed due to an error, try again. */ - obuf->display_error_modiff = 0; + buf->display_error_modiff = 0; if (NILP (arg)) { @@ -5672,7 +5674,7 @@ center_p = 1; } - else if (CONSP (arg)) /* Just C-u. */ + else if (CONSP (arg)) /* Just C-u. */ center_p = 1; else { @@ -5681,12 +5683,10 @@ iarg = XINT (arg); } - set_buffer_internal (buf); - /* Do this after making BUF current in case scroll_margin is buffer-local. */ - this_scroll_margin = - max (0, min (scroll_margin, w->total_lines / 4)); + this_scroll_margin + = max (0, min (scroll_margin, w->total_lines / 4)); /* Handle centering on a graphical frame specially. Such frames can have variable-height lines and centering point on the basis of @@ -5734,7 +5734,7 @@ h -= it.current_y; else { - /* Last line has no newline */ + /* Last line has no newline. */ h -= line_bottom_y (&it); it.vpos++; } @@ -5813,10 +5813,9 @@ w->optional_new_start = 1; - w->start_at_line_beg = (bytepos == BEGV_BYTE || - FETCH_BYTE (bytepos - 1) == '\n'); + w->start_at_line_beg = (bytepos == BEGV_BYTE + || FETCH_BYTE (bytepos - 1) == '\n'); - set_buffer_internal (obuf); return Qnil; } ------------------------------------------------------------ revno: 117281 committer: Stefan Monnier branch nick: trunk timestamp: Thu 2014-06-05 22:35:17 -0400 message: * lisp/mouse.el (mouse-posn-property): Ignore buffer position info when the even happened elsewhere. * src/keyboard.c (make_lispy_position): Don't include a buffer position in mode/header-line mouse events. diff: === modified file 'lisp/mouse.el' --- lisp/mouse.el 2014-06-02 00:18:22 +0000 +++ lisp/mouse.el 2014-06-06 02:35:17 +0000 @@ -684,10 +684,11 @@ (str (posn-string pos))) (or (and str (get-text-property (cdr str) property (car str))) - ;; FIXME: mouse clicks on the mode-line come with a position in - ;; (nth 5). Maybe we should change the C code instead so that - ;; mouse-clicks don't include a position there! - (and pt (not (memq (posn-area pos) '(mode-line header-line))) + ;; Mouse clicks in the fringe come with a position in + ;; (nth 5). This is useful but is not exactly where we clicked, so + ;; don't look up that position's properties! + (and pt (not (memq (posn-area pos) '(left-fringe right-fringe + left-margin right-margin))) (get-char-property pt property w)))) (get-char-property pos property))) === modified file 'src/ChangeLog' --- src/ChangeLog 2014-06-06 02:22:40 +0000 +++ src/ChangeLog 2014-06-06 02:35:17 +0000 @@ -1,5 +1,8 @@ 2014-06-06 Stefan Monnier + * keyboard.c (make_lispy_position): Don't include a buffer position in + mode/header-line mouse events. + * keyboard.c (read_char): Handle (t . ) in the second use of Vunread_command_events (bug#17650). === modified file 'src/keyboard.c' --- src/keyboard.c 2014-06-06 02:22:40 +0000 +++ src/keyboard.c 2014-06-06 02:35:17 +0000 @@ -2465,7 +2465,7 @@ inside universal-argument. */ if (CONSP (c) && EQ (XCAR (c), Qt)) - c = XCDR (c); + c = XCDR (c); else reread = true; @@ -5228,7 +5228,7 @@ /* It's a click in window WINDOW at frame coordinates (X,Y) */ struct window *w = XWINDOW (window); Lisp_Object string_info = Qnil; - ptrdiff_t textpos = -1; + ptrdiff_t textpos = 0; int col = -1, row = -1; int dx = -1, dy = -1; int width = -1, height = -1; @@ -5263,9 +5263,7 @@ &object, &dx, &dy, &width, &height); if (STRINGP (string)) string_info = Fcons (string, make_number (charpos)); - textpos = (w == XWINDOW (selected_window) - && current_buffer == XBUFFER (w->contents)) - ? PT : marker_position (w->pointm); + textpos = -1; xret = wx; yret = wy; @@ -5333,7 +5331,7 @@ /* For clicks in the text area, fringes, or margins, call buffer_posn_from_coords to extract TEXTPOS, the buffer position nearest to the click. */ - if (textpos < 0) + if (!textpos) { Lisp_Object string2, object2 = Qnil; struct display_pos p; @@ -5384,15 +5382,15 @@ } #endif - /* Object info */ + /* Object info. */ extra_info = list3 (object, Fcons (make_number (dx), make_number (dy)), Fcons (make_number (width), make_number (height))); - /* String info */ + /* String info. */ extra_info = Fcons (string_info, - Fcons (make_number (textpos), + Fcons (textpos < 0 ? Qnil : make_number (textpos), Fcons (Fcons (make_number (col), make_number (row)), extra_info))); ------------------------------------------------------------ Use --include-merged or -n0 to see merged revisions.