Now on revision 112345. ------------------------------------------------------------ revno: 112345 committer: Xue Fuqiao branch nick: trunk timestamp: Sun 2013-04-21 11:27:51 +0800 message: searching.texi (Regexp Backslash): Doc fix for backslash constructs in regular expressions. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2013-04-15 17:01:00 +0000 +++ doc/lispref/ChangeLog 2013-04-21 03:27:51 +0000 @@ -1,3 +1,8 @@ +2013-04-21 Xue Fuqiao + + * searching.texi (Regexp Backslash): Doc fix for backslash + constructs in regular expressions. + 2013-04-15 Christopher Schmidt * tips.texi (Coding Conventions): Mention separation of package === modified file 'doc/lispref/searching.texi' --- doc/lispref/searching.texi 2013-01-03 02:15:57 +0000 +++ doc/lispref/searching.texi 2013-04-21 03:27:51 +0000 @@ -589,10 +589,8 @@ For the most part, @samp{\} followed by any character matches only that character. However, there are several exceptions: certain -two-character sequences starting with @samp{\} that have special -meanings. (The character after the @samp{\} in such a sequence is -always ordinary when used on its own.) Here is a table of the special -@samp{\} constructs. +sequences starting with @samp{\} that have special meanings. Here is +a table of the special @samp{\} constructs. @table @samp @item \| ------------------------------------------------------------ revno: 112344 committer: Xue Fuqiao branch nick: trunk timestamp: Sun 2013-04-21 11:13:04 +0800 message: comint.el: (comint-dynamic-complete-functions, comint-mode-map): `comint-dynamic-complete' is obsolete since 24.1, replaced by `completion-at-point'. (Bug#13774) diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-04-21 02:45:38 +0000 +++ lisp/ChangeLog 2013-04-21 03:13:04 +0000 @@ -1,5 +1,9 @@ 2013-04-21 Xue Fuqiao + * comint.el: (comint-dynamic-complete-functions, comint-mode-map): + `comint-dynamic-complete' is obsolete since 24.1, replaced by + `completion-at-point'. (Bug#13774) + * startup.el (normal-no-mouse-startup-screen): Bug fix, the default key binding for `describe-distribution' has been moved to `C-h C-o'. (Bug#13970) === modified file 'lisp/comint.el' --- lisp/comint.el 2013-04-20 16:24:04 +0000 +++ lisp/comint.el 2013-04-21 03:13:04 +0000 @@ -213,7 +213,7 @@ If the value is `input', then the expansion is seen on input. If the value is `history', then the expansion is only when inserting into the buffer's input ring. See also `comint-magic-space' and -`comint-dynamic-complete'. +`completion-at-point'. This variable is buffer-local." :type '(choice (const :tag "off" nil) @@ -371,7 +371,7 @@ '(comint-c-a-p-replace-by-expanded-history comint-filename-completion) "List of functions called to perform completion. Works like `completion-at-point-functions'. -See also `comint-dynamic-complete'. +See also `completion-at-point'. This is a good thing to set in mode hooks.") @@ -616,7 +616,7 @@ and addition is controlled by the variable `comint-input-ignoredups'. Commands with no default key bindings include `send-invisible', -`comint-dynamic-complete', `comint-dynamic-list-filename-completions', and +`completion-at-point', `comint-dynamic-list-filename-completions', and `comint-magic-space'. Input to, and output from, the subprocess can cause the window to scroll to @@ -2892,7 +2892,7 @@ ;; Useful completion functions, courtesy of the Ergo group. ;; Six commands: -;; comint-dynamic-complete Complete or expand command, filename, +;; completion-at-point Complete or expand command, filename, ;; history at point. ;; comint-dynamic-complete-filename Complete filename at point. ;; comint-dynamic-list-filename-completions List completions in help buffer. @@ -2901,7 +2901,7 @@ ;; These are not installed in the comint-mode keymap. But they are ;; available for people who want them. Shell-mode installs them: -;; (define-key shell-mode-map "\t" 'comint-dynamic-complete) +;; (define-key shell-mode-map "\t" 'completion-at-point) ;; (define-key shell-mode-map "\M-?" ;; 'comint-dynamic-list-filename-completions))) ;; @@ -3805,7 +3805,7 @@ ;; (setq shell-mode-map (copy-keymap comint-mode-map)) ;; (define-key shell-mode-map "\C-c\C-f" 'shell-forward-command) ;; (define-key shell-mode-map "\C-c\C-b" 'shell-backward-command) -;; (define-key shell-mode-map "\t" 'comint-dynamic-complete) +;; (define-key shell-mode-map "\t" 'completion-at-point) ;; (define-key shell-mode-map "\M-?" ;; 'comint-dynamic-list-filename-completions))) ;; ------------------------------------------------------------ revno: 112343 committer: Xue Fuqiao branch nick: trunk timestamp: Sun 2013-04-21 10:45:38 +0800 message: startup.el (normal-no-mouse-startup-screen): Bug fix, the default key binding for C-h C-o'. (Bug#13970) diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-04-21 00:37:54 +0000 +++ lisp/ChangeLog 2013-04-21 02:45:38 +0000 @@ -1,3 +1,9 @@ +2013-04-21 Xue Fuqiao + + * startup.el (normal-no-mouse-startup-screen): Bug fix, the + default key binding for `describe-distribution' has been moved to + `C-h C-o'. (Bug#13970) + 2013-04-21 Glenn Morris * vc/vc.el (vc-print-log-setup-buttons, vc-print-log-internal): === modified file 'lisp/startup.el' --- lisp/startup.el 2013-03-16 08:20:36 +0000 +++ lisp/startup.el 2013-04-21 02:45:38 +0000 @@ -1940,7 +1940,7 @@ (insert "\n" (emacs-version) "\n" emacs-copyright "\n") (if (and (eq (key-binding "\C-h\C-c") 'describe-copying) - (eq (key-binding "\C-h\C-d") 'describe-distribution) + (eq (key-binding "\C-h\C-o") 'describe-distribution) (eq (key-binding "\C-h\C-w") 'describe-no-warranty)) (progn (insert ------------------------------------------------------------ revno: 112342 committer: Glenn Morris branch nick: trunk timestamp: Sat 2013-04-20 17:37:54 -0700 message: vc.el doc fixes * lisp/vc/vc.el (vc-print-log-setup-buttons, vc-print-log-internal): Add doc strings. (vc-print-log): Clarify interactive prompt. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-04-20 19:48:04 +0000 +++ lisp/ChangeLog 2013-04-21 00:37:54 +0000 @@ -1,3 +1,9 @@ +2013-04-21 Glenn Morris + + * vc/vc.el (vc-print-log-setup-buttons, vc-print-log-internal): + Add doc strings. + (vc-print-log): Clarify interactive prompt. + 2013-04-20 Glenn Morris * emacs-lisp/bytecomp.el (byte-compile-insert-header): === modified file 'lisp/vc/vc.el' --- lisp/vc/vc.el 2013-02-04 21:23:15 +0000 +++ lisp/vc/vc.el 2013-04-21 00:37:54 +0000 @@ -2084,6 +2084,11 @@ (defvar log-view-vc-fileset) (defun vc-print-log-setup-buttons (working-revision is-start-revision limit pl-return) + "Insert at the end of the current buffer buttons to show more log entries. +In the new log, leave point at WORKING-REVISION (if non-nil). +LIMIT is the number of entries currently shown. +Does nothing if IS-START-REVISION is non-nil, or if LIMIT is nil, +or if PL-RETURN is 'limit-unsupported." (when (and limit (not (eq 'limit-unsupported pl-return)) (not is-start-revision)) (goto-char (point-max)) @@ -2104,6 +2109,17 @@ (defun vc-print-log-internal (backend files working-revision &optional is-start-revision limit) + "For specified BACKEND and FILES, show the VC log. +Leave point at WORKING-REVISION, if it is non-nil. +If IS-START-REVISION is non-nil, start the log from WORKING-REVISION. +Show up to LIMIT entries (non-nil means unlimited). +\(IS-START-REVISION non-nil might not work correctly if LIMIT is not 1.)" + ;; The parenthetical remark is based on the commentary of vc.el for + ;; "print log": "At this point START-REVISION is only required to work + ;; in conjunction with LIMIT = 1." The only thing that passes + ;; IS-START-REVISION non-nil is vc-annotate-show-log-revision-at-line, + ;; which sets LIMIT = 1. + ;; Don't switch to the output buffer before running the command, ;; so that any buffer-local settings in the vc-controlled ;; buffer can be accessed by the command. @@ -2189,7 +2205,7 @@ (interactive (cond (current-prefix-arg - (let ((rev (read-from-minibuffer "Log from revision (default: last revision): " nil + (let ((rev (read-from-minibuffer "Leave point at revision (default: last revision): " nil nil nil nil)) (lim (string-to-number (read-from-minibuffer ------------------------------------------------------------ revno: 112341 committer: Glenn Morris branch nick: trunk timestamp: Sat 2013-04-20 12:48:04 -0700 message: No longer include timestamp in header of .elc files This removes needless differences between files compiled at different times or by different people, or from sources in different locations. Ref: http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00187.html * lisp/emacs-lisp/bytecomp.el (byte-compile-insert-header): No longer include timestamp etc information. * etc/NEWS: Mention this. diff: === modified file 'etc/NEWS' --- etc/NEWS 2013-04-18 02:20:12 +0000 +++ etc/NEWS 2013-04-20 19:48:04 +0000 @@ -75,6 +75,8 @@ using the scroll bar (i.e. dragging the thumb down even when the end of the buffer is visible). +** In compiled Lisp files, the header no longer includes a timestamp. + * Editing Changes in Emacs 24.4 === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-04-20 19:11:25 +0000 +++ lisp/ChangeLog 2013-04-20 19:48:04 +0000 @@ -1,3 +1,8 @@ +2013-04-20 Glenn Morris + + * emacs-lisp/bytecomp.el (byte-compile-insert-header): + No longer include timestamp etc information. + 2013-04-20 Roland Winkler * faces.el (read-face-name): Bug fix, return just one face if arg === modified file 'lisp/emacs-lisp/bytecomp.el' --- lisp/emacs-lisp/bytecomp.el 2013-02-25 23:27:50 +0000 +++ lisp/emacs-lisp/bytecomp.el 2013-04-20 19:48:04 +0000 @@ -1997,11 +1997,7 @@ ;; >4 byte x version %d (insert ";ELC" 23 "\000\000\000\n" - ";;; Compiled by " - (or (and (boundp 'user-mail-address) user-mail-address) - (concat (user-login-name) "@" (system-name))) - " on " (current-time-string) "\n" - ";;; from file " filename "\n" + ";;; Compiled\n" ";;; in Emacs version " emacs-version "\n" ";;; with" (cond ------------------------------------------------------------ revno: 112340 [merge] committer: Glenn Morris branch nick: trunk timestamp: Sat 2013-04-20 12:11:25 -0700 message: Merge from emacs-24; up to r111343 diff: === modified file 'doc/man/ChangeLog' --- doc/man/ChangeLog 2013-03-11 16:31:55 +0000 +++ doc/man/ChangeLog 2013-04-20 19:11:25 +0000 @@ -1,3 +1,7 @@ +2013-04-20 Petr Hracek (tiny change) + + * emacs.1: Add some more command-line options. (Bug#14165) + 2012-12-02 Kevin Ryde * etags.1: Mention effect of --declarations in Lisp. === modified file 'doc/man/emacs.1' --- doc/man/emacs.1 2013-03-05 03:59:35 +0000 +++ doc/man/emacs.1 2013-04-20 19:11:25 +0000 @@ -79,12 +79,22 @@ and .IR column . .TP +.BI \-\-chdir " directory" +Change to +.IR directory . +.TP .BR \-q ", " \-\-no\-init\-file Do not load an init file. .TP +.BR \-nl ", " \-\-no\-shared\-memory +Do not use shared memory. +.TP .B \-\-no\-site\-file Do not load the site-wide startup file. .TP +.BR \-nsl ", " \-\-no\-site\-lisp +Do not add site-lisp directories to load-path. +.TP .B \-\-no\-desktop Do not load a saved desktop. .TP @@ -325,6 +335,9 @@ .BR \-nbc ", " \-\-no\-blinking\-cursor Disable blinking cursor. .TP +.BI \-\-parent-id " xid" +Set parent window. +.TP .BR \-nw ", " \-\-no\-window\-system Tell .I Emacs ------------------------------------------------------------ revno: 112339 committer: Roland Winkler branch nick: trunk timestamp: Sat 2013-04-20 12:33:52 -0500 message: lisp/faces.el (read-face-name): Bug fix, return just one face if arg multiple is nil diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-04-20 16:24:04 +0000 +++ lisp/ChangeLog 2013-04-20 17:33:52 +0000 @@ -1,3 +1,8 @@ +2013-04-20 Roland Winkler + + * faces.el (read-face-name): Bug fix, return just one face if arg + multiple is nil. (Bug#14209) + 2013-04-20 Stefan Monnier * emacs-lisp/nadvice.el (advice--where-alist): Add :override. === modified file 'lisp/faces.el' --- lisp/faces.el 2013-04-13 01:10:09 +0000 +++ lisp/faces.el 2013-04-20 17:33:52 +0000 @@ -979,9 +979,8 @@ ;; (for example, because DEFAULT was "all faces") (if (facep face) (push (intern face) faces))) ;; Return either a list of faces or just one face. - (if multiple - (nreverse faces) - (last faces)))) + (setq faces (nreverse faces)) + (if multiple faces (car faces)))) ;; Not defined without X, but behind window-system test. (defvar x-bitmap-file-path) ------------------------------------------------------------ revno: 112338 committer: Stefan Monnier branch nick: trunk timestamp: Sat 2013-04-20 12:24:04 -0400 message: Use add/remove-function to manipulate process-filters. * lisp/emacs-lisp/nadvice.el (advice--where-alist): Add :override. (remove-function): Autoload. * lisp/comint.el (comint-redirect-original-filter-function): Remove. (comint-redirect-cleanup, comint-redirect-send-command-to-process): * lisp/vc/vc-cvs.el (vc-cvs-annotate-process-filter,vc-cvs-annotate-command): * lisp/progmodes/octave-inf.el (inferior-octave-send-list-and-digest): * lisp/progmodes/prolog.el (prolog-consult-compile): * lisp/progmodes/gdb-mi.el (gdb, gdb--check-interpreter): Use add/remove-function instead. * lisp/progmodes/gud.el (gud-tooltip-original-filter): Remove. (gud-tooltip-process-output, gud-tooltip-tips): Use add/remove-function instead. * lisp/progmodes/xscheme.el (xscheme-previous-process-state): Remove. (scheme-interaction-mode, exit-scheme-interaction-mode): Use add/remove-function instead. * lisp/vc/vc-dispatcher.el: Use lexical-binding. (vc--process-sentinel): Rename from vc-process-sentinel. Change last arg to be the code to run. Don't use vc-previous-sentinel and vc-sentinel-commands any more. (vc-exec-after): Allow code to be a function. Use add/remove-function. (compilation-error-regexp-alist, view-old-buffer-read-only): Declare. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-04-19 19:56:16 +0000 +++ lisp/ChangeLog 2013-04-20 16:24:04 +0000 @@ -1,7 +1,33 @@ +2013-04-20 Stefan Monnier + + * emacs-lisp/nadvice.el (advice--where-alist): Add :override. + (remove-function): Autoload. + + * comint.el (comint-redirect-original-filter-function): Remove. + (comint-redirect-cleanup, comint-redirect-send-command-to-process): + * vc/vc-cvs.el (vc-cvs-annotate-process-filter,vc-cvs-annotate-command): + * progmodes/octave-inf.el (inferior-octave-send-list-and-digest): + * progmodes/prolog.el (prolog-consult-compile): + * progmodes/gdb-mi.el (gdb, gdb--check-interpreter): + Use add/remove-function instead. + * progmodes/gud.el (gud-tooltip-original-filter): Remove. + (gud-tooltip-process-output, gud-tooltip-tips): + Use add/remove-function instead. + * progmodes/xscheme.el (xscheme-previous-process-state): Remove. + (scheme-interaction-mode, exit-scheme-interaction-mode): + Use add/remove-function instead. + + * vc/vc-dispatcher.el: Use lexical-binding. + (vc--process-sentinel): Rename from vc-process-sentinel. + Change last arg to be the code to run. Don't use vc-previous-sentinel + and vc-sentinel-commands any more. + (vc-exec-after): Allow code to be a function. Use add/remove-function. + (compilation-error-regexp-alist, view-old-buffer-read-only): Declare. + 2013-04-19 Masatake YAMATO - * progmodes/sh-script.el (sh-imenu-generic-expression): Handle - function names with a single character. (Bug#11182) + * progmodes/sh-script.el (sh-imenu-generic-expression): + Handle function names with a single character. (Bug#11182) 2013-04-19 Dima Kogan (tiny change) === modified file 'lisp/comint.el' --- lisp/comint.el 2013-03-10 21:37:42 +0000 +++ lisp/comint.el 2013-04-20 16:24:04 +0000 @@ -3491,11 +3491,6 @@ string, and that there ought to be at least one copy of your prompt string in the process buffer already.") -(defvar comint-redirect-original-filter-function nil - "The process filter that was in place when redirection is started. -When redirection is completed, the process filter is restored to -this value.") - (defvar comint-redirect-subvert-readonly nil "Non-nil means `comint-redirect' can insert into read-only buffers. This works by binding `inhibit-read-only' around the insertion. @@ -3558,8 +3553,8 @@ ;; Release the last redirected string (setq comint-redirect-previous-input-string nil) ;; Restore the process filter - (set-process-filter (get-buffer-process (current-buffer)) - comint-redirect-original-filter-function) + (remove-function (process-filter (get-buffer-process (current-buffer))) + #'comint-redirect-filter) ;; Restore the mode line (setq mode-line-process comint-redirect-original-mode-line-process) ;; Set the completed flag @@ -3701,10 +3696,8 @@ comint-prompt-regexp ; Finished Regexp echo) ; Echo input - ;; Set the filter - (setq comint-redirect-original-filter-function ; Save the old filter - (process-filter proc)) - (set-process-filter proc 'comint-redirect-filter) + ;; Set the filter. + (add-function :override (process-filter proc) #'comint-redirect-filter) ;; Send the command (process-send-string (current-buffer) (concat command "\n")) === modified file 'lisp/emacs-lisp/nadvice.el' --- lisp/emacs-lisp/nadvice.el 2013-04-18 00:12:33 +0000 +++ lisp/emacs-lisp/nadvice.el 2013-04-20 16:24:04 +0000 @@ -41,6 +41,7 @@ '((:around "\300\301\302\003#\207" 5) (:before "\300\301\002\"\210\300\302\002\"\207" 4) (:after "\300\302\002\"\300\301\003\"\210\207" 5) + (:override "\300\301\"\207" 4) (:after-until "\300\302\002\"\206\013\000\300\301\002\"\207" 4) (:after-while "\300\302\002\"\205\013\000\300\301\002\"\207" 4) (:before-until "\300\301\002\"\206\013\000\300\302\002\"\207" 4) @@ -228,6 +229,7 @@ `:before' (lambda (&rest r) (apply FUNCTION r) (apply OLDFUN r)) `:after' (lambda (&rest r) (prog1 (apply OLDFUN r) (apply FUNCTION r))) `:around' (lambda (&rest r) (apply FUNCTION OLDFUN r)) +`:override' (lambda (&rest r) (apply FUNCTION r)) `:before-while' (lambda (&rest r) (and (apply FUNCTION r) (apply OLDFUN r))) `:before-until' (lambda (&rest r) (or (apply FUNCTION r) (apply OLDFUN r))) `:after-while' (lambda (&rest r) (and (apply OLDFUN r) (apply FUNCTION r))) @@ -263,6 +265,7 @@ (setf (gv-deref ref) (advice--make where function (gv-deref ref) props)))) +;;;###autoload (defmacro remove-function (place function) "Remove the FUNCTION piece of advice from PLACE. If FUNCTION was not added to PLACE, do nothing. === modified file 'lisp/progmodes/gdb-mi.el' --- lisp/progmodes/gdb-mi.el 2013-04-17 00:35:22 +0000 +++ lisp/progmodes/gdb-mi.el 2013-04-20 16:24:04 +0000 @@ -574,21 +574,20 @@ (concat (gdb-gud-context-command ,cmd1 ,noall) " " ,cmd2) ,(when (not noarg) 'arg))) -(defun gdb--check-interpreter (proc string) +(defun gdb--check-interpreter (filter proc string) (unless (zerop (length string)) - (let ((filter (process-get proc 'gud-normal-filter))) - (set-process-filter proc filter) - (unless (memq (aref string 0) '(?^ ?~ ?@ ?& ?* ?=)) - ;; Apparently we're not running with -i=mi. - (let ((msg "Error: you did not specify -i=mi on GDB's command line!")) - (message msg) - (setq string (concat (propertize msg 'font-lock-face 'error) - "\n" string))) - ;; Use the old gud-gbd filter, not because it works, but because it - ;; will properly display GDB's answers rather than hanging waiting for - ;; answers that aren't coming. - (set (make-local-variable 'gud-marker-filter) #'gud-gdb-marker-filter)) - (funcall filter proc string)))) + (remove-function (process-filter proc) #'gdb--check-interpreter) + (unless (memq (aref string 0) '(?^ ?~ ?@ ?& ?* ?=)) + ;; Apparently we're not running with -i=mi. + (let ((msg "Error: you did not specify -i=mi on GDB's command line!")) + (message msg) + (setq string (concat (propertize msg 'font-lock-face 'error) + "\n" string))) + ;; Use the old gud-gbd filter, not because it works, but because it + ;; will properly display GDB's answers rather than hanging waiting for + ;; answers that aren't coming. + (set (make-local-variable 'gud-marker-filter) #'gud-gdb-marker-filter)) + (funcall filter proc string))) (defvar gdb-control-level 0) @@ -662,8 +661,7 @@ ;; Setup a temporary process filter to warn when GDB was not started ;; with -i=mi. (let ((proc (get-buffer-process gud-comint-buffer))) - (process-put proc 'gud-normal-filter (process-filter proc)) - (set-process-filter proc #'gdb--check-interpreter)) + (add-function :around (process-filter proc) #'gdb--check-interpreter)) (set (make-local-variable 'gud-minor-mode) 'gdbmi) (set (make-local-variable 'gdb-control-level) 0) === modified file 'lisp/progmodes/gud.el' --- lisp/progmodes/gud.el 2013-04-19 15:58:07 +0000 +++ lisp/progmodes/gud.el 2013-04-20 16:24:04 +0000 @@ -3387,9 +3387,6 @@ ;;; Tips for `gud' -(defvar gud-tooltip-original-filter nil - "Process filter to restore after GUD output has been received.") - (defvar gud-tooltip-dereference nil "Non-nil means print expressions with a `*' in front of them. For C this would dereference a pointer expression.") @@ -3423,7 +3420,7 @@ ; gdb-mi.el gets round this problem. (defun gud-tooltip-process-output (process output) "Process debugger output and show it in a tooltip window." - (set-process-filter process gud-tooltip-original-filter) + (remove-function (process-filter process) #'gud-tooltip-process-output) (tooltip-show (tooltip-strip-prompt process output) (or gud-tooltip-echo-area tooltip-use-echo-area))) @@ -3490,8 +3487,8 @@ (gdb-input (concat cmd "\n") `(lambda () (gdb-tooltip-print ,expr)))) - (setq gud-tooltip-original-filter (process-filter process)) - (set-process-filter process 'gud-tooltip-process-output) + (add-function :override (process-filter process) + #'gud-tooltip-process-output) (gud-basic-call cmd)) expr)))))))) === modified file 'lisp/progmodes/octave-inf.el' --- lisp/progmodes/octave-inf.el 2013-01-01 09:11:05 +0000 +++ lisp/progmodes/octave-inf.el 2013-04-20 16:24:04 +0000 @@ -348,9 +348,9 @@ The elements of LIST have to be strings and are sent one by one. All output is passed to the filter `inferior-octave-output-digest'." (let* ((proc inferior-octave-process) - (filter (process-filter proc)) string) - (set-process-filter proc 'inferior-octave-output-digest) + (add-function :override (process-filter proc) + #'inferior-octave-output-digest) (setq inferior-octave-output-list nil) (unwind-protect (while (setq string (car list)) @@ -360,7 +360,8 @@ (while inferior-octave-receive-in-progress (accept-process-output proc)) (setq list (cdr list))) - (set-process-filter proc filter)))) + (remove-function (process-filter proc) + #'inferior-octave-output-digest)))) (defun inferior-octave-directory-tracker (string) "Tracks `cd' commands issued to the inferior Octave process. === modified file 'lisp/progmodes/prolog.el' --- lisp/progmodes/prolog.el 2013-03-05 17:13:01 +0000 +++ lisp/progmodes/prolog.el 2013-04-20 16:24:04 +0000 @@ -1770,7 +1770,8 @@ real-file)) (with-current-buffer buffer (goto-char (point-max)) - (set-process-filter process 'prolog-consult-compile-filter) + (add-function :override (process-filter process) + #'prolog-consult-compile-filter) (process-send-string "prolog" command-string) ;; (prolog-build-prolog-command compilep file real-file first-line)) (while (and prolog-process-flag @@ -1781,7 +1782,8 @@ (insert (if compilep "\nCompilation finished.\n" "\nConsulted.\n")) - (set-process-filter process old-filter)))) + (remove-function (process-filter process) + #'prolog-consult-compile-filter)))) (defvar compilation-error-list) === modified file 'lisp/progmodes/xscheme.el' --- lisp/progmodes/xscheme.el 2013-01-01 09:11:05 +0000 +++ lisp/progmodes/xscheme.el 2013-04-20 16:24:04 +0000 @@ -35,7 +35,6 @@ ;;;; Internal Variables (defvar xscheme-previous-mode) -(defvar xscheme-previous-process-state) (defvar xscheme-last-input-end) (defvar xscheme-process-command-line nil @@ -388,8 +387,6 @@ (if (not preserve) (let ((previous-mode major-mode)) (kill-all-local-variables) - (make-local-variable 'xscheme-process-name) - (make-local-variable 'xscheme-previous-process-state) (make-local-variable 'xscheme-runlight-string) (make-local-variable 'xscheme-runlight) (set (make-local-variable 'xscheme-previous-mode) previous-mode) @@ -397,35 +394,29 @@ (set (make-local-variable 'xscheme-buffer-name) (buffer-name buffer)) (set (make-local-variable 'xscheme-last-input-end) (make-marker)) (let ((process (get-buffer-process buffer))) - (if process - (progn - (setq xscheme-process-name (process-name process)) - (setq xscheme-previous-process-state - (cons (process-filter process) - (process-sentinel process))) - (xscheme-process-filter-initialize t) - (xscheme-mode-line-initialize xscheme-buffer-name) - (set-process-sentinel process 'xscheme-process-sentinel) - (set-process-filter process 'xscheme-process-filter)) - (setq xscheme-previous-process-state (cons nil nil))))))) + (when process + (setq-local xscheme-process-name (process-name process)) + ;; FIXME: Use add-function! + (xscheme-process-filter-initialize t) + (xscheme-mode-line-initialize xscheme-buffer-name) + (add-function :override (process-sentinel process) + #'xscheme-process-sentinel) + (add-function :override (process-filter process) + #'xscheme-process-filter)))))) (scheme-interaction-mode-initialize) (scheme-mode-variables) (run-mode-hooks 'scheme-mode-hook 'scheme-interaction-mode-hook)) (defun exit-scheme-interaction-mode () - "Take buffer out of scheme interaction mode" + "Take buffer out of scheme interaction mode." (interactive) (if (not (derived-mode-p 'scheme-interaction-mode)) (error "Buffer not in scheme interaction mode")) - (let ((previous-state xscheme-previous-process-state)) - (funcall xscheme-previous-mode) - (let ((process (get-buffer-process (current-buffer)))) - (if process - (progn - (if (eq (process-filter process) 'xscheme-process-filter) - (set-process-filter process (car previous-state))) - (if (eq (process-sentinel process) 'xscheme-process-sentinel) - (set-process-sentinel process (cdr previous-state)))))))) + (funcall xscheme-previous-mode) + (let ((process (get-buffer-process (current-buffer)))) + (when process + (remove-function (process-sentinel process) #'xscheme-process-sentinel) + (remove-function (process-filter process) #'xscheme-process-filter)))) (defvar scheme-interaction-mode-commands-alist nil) (defvar scheme-interaction-mode-map nil) === modified file 'lisp/vc/vc-cvs.el' --- lisp/vc/vc-cvs.el 2013-02-01 17:19:24 +0000 +++ lisp/vc/vc-cvs.el 2013-04-20 16:24:04 +0000 @@ -562,14 +562,13 @@ (defconst vc-cvs-annotate-first-line-re "^[0-9]") -(defun vc-cvs-annotate-process-filter (process string) +(defun vc-cvs-annotate-process-filter (filter process string) (setq string (concat (process-get process 'output) string)) (if (not (string-match vc-cvs-annotate-first-line-re string)) ;; Still waiting for the first real line. (process-put process 'output string) - (let ((vc-filter (process-get process 'vc-filter))) - (set-process-filter process vc-filter) - (funcall vc-filter process (substring string (match-beginning 0)))))) + (remove-function (process-filter process) #'vc-cvs-annotate-process-filter) + (funcall filter process (substring string (match-beginning 0))))) (defun vc-cvs-annotate-command (file buffer &optional revision) "Execute \"cvs annotate\" on FILE, inserting the contents in BUFFER. @@ -583,9 +582,8 @@ (let ((proc (get-buffer-process buffer))) (if proc ;; If running asynchronously, use a process filter. - (progn - (process-put proc 'vc-filter (process-filter proc)) - (set-process-filter proc 'vc-cvs-annotate-process-filter)) + (add-function :around (process-filter proc) + #'vc-cvs-annotate-process-filter) (with-current-buffer buffer (goto-char (point-min)) (re-search-forward vc-cvs-annotate-first-line-re) === modified file 'lisp/vc/vc-dispatcher.el' --- lisp/vc/vc-dispatcher.el 2013-04-19 04:09:08 +0000 +++ lisp/vc/vc-dispatcher.el 2013-04-20 16:24:04 +0000 @@ -1,4 +1,4 @@ -;;; vc-dispatcher.el -- generic command-dispatcher facility. +;;; vc-dispatcher.el -- generic command-dispatcher facility. -*- lexical-binding: t -*- ;; Copyright (C) 2008-2013 Free Software Foundation, Inc. @@ -182,32 +182,29 @@ (defvar vc-sentinel-movepoint) ;Dynamically scoped. -(defun vc-process-sentinel (p s) - (let ((previous (process-get p 'vc-previous-sentinel)) - (buf (process-buffer p))) +(defun vc--process-sentinel (p code) + (let ((buf (process-buffer p))) ;; Impatient users sometime kill "slow" buffers; check liveness ;; to avoid "error in process sentinel: Selecting deleted buffer". (when (buffer-live-p buf) - (when previous (funcall previous p s)) (with-current-buffer buf (setq mode-line-process (let ((status (process-status p))) ;; Leave mode-line uncluttered, normally. (unless (eq 'exit status) (format " (%s)" status)))) - (let (vc-sentinel-movepoint) + (let (vc-sentinel-movepoint + (m (process-mark p))) ;; Normally, we want async code such as sentinels to not move point. (save-excursion - (goto-char (process-mark p)) - (let ((cmds (process-get p 'vc-sentinel-commands))) - (process-put p 'vc-sentinel-commands nil) - (dolist (cmd cmds) + (goto-char m) ;; Each sentinel may move point and the next one should be run ;; at that new point. We could get the same result by having ;; each sentinel read&set process-mark, but since `cmd' needs ;; to work both for async and sync processes, this would be ;; difficult to achieve. - (vc-exec-after cmd)))) + (vc-exec-after code) + (move-marker m (point))) ;; But sometimes the sentinels really want to move point. (when vc-sentinel-movepoint (let ((win (get-buffer-window (current-buffer) 0))) @@ -226,7 +223,9 @@ (defun vc-exec-after (code) "Eval CODE when the current buffer's process is done. If the current buffer has no process, just evaluate CODE. -Else, add CODE to the process' sentinel." +Else, add CODE to the process' sentinel. +CODE can be either a function of no arguments, or an expression +to evaluate." (let ((proc (get-buffer-process (current-buffer)))) (cond ;; If there's no background process, just execute the code. @@ -237,20 +236,14 @@ ((or (null proc) (eq (process-status proc) 'exit)) ;; Make sure we've read the process's output before going further. (when proc (accept-process-output proc)) - (eval code)) + (if (functionp code) (funcall code) (eval code))) ;; If a process is running, add CODE to the sentinel ((eq (process-status proc) 'run) (vc-set-mode-line-busy-indicator) - (let ((previous (process-sentinel proc))) - (unless (eq previous 'vc-process-sentinel) - (process-put proc 'vc-previous-sentinel previous)) - (set-process-sentinel proc 'vc-process-sentinel)) - (process-put proc 'vc-sentinel-commands - ;; We keep the code fragments in the order given - ;; so that vc-diff-finish's message shows up in - ;; the presence of non-nil vc-command-messages. - (append (process-get proc 'vc-sentinel-commands) - (list code)))) + (letrec ((fun (lambda (p _msg) + (remove-function (process-sentinel p) fun) + (vc--process-sentinel p code)))) + (add-function :after (process-sentinel proc) fun))) (t (error "Unexpected process state")))) nil) @@ -388,6 +381,8 @@ (set-window-start window new-window-start)) buffer)) +(defvar compilation-error-regexp-alist) + (defun vc-compilation-mode (backend) "Setup `compilation-mode' after with the appropriate `compilation-error-regexp-alist'." (let* ((error-regexp-alist @@ -479,7 +474,7 @@ (vc-position-context (mark-marker)))) ;; Make the right thing happen in transient-mark-mode. (mark-active nil)) - (list point-context mark-context nil))) + (list point-context mark-context))) (defun vc-restore-buffer-context (context) "Restore point/mark, and reparse any affected compilation buffers. @@ -518,6 +513,8 @@ (make-variable-buffer-local 'vc-mode-line-hook) (put 'vc-mode-line-hook 'permanent-local t) +(defvar view-old-buffer-read-only) + (defun vc-resynch-window (file &optional keep noquery reset-vc-info) "If FILE is in the current buffer, either revert or unvisit it. The choice between revert (to see expanded keywords) and unvisit ------------------------------------------------------------ revno: 112337 [merge] fixes bug: http://debbugs.gnu.org/14180 author: Erik Charlebois committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2013-04-20 10:32:31 +0300 message: Better full-screen frame support on MS-Windows. src/w32fns.c (w32_fullscreen_rect): New function to compute the window rectangle for the given fullscreen mode. (w32_wnd_proc): When in a fullscreen mode, WM_WINDOWPOSCHANGING no longer tunes the window size. This keeps the window's edges flush with the screen and allows the taskbar to hide itself in fullboth. src/w32term.c (w32fullscreen_hook): 'fullboth' now shows without window decorations and uses the entire screen. src/w32term.h (w32_fullscreen_rect) Add prototype. (struct w32_output): Replace normal_width, normal_height, normal_top, and normal_left members with a single normal_placement struct. (FRAME_NORMAL_WIDTH, FRAME_NORMAL_HEIGHT, FRAME_NORMAL_TOP): Remove macros. (FRAME_NORMAL_PLACEMENT): New macro. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-04-16 02:52:53 +0000 +++ src/ChangeLog 2013-04-20 07:32:31 +0000 @@ -1,3 +1,22 @@ +2013-04-20 Erik Charlebois + + * w32fns.c (w32_fullscreen_rect): New function to compute the + window rectangle for the given fullscreen mode. + (w32_wnd_proc): When in a fullscreen mode, WM_WINDOWPOSCHANGING no + longer tunes the window size. This keeps the window's edges flush + with the screen and allows the taskbar to hide itself in fullboth. + + * w32term.c (w32fullscreen_hook): 'fullboth' now shows without + window decorations and uses the entire screen. + + * w32term.h (w32_fullscreen_rect) Add prototype. + (struct w32_output): Replace normal_width, normal_height, + normal_top, and normal_left members with a single normal_placement + struct. + (FRAME_NORMAL_WIDTH, FRAME_NORMAL_HEIGHT, FRAME_NORMAL_TOP): + Remove macros. + (FRAME_NORMAL_PLACEMENT): New macro. + 2013-04-16 Juanma Barranquero * minibuf.c (Ftest_completion): Silence compiler warning. === modified file 'src/w32fns.c' --- src/w32fns.c 2013-04-15 07:27:56 +0000 +++ src/w32fns.c 2013-04-20 07:32:31 +0000 @@ -157,6 +157,8 @@ typedef HMONITOR (WINAPI * MonitorFromPoint_Proc) (IN POINT pt, IN DWORD flags); typedef BOOL (WINAPI * GetMonitorInfo_Proc) (IN HMONITOR monitor, OUT struct MONITOR_INFO* info); +typedef HMONITOR (WINAPI * MonitorFromWindow_Proc) + (IN HWND hwnd, IN DWORD dwFlags); TrackMouseEvent_Proc track_mouse_event_fn = NULL; ImmGetCompositionString_Proc get_composition_string_fn = NULL; @@ -165,6 +167,7 @@ ImmSetCompositionWindow_Proc set_ime_composition_window_fn = NULL; MonitorFromPoint_Proc monitor_from_point_fn = NULL; GetMonitorInfo_Proc get_monitor_info_fn = NULL; +MonitorFromWindow_Proc monitor_from_window_fn = NULL; #ifdef NTGUI_UNICODE #define unicode_append_menu AppendMenuW @@ -336,6 +339,66 @@ *yptr = rect.top; } +/* Returns the window rectangle appropriate for the given fullscreen mode. + The normal rect parameter was the window's rectangle prior to entering + fullscreen mode. If multiple monitor support is available, the nearest + monitor to the window is chosen. */ + +void +w32_fullscreen_rect (HWND hwnd, int fsmode, RECT normal, RECT *rect) +{ + struct MONITOR_INFO mi = { sizeof(mi) }; + if (monitor_from_window_fn && get_monitor_info_fn) + { + HMONITOR monitor = + monitor_from_window_fn (hwnd, MONITOR_DEFAULT_TO_NEAREST); + get_monitor_info_fn (monitor, &mi); + } + else + { + mi.rcMonitor.left = 0; + mi.rcMonitor.top = 0; + mi.rcMonitor.right = GetSystemMetrics (SM_CXSCREEN); + mi.rcMonitor.bottom = GetSystemMetrics (SM_CYSCREEN); + mi.rcWork.left = 0; + mi.rcWork.top = 0; + mi.rcWork.right = GetSystemMetrics (SM_CXMAXIMIZED); + mi.rcWork.bottom = GetSystemMetrics (SM_CYMAXIMIZED); + } + + switch (fsmode) + { + case FULLSCREEN_BOTH: + rect->left = mi.rcMonitor.left; + rect->top = mi.rcMonitor.top; + rect->right = mi.rcMonitor.right; + rect->bottom = mi.rcMonitor.bottom; + break; + case FULLSCREEN_MAXIMIZED: + rect->left = mi.rcWork.left; + rect->top = mi.rcWork.top; + rect->right = mi.rcWork.right; + rect->bottom = mi.rcWork.bottom; + break; + case FULLSCREEN_WIDTH: + rect->left = mi.rcWork.left; + rect->top = normal.top; + rect->right = mi.rcWork.right; + rect->bottom = normal.bottom; + break; + case FULLSCREEN_HEIGHT: + rect->left = normal.left; + rect->top = mi.rcWork.top; + rect->right = normal.right; + rect->bottom = mi.rcWork.bottom; + break; + case FULLSCREEN_NONE: + default: + *rect = normal; + break; + } +} + DEFUN ("w32-define-rgb-color", Fw32_define_rgb_color, @@ -3693,6 +3756,13 @@ /* Don't restrict the sizing of tip frames. */ if (hwnd == tip_window) return 0; + + /* Don't restrict the sizing of fullscreened frames, allowing them to be + flush with the sides of the screen. */ + f = x_window_to_frame (dpyinfo, hwnd); + if (f && FRAME_PREV_FSMODE (f) != FULLSCREEN_NONE) + return 0; + { WINDOWPLACEMENT wp; LPWINDOWPOS lppos = (WINDOWPOS *) lParam; @@ -7637,6 +7707,8 @@ GetProcAddress (user32_lib, "MonitorFromPoint"); get_monitor_info_fn = (GetMonitorInfo_Proc) GetProcAddress (user32_lib, "GetMonitorInfoA"); + monitor_from_window_fn = (MonitorFromWindow_Proc) + GetProcAddress (user32_lib, "MonitorFromWindow"); { HMODULE imm32_lib = GetModuleHandle ("imm32.dll"); === modified file 'src/w32term.c' --- src/w32term.c 2013-04-01 07:58:04 +0000 +++ src/w32term.c 2013-04-14 00:58:45 +0000 @@ -5663,88 +5663,40 @@ { if (FRAME_VISIBLE_P (f)) { - int width, height, top_pos, left_pos, pixel_height, pixel_width; - int cur_w = FRAME_COLS (f), cur_h = FRAME_LINES (f); - RECT workarea_rect; - - block_input (); - /* Record current "normal" dimensions for restoring later. */ - if (!( FRAME_PREV_FSMODE (f) == FULLSCREEN_BOTH - || FRAME_PREV_FSMODE (f) == FULLSCREEN_MAXIMIZED)) - { - if (FRAME_PREV_FSMODE (f) != FULLSCREEN_HEIGHT) - { - FRAME_NORMAL_HEIGHT (f) = cur_h; - FRAME_NORMAL_TOP (f) = f->top_pos; - } - if (FRAME_PREV_FSMODE (f) != FULLSCREEN_WIDTH) - { - FRAME_NORMAL_WIDTH (f) = cur_w; - FRAME_NORMAL_LEFT (f) = f->left_pos; - } - } - eassert (FRAME_NORMAL_HEIGHT (f) > 0); - eassert (FRAME_NORMAL_WIDTH (f) > 0); - x_real_positions (f, &f->left_pos, &f->top_pos); - x_fullscreen_adjust (f, &width, &height, &top_pos, &left_pos); - - SystemParametersInfo (SPI_GETWORKAREA, 0, &workarea_rect, 0); - pixel_height = workarea_rect.bottom - workarea_rect.top; - pixel_width = workarea_rect.right - workarea_rect.left; - /* Need to send SC_RESTORE to the window, in case we are - resizing from FULLSCREEN_MAXIMIZED. Otherwise, the mouse - resize hints will not be shown by the window manager when the - mouse pointer hovers over the window edges, because the WM - will still think the window is maximized. */ - if (f->want_fullscreen != FULLSCREEN_BOTH) - SendMessage (FRAME_W32_WINDOW (f), WM_SYSCOMMAND, SC_RESTORE, 0); - + HWND hwnd = FRAME_W32_WINDOW(f); + DWORD dwStyle = GetWindowLong (hwnd, GWL_STYLE); + RECT rect; + + block_input(); + f->want_fullscreen &= ~FULLSCREEN_WAIT; + + if (FRAME_PREV_FSMODE (f) == FULLSCREEN_NONE) + GetWindowPlacement (hwnd, &FRAME_NORMAL_PLACEMENT (f)); + + if (FRAME_PREV_FSMODE (f) == FULLSCREEN_BOTH) + { + SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_OVERLAPPEDWINDOW); + SetWindowPos (hwnd, NULL, 0, 0, 0, 0, + SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | + SWP_NOOWNERZORDER | SWP_FRAMECHANGED); + } + + w32_fullscreen_rect (hwnd, f->want_fullscreen, + FRAME_NORMAL_PLACEMENT (f).rcNormalPosition, &rect); FRAME_PREV_FSMODE (f) = f->want_fullscreen; - switch (f->want_fullscreen) - { - case FULLSCREEN_BOTH: - PostMessage (FRAME_W32_WINDOW (f), WM_SYSCOMMAND, SC_MAXIMIZE, 0); - break; - case FULLSCREEN_MAXIMIZED: - height = - FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, pixel_height) - - XINT (Ftool_bar_lines_needed (selected_frame)) - + (NILP (Vmenu_bar_mode) ? 1 : 0); - width = - FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, pixel_width) - - FRAME_SCROLL_BAR_COLS (f); - left_pos = workarea_rect.left; - top_pos = workarea_rect.top; - break; - case FULLSCREEN_WIDTH: - width = - FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, pixel_width) - - FRAME_SCROLL_BAR_COLS (f); - height = FRAME_NORMAL_HEIGHT (f); - left_pos = workarea_rect.left; - break; - case FULLSCREEN_HEIGHT: - height = - FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, pixel_height) - - XINT (Ftool_bar_lines_needed (selected_frame)) - + (NILP (Vmenu_bar_mode) ? 1 : 0); - width = FRAME_NORMAL_WIDTH (f); - top_pos = workarea_rect.top; - break; - case FULLSCREEN_NONE: - height = FRAME_NORMAL_HEIGHT (f); - width = FRAME_NORMAL_WIDTH (f); - left_pos = FRAME_NORMAL_LEFT (f); - top_pos = FRAME_NORMAL_TOP (f); - break; - } + if (f->want_fullscreen == FULLSCREEN_BOTH) + { + SetWindowLong (hwnd, GWL_STYLE, dwStyle & ~WS_OVERLAPPEDWINDOW); + SetWindowPos (hwnd, HWND_TOP, rect.left, rect.top, + rect.right - rect.left, rect.bottom - rect.top, + SWP_NOOWNERZORDER | SWP_FRAMECHANGED); + } + else + { + SetWindowPos (hwnd, HWND_TOP, rect.left, rect.top, + rect.right - rect.left, rect.bottom - rect.top, 0); + } - if (cur_w != width || cur_h != height) - { - x_set_offset (f, left_pos, top_pos, 1); - x_set_window_size (f, 1, width, height); - do_pending_window_change (0); - } f->want_fullscreen = FULLSCREEN_NONE; unblock_input (); } === modified file 'src/w32term.h' --- src/w32term.h 2013-04-07 04:41:19 +0000 +++ src/w32term.h 2013-04-14 00:58:45 +0000 @@ -71,6 +71,8 @@ }; extern void w32_regenerate_palette (struct frame *f); +extern void w32_fullscreen_rect (HWND hwnd, int fsmode, RECT normal, + RECT *rect); /* For each display (currently only one on w32), we have a structure that @@ -362,7 +364,7 @@ /* Frame geometry and full-screen mode before it was resized by specifying the 'fullscreen' frame parameter. Used to restore the geometry when 'fullscreen' is reset to nil. */ - int normal_width, normal_height, normal_top, normal_left; + WINDOWPLACEMENT normal_placement; int prev_fsmode; }; @@ -396,11 +398,8 @@ #define FRAME_SMALLEST_FONT_HEIGHT(F) \ FRAME_W32_DISPLAY_INFO(F)->smallest_font_height -#define FRAME_NORMAL_WIDTH(F) ((F)->output_data.w32->normal_width) -#define FRAME_NORMAL_HEIGHT(F) ((F)->output_data.w32->normal_height) -#define FRAME_NORMAL_TOP(F) ((F)->output_data.w32->normal_top) -#define FRAME_NORMAL_LEFT(F) ((F)->output_data.w32->normal_left) -#define FRAME_PREV_FSMODE(F) ((F)->output_data.w32->prev_fsmode) +#define FRAME_NORMAL_PLACEMENT(F) ((F)->output_data.w32->normal_placement) +#define FRAME_PREV_FSMODE(F) ((F)->output_data.w32->prev_fsmode) /* W32-specific scroll bar stuff. */ ------------------------------------------------------------ revno: 112336 committer: Masatake YAMATO branch nick: trunk timestamp: Sat 2013-04-20 04:56:16 +0900 message: Added bug number (Bug#14112) to my last ChangeLog entries. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-04-19 18:50:28 +0000 +++ lisp/ChangeLog 2013-04-19 19:56:16 +0000 @@ -1,7 +1,7 @@ 2013-04-19 Masatake YAMATO * progmodes/sh-script.el (sh-imenu-generic-expression): Handle - function names with a single character. + function names with a single character. (Bug#11182) 2013-04-19 Dima Kogan (tiny change) === modified file 'test/ChangeLog' --- test/ChangeLog 2013-04-19 19:02:55 +0000 +++ test/ChangeLog 2013-04-19 19:56:16 +0000 @@ -1,6 +1,6 @@ 2013-04-01 Masatake YAMATO - * automated/imenu-tests.el: New file. + * automated/imenu-tests.el: New file. (Bug#14112) 2013-04-19 Fabián Ezequiel Gallina ------------------------------------------------------------ Use --include-merged or -n0 to see merged revisions.