Now on revision 109828. ------------------------------------------------------------ revno: 109828 author: Dave Abrahams committer: Katsumi Yamaoka branch nick: trunk timestamp: Fri 2012-08-31 04:39:30 +0000 message: [Gnus] Miscellaneous fixes by Dave Abrahams diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-08-31 00:46:01 +0000 +++ lisp/gnus/ChangeLog 2012-08-31 04:39:30 +0000 @@ -1,3 +1,19 @@ +2012-08-31 Dave Abrahams + + * auth-source.el (auth-sources): Fix macos keychain access. + + * gnus-int.el (gnus-request-head): When gnus-override-method is set, + allow the backend `request-head' function to determine the group + name on its own. + (gnus-request-expire-articles): Filter out negative article numbers + during expiry (Bug#11980). + + * gnus-range.el (gnus-set-difference): Change gnus-set-difference from + O(N^2) to O(N). This makes warping into huge groups tolerable. + + * gnus-registry.el (gnus-try-warping-via-registry): Don't act as though + you've found the article when you haven't. + 2012-08-31 Stefan Monnier * gnus-notifications.el (gnus-notifications-action): Avoid CL-ism. === modified file 'lisp/gnus/auth-source.el' --- lisp/gnus/auth-source.el 2012-08-10 14:38:37 +0000 +++ lisp/gnus/auth-source.el 2012-08-31 04:39:30 +0000 @@ -256,10 +256,10 @@ (const :tag "Temp Secrets API Collection" "secrets:session") (const :tag "Default internet Mac OS Keychain" - 'macos-keychain-internet) + macos-keychain-internet) (const :tag "Default generic Mac OS Keychain" - 'macos-keychain-generic) + macos-keychain-generic) (list :tag "Source definition" (const :format "" :value :source) === modified file 'lisp/gnus/gnus-int.el' --- lisp/gnus/gnus-int.el 2012-07-24 22:17:17 +0000 +++ lisp/gnus/gnus-int.el 2012-08-31 04:39:30 +0000 @@ -599,7 +599,8 @@ clean-up t)) ;; Use `head' function. ((fboundp head) - (setq res (funcall head article (gnus-group-real-name group) + (setq res (funcall head article + (and (not gnus-override-method) (gnus-group-real-name group)) (nth 1 gnus-command-method)))) ;; Use `article' function. (t @@ -706,6 +707,10 @@ (defun gnus-request-expire-articles (articles group &optional force) (let* ((gnus-command-method (gnus-find-method-for-group group)) + ;; Filter out any negative article numbers; they can't be + ;; expired here. + (articles + (delq nil (mapcar (lambda (n) (and (>= n 0) n)) articles))) (gnus-inhibit-demon t) (not-deleted (funcall === modified file 'lisp/gnus/gnus-range.el' --- lisp/gnus/gnus-range.el 2012-07-24 22:17:17 +0000 +++ lisp/gnus/gnus-range.el 2012-08-31 04:39:30 +0000 @@ -52,11 +52,13 @@ (defun gnus-set-difference (list1 list2) "Return a list of elements of LIST1 that do not appear in LIST2." - (let ((list1 (copy-sequence list1))) - (while list2 - (setq list1 (delq (car list2) list1)) - (setq list2 (cdr list2))) - list1)) + (let ((hash2 (make-hash-table :test 'eq)) + (result nil)) + (dolist (elt list2) (puthash elt t hash2)) + (dolist (elt list1) + (unless (gethash elt hash2) + (setq result (cons elt result)))) + (nreverse result))) (defun gnus-range-nconcat (&rest ranges) "Return a range comprising all the RANGES, which are pre-sorted. === modified file 'lisp/gnus/gnus-registry.el' --- lisp/gnus/gnus-registry.el 2012-06-26 22:52:31 +0000 +++ lisp/gnus/gnus-registry.el 2012-08-31 04:39:30 +0000 @@ -1169,9 +1169,10 @@ ;; Try to activate the group. If that fails, just move ;; along. We may have more groups to work with - (ignore-errors - (gnus-select-group-with-message-id group message-id)) - (throw 'found t))))))) + (when + (ignore-errors + (gnus-select-group-with-message-id group message-id) t) + (throw 'found t)))))))) ;; TODO: a few things ------------------------------------------------------------ revno: 109827 committer: Dmitry Antipov branch nick: trunk timestamp: Fri 2012-08-31 08:40:52 +0400 message: Change struct frame bitfields from unsigned char to unsigned. * frame.h (struct frame): Change type of 'display_preempted', 'visible', 'iconified', 'has_minibuffer', 'wants_modeline', 'auto_raise', 'auto_lower', 'no_split', 'explicit_name', 'window_sizes_changed', 'mouse_moved' and 'pointer_invisible' bitfields from unsigned char to unsigned. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-08-31 04:14:59 +0000 +++ src/ChangeLog 2012-08-31 04:40:52 +0000 @@ -1,5 +1,14 @@ 2012-08-31 Dmitry Antipov + Change struct frame bitfields from unsigned char to unsigned. + * frame.h (struct frame): Change type of 'display_preempted', + 'visible', 'iconified', 'has_minibuffer', 'wants_modeline', + 'auto_raise', 'auto_lower', 'no_split', 'explicit_name', + 'window_sizes_changed', 'mouse_moved' and 'pointer_invisible' + bitfields from unsigned char to unsigned. + +2012-08-31 Dmitry Antipov + Remove unused member of struct x_output and struct w32_output. * xterm.h (struct x_output): Remove unused field 'needs_exposure'. * w32term.h (struct w32_output): Likewise. === modified file 'src/frame.h' --- src/frame.h 2012-08-28 00:33:56 +0000 +++ src/frame.h 2012-08-31 04:40:52 +0000 @@ -361,7 +361,7 @@ #endif /* Nonzero if last attempt at redisplay on this frame was preempted. */ - unsigned char display_preempted : 1; + unsigned display_preempted : 1; /* visible is nonzero if the frame is currently displayed; we check it to see if we should bother updating the frame's contents. @@ -391,8 +391,8 @@ These two are mutually exclusive. They might both be zero, if the frame has been made invisible without an icon. */ - unsigned char visible : 2; - unsigned char iconified : 1; + unsigned visible : 2; + unsigned iconified : 1; /* Let's not use bitfields for volatile variables. */ @@ -406,40 +406,40 @@ /* True if frame actually has a minibuffer window on it. 0 if using a minibuffer window that isn't on this frame. */ - unsigned char has_minibuffer : 1; + unsigned has_minibuffer : 1; /* 0 means, if this frame has just one window, show no modeline for that window. */ - unsigned char wants_modeline : 1; + unsigned wants_modeline : 1; /* Non-zero if the hardware device this frame is displaying on can support scroll bars. */ char can_have_scroll_bars; /* Non-0 means raise this frame to the top of the heap when selected. */ - unsigned char auto_raise : 1; + unsigned auto_raise : 1; /* Non-0 means lower this frame to the bottom of the stack when left. */ - unsigned char auto_lower : 1; + unsigned auto_lower : 1; /* True if frame's root window can't be split. */ - unsigned char no_split : 1; + unsigned no_split : 1; /* If this is set, then Emacs won't change the frame name to indicate the current buffer, etcetera. If the user explicitly sets the frame name, this gets set. If the user sets the name to Qnil, this is cleared. */ - unsigned char explicit_name : 1; + unsigned explicit_name : 1; /* Nonzero if size of some window on this frame has changed. */ - unsigned char window_sizes_changed : 1; + unsigned window_sizes_changed : 1; /* Nonzero if the mouse has moved on this display device since the last time we checked. */ - unsigned char mouse_moved :1; + unsigned mouse_moved :1; /* Nonzero means that the pointer is invisible. */ - unsigned char pointer_invisible :1; + unsigned pointer_invisible :1; /* If can_have_scroll_bars is non-zero, this is non-zero if we should actually display them on this frame. */ ------------------------------------------------------------ revno: 109826 committer: Dmitry Antipov branch nick: trunk timestamp: Fri 2012-08-31 08:14:59 +0400 message: Remove unused member of struct x_output and struct w32_output. * xterm.h (struct x_output): Remove unused field 'needs_exposure'. * w32term.h (struct w32_output): Likewise. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-08-30 16:07:44 +0000 +++ src/ChangeLog 2012-08-31 04:14:59 +0000 @@ -1,3 +1,9 @@ +2012-08-31 Dmitry Antipov + + Remove unused member of struct x_output and struct w32_output. + * xterm.h (struct x_output): Remove unused field 'needs_exposure'. + * w32term.h (struct w32_output): Likewise. + 2012-08-30 Jan Djärv * gtkutil.c (x_wm_set_size_hint): Use 1 col for base_width so it === modified file 'src/w32term.h' --- src/w32term.h 2012-08-05 15:47:28 +0000 +++ src/w32term.h 2012-08-31 04:14:59 +0000 @@ -302,9 +302,6 @@ /* Non-hourglass cursor that is currently active. */ Cursor current_cursor; - /* Flag to set when the window needs to be completely repainted. */ - int needs_exposure; - DWORD dwStyle; /* This is the Emacs structure for the display this frame is on. */ === modified file 'src/xterm.h' --- src/xterm.h 2012-07-07 19:23:41 +0000 +++ src/xterm.h 2012-08-31 04:14:59 +0000 @@ -544,9 +544,6 @@ /* Non-zero means hourglass cursor is currently displayed. */ unsigned hourglass_p : 1; - /* Flag to set when the X window needs to be completely repainted. */ - int needs_exposure; - /* These are the current window manager hints. It seems that XSetWMHints, when presented with an unset bit in the `flags' member of the hints structure, does not leave the corresponding ------------------------------------------------------------ revno: 109825 committer: Stefan Monnier branch nick: trunk timestamp: Thu 2012-08-30 20:46:01 -0400 message: * lisp/gnus/gnus-notifications.el (gnus-notifications-action): Avoid CL-ism. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-08-30 22:14:27 +0000 +++ lisp/gnus/ChangeLog 2012-08-31 00:46:01 +0000 @@ -1,3 +1,7 @@ +2012-08-31 Stefan Monnier + + * gnus-notifications.el (gnus-notifications-action): Avoid CL-ism. + 2012-08-30 Julien Danjou * gnus-notifications.el (gnus-notifications-notify): Use timeout from === modified file 'lisp/gnus/gnus-notifications.el' --- lisp/gnus/gnus-notifications.el 2012-08-30 22:14:27 +0000 +++ lisp/gnus/gnus-notifications.el 2012-08-31 00:46:01 +0000 @@ -74,7 +74,7 @@ (let ((group-article (assoc id gnus-notifications-id-to-msg))) (when group-article (let ((group (cadr group-article)) - (article (caddr group-article))) + (article (nth 2 group-article))) (gnus-fetch-group group (list article))))))) (defun gnus-notifications-notify (from subject photo-file) ------------------------------------------------------------ revno: 109824 author: Julien Danjou committer: Katsumi Yamaoka branch nick: trunk timestamp: Thu 2012-08-30 22:14:27 +0000 message: gnus-notifications.el: Add defcustom for timeout and actions support diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-08-30 12:11:57 +0000 +++ lisp/gnus/ChangeLog 2012-08-30 22:14:27 +0000 @@ -1,3 +1,15 @@ +2012-08-30 Julien Danjou + + * gnus-notifications.el (gnus-notifications-notify): Use timeout from + `gnus-notifications-timeout'. + (gnus-notifications-timeout): Add. + (gnus-notifications-action): New function. + (gnus-notifications-notify): Add :action using + `gnus-notifications-action'. + (gnus-notifications-id-to-msg): New variable. + (gnus-notifications): Use `gnus-notifications-id-to-msg' to map + notifications id to messages. + 2012-08-30 Kenichi Handa * qp.el (quoted-printable-decode-region): Decode multiple bytes at === modified file 'lisp/gnus/gnus-notifications.el' --- lisp/gnus/gnus-notifications.el 2012-08-29 22:04:05 +0000 +++ lisp/gnus/gnus-notifications.el 2012-08-30 22:14:27 +0000 @@ -58,20 +58,42 @@ :type 'integer :group 'gnus-notifications) +(defcustom gnus-notifications-timeout nil + "Timeout used for notifications sent via `notifications-notify'." + :type 'integer + :group 'gnus-notifications) + (defvar gnus-notifications-sent nil "Notifications already sent.") +(defvar gnus-notifications-id-to-msg nil + "Map notifications ids to messages.") + +(defun gnus-notifications-action (id key) + (when (string= key "read") + (let ((group-article (assoc id gnus-notifications-id-to-msg))) + (when group-article + (let ((group (cadr group-article)) + (article (caddr group-article))) + (gnus-fetch-group group (list article))))))) + (defun gnus-notifications-notify (from subject photo-file) - "Send a notification about a new mail." + "Send a notification about a new mail. +Return a notification id if any, or t on success." (if (fboundp 'notifications-notify) (notifications-notify :title from :body subject + :actions '("read" "Read") + :on-action 'gnus-notifications-action :app-icon (image-search-load-path "gnus/gnus.png") :app-name "Gnus" :category "email.arrived" + :timeout gnus-notifications-timeout :image-path photo-file) - (message "New message from %s: %s" from subject))) + (message "New message from %s: %s" from subject) + ;; Don't return an id + t)) (defun gnus-notifications-get-photo (mail-address) "Get photo for mail address." @@ -136,21 +158,23 @@ (article-decode-encoded-words) ; to decode mail addresses, subjects, etc (let* ((address-components (mail-extract-address-components (or (mail-fetch-field "From") ""))) - (address (cadr address-components)) - (photo-file (gnus-notifications-get-photo-file - address))) - (when (or - ;; Ignore mails from ourselves - (gnus-string-match-p gnus-ignored-from-addresses - address) - (gnus-notifications-notify - (or (car address-components) address) - (mail-fetch-field "Subject") - photo-file)) - ;; Register that we did notify this message - (setcdr group-notifications (cons article (cdr group-notifications)))) - (when photo-file - (delete-file photo-file))))))))))) + (address (cadr address-components))) + ;; Ignore mails from ourselves + (unless (gnus-string-match-p gnus-ignored-from-addresses + address) + (let* ((photo-file (gnus-notifications-get-photo-file address)) + (notification-id (gnus-notifications-notify + (or (car address-components) address) + (mail-fetch-field "Subject") + photo-file))) + (when notification-id + ;; Register that we did notify this message + (setcdr group-notifications (cons article (cdr group-notifications))) + (unless (eq notification-id t) + ;; Register the notification id for later actions + (add-to-list 'gnus-notifications-id-to-msg (list notification-id group article)))) + (when photo-file + (delete-file photo-file))))))))))))) (provide 'gnus-notifications) ------------------------------------------------------------ revno: 109823 committer: Richard Stallman branch nick: trunk timestamp: Thu 2012-08-30 13:09:51 -0400 message: Delete z binding in special-mode-map. diff: === modified file 'etc/NEWS' --- etc/NEWS 2012-08-29 18:15:12 +0000 +++ etc/NEWS 2012-08-30 17:09:51 +0000 @@ -165,6 +165,9 @@ * Editing Changes in Emacs 24.3 +** The `z' key no longer has a binding in most special modes. +It used to kill the current buffer. + ** New option `yank-handled-properties' allows processing of text properties on yanked text, in more ways that are more general than just removing them, as done by `yank-excluded-properties'. ------------------------------------------------------------ revno: 109822 committer: Richard Stallman branch nick: trunk timestamp: Thu 2012-08-30 13:09:11 -0400 message: Delete `z' in special-mode-map. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-08-30 08:22:24 +0000 +++ lisp/ChangeLog 2012-08-30 17:09:11 +0000 @@ -1,3 +1,7 @@ +2012-08-30 Richard Stallman + + * simple.el (special-mode-map): Delete binding for `z'. + 2012-08-30 Andreas Schwab * progmodes/compile.el (compilation-always-kill): Doc fix. === modified file 'lisp/simple.el' --- lisp/simple.el 2012-08-29 17:36:49 +0000 +++ lisp/simple.el 2012-08-30 17:09:11 +0000 @@ -365,7 +365,6 @@ (define-key map ">" 'end-of-buffer) (define-key map "<" 'beginning-of-buffer) (define-key map "g" 'revert-buffer) - (define-key map "z" 'kill-this-buffer) map)) (put 'special-mode 'mode-class 'special) ------------------------------------------------------------ revno: 109821 fixes bug: http://debbugs.gnu.org/12234 committer: Jan D. branch nick: trunk timestamp: Thu 2012-08-30 18:07:44 +0200 message: * gtkutil.c (x_wm_set_size_hint): Use 1 col for base_width so it does not become zero. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-08-30 15:07:00 +0000 +++ src/ChangeLog 2012-08-30 16:07:44 +0000 @@ -1,3 +1,8 @@ +2012-08-30 Jan Djärv + + * gtkutil.c (x_wm_set_size_hint): Use 1 col for base_width so it + does not become zero (Bug#12234). + 2012-08-30 Paul Eggert * dispnew.c (update_frame_1): Pacify gcc -Wstrict-overflow === modified file 'src/gtkutil.c' --- src/gtkutil.c 2012-08-16 21:58:44 +0000 +++ src/gtkutil.c 2012-08-30 16:07:44 +0000 @@ -1348,13 +1348,14 @@ size_hints.height_inc = FRAME_LINE_HEIGHT (f); hint_flags |= GDK_HINT_BASE_SIZE; - base_width = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, 0) + FRAME_TOOLBAR_WIDTH (f); - /* Use one row here so base_height does not become zero. + /* Use one row/col here so base_height/width does not become zero. Gtk+ and/or Unity on Ubuntu 12.04 can't handle it. */ + base_width = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, 1) + FRAME_TOOLBAR_WIDTH (f); base_height = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, 1) + FRAME_MENUBAR_HEIGHT (f) + FRAME_TOOLBAR_HEIGHT (f); check_frame_size (f, &min_rows, &min_cols); + if (min_cols > 0) --min_cols; /* We used one col in base_width = ... 1); */ if (min_rows > 0) --min_rows; /* We used one row in base_height = ... 1); */ size_hints.base_width = base_width; ------------------------------------------------------------ revno: 109820 committer: Paul Eggert branch nick: trunk timestamp: Thu 2012-08-30 08:07:00 -0700 message: * dispnew.c (update_frame_1): Pacify gcc -Wstrict-overflow for GCC 4.7.1 x86-64. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-08-30 00:47:33 +0000 +++ src/ChangeLog 2012-08-30 15:07:00 +0000 @@ -1,3 +1,8 @@ +2012-08-30 Paul Eggert + + * dispnew.c (update_frame_1): Pacify gcc -Wstrict-overflow + for GCC 4.7.1 x86-64. + 2012-08-30 Glenn Morris * lread.c (init_lread): For out-of-tree builds, only add the === modified file 'src/dispnew.c' --- src/dispnew.c 2012-08-28 06:20:08 +0000 +++ src/dispnew.c 2012-08-30 15:07:00 +0000 @@ -4690,6 +4690,7 @@ } } + lint_assume (0 <= FRAME_LINES (f)); pause_p = 0 < i && i < FRAME_LINES (f) - 1; /* Now just clean up termcap drivers and set cursor, etc. */ ------------------------------------------------------------ revno: 109819 [merge] committer: Kenichi Handa branch nick: trunk timestamp: Thu 2012-08-30 21:16:38 +0900 message: qp.el (quoted-printable-decode-region): Decode multiple bytes at once. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-08-29 22:04:05 +0000 +++ lisp/gnus/ChangeLog 2012-08-30 12:11:57 +0000 @@ -1,3 +1,8 @@ +2012-08-30 Kenichi Handa + + * qp.el (quoted-printable-decode-region): Decode multiple bytes at + once. + 2012-08-29 Julien Danjou * gnus-notifications.el: New file. === modified file 'lisp/gnus/qp.el' --- lisp/gnus/qp.el 2012-01-19 07:21:25 +0000 +++ lisp/gnus/qp.el 2012-08-30 12:11:57 +0000 @@ -53,7 +53,10 @@ ;; or both of which are lowercase letters in "abcdef", is ;; formally illegal. A robust implementation might choose to ;; recognize them as the corresponding uppercase letters.'' - (let ((case-fold-search t)) + (let ((case-fold-search t) + (decode-hex #'(lambda (n1 n2) + (+ (* (if (<= n1 ?9) (- n1 ?0) (+ (- n1 ?A) 10)) 16) + (if (<= n2 ?9) (- n2 ?0) (+ (- n2 ?A) 10)))))) (narrow-to-region from to) ;; Do this in case we're called from Gnus, say, in a buffer ;; which already contains non-ASCII characters which would @@ -65,12 +68,17 @@ (not (eobp))) (cond ((eq (char-after (1+ (point))) ?\n) (delete-char 2)) - ((looking-at "=[0-9A-F][0-9A-F]") - (let ((byte (string-to-number (buffer-substring (1+ (point)) - (+ 3 (point))) - 16))) - (mm-insert-byte byte 1) - (delete-char 3))) + ((looking-at "\\(=[0-9A-F][0-9A-F]\\)+") + ;; Decode this sequence at once; i.e. by a single + ;; deletion and insertion. + (let* ((n (/ (- (match-end 0) (point)) 3)) + (str (make-string n 0))) + (dotimes (i n) + (aset str i (funcall decode-hex (char-after (1+ (point))) + (char-after (+ 2 (point))))) + (forward-char 3)) + (delete-region (match-beginning 0) (match-end 0)) + (insert str))) (t (message "Malformed quoted-printable text") (forward-char))))) ------------------------------------------------------------ revno: 109818 committer: Andreas Schwab branch nick: emacs timestamp: Thu 2012-08-30 10:22:24 +0200 message: * progmodes/compile.el (compilation-always-kill): Doc fix. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-08-30 03:45:51 +0000 +++ lisp/ChangeLog 2012-08-30 08:22:24 +0000 @@ -1,3 +1,7 @@ +2012-08-30 Andreas Schwab + + * progmodes/compile.el (compilation-always-kill): Doc fix. + 2012-08-30 Chong Yidong * window.el (display-buffer-reuse-frames): Make the obsolescence === modified file 'lisp/progmodes/compile.el' --- lisp/progmodes/compile.el 2012-08-29 18:15:12 +0000 +++ lisp/progmodes/compile.el 2012-08-30 08:22:24 +0000 @@ -1504,8 +1504,8 @@ (make-obsolete 'compile-internal 'compilation-start "22.1") (defcustom compilation-always-kill nil - "If nil, ask to kill compilation. If 't, always kill an -incomplete compilation before starting a new one." + "If t, always kill a running compilation process before starting a new one. +If nil, ask to kill it." :type 'boolean :version "24.3" :group 'compilation) ------------------------------------------------------------ revno: 109817 committer: Chong Yidong branch nick: trunk timestamp: Thu 2012-08-30 11:45:51 +0800 message: Improve obsolescence message of display-buffer-reuse-frames. * lisp/window.el (display-buffer-reuse-frames): Make the obsolescence message more informative. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-08-30 01:44:11 +0000 +++ lisp/ChangeLog 2012-08-30 03:45:51 +0000 @@ -1,3 +1,8 @@ +2012-08-30 Chong Yidong + + * window.el (display-buffer-reuse-frames): Make the obsolescence + message more informative. + 2012-08-30 Glenn Morris * paren.el (show-paren-delay): === modified file 'lisp/window.el' --- lisp/window.el 2012-08-26 13:42:18 +0000 +++ lisp/window.el 2012-08-30 03:45:51 +0000 @@ -4710,7 +4710,11 @@ :type 'boolean :version "21.1" :group 'windows) -(make-obsolete-variable 'display-buffer-reuse-frames 'display-buffer-alist "24.3") + +(make-obsolete-variable + 'display-buffer-reuse-frames + "use a `reusable-frames' alist entry in `display-buffer-alist'." + "24.3") (defcustom pop-up-windows t "Non-nil means `display-buffer' should make a new window." ------------------------------------------------------------ Use --include-merged or -n0 to see merged revisions.