Now on revision 105868. Conflicting tags: mh-e-doc-8.3 mh-e-8.3 ------------------------------------------------------------ revno: 105868 author: Kan-Ru Chen committer: Katsumi Yamaoka branch nick: trunk timestamp: Wed 2011-09-21 12:23:49 +0000 message: ecomplete.el (ecomplete-display-matches): Intercept key sequence from terminal as well. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2011-09-21 02:13:03 +0000 +++ lisp/gnus/ChangeLog 2011-09-21 12:23:49 +0000 @@ -1,3 +1,8 @@ +2011-09-13 Kan-Ru Chen + + * ecomplete.el (ecomplete-display-matches): Intercept key sequence from + terminal as well. + 2011-09-21 Katsumi Yamaoka * mm-view.el (mm-display-inline-fontify): Don't run doc-view-mode === modified file 'lisp/gnus/ecomplete.el' --- lisp/gnus/ecomplete.el 2011-01-26 08:36:39 +0000 +++ lisp/gnus/ecomplete.el 2011-09-21 12:23:49 +0000 @@ -123,14 +123,15 @@ (message "%s" matches) nil) (setq highlight (ecomplete-highlight-match-line matches line)) - (while (not (memq (setq command (read-event highlight)) '(? return))) + (while (not (member (setq command (read-key-sequence-vector highlight)) + '([? ] [return] [?\r] [?\n] [?\C-g]))) (cond - ((eq command ?\M-n) + ((member command '([27 ?n] [?\M-n])) (setq line (min (1+ line) max-lines))) - ((eq command ?\M-p) + ((member command '([27 ?p] [?\M-p])) (setq line (max (1- line) 0)))) (setq highlight (ecomplete-highlight-match-line matches line))) - (when (eq command 'return) + (when (member command '([return] [?\r] [?\n])) (nth line (split-string matches "\n"))))))) (defun ecomplete-highlight-match-line (matches line) ------------------------------------------------------------ revno: 105867 committer: Michael Albinus branch nick: trunk timestamp: Wed 2011-09-21 12:42:55 +0200 message: * net/tramp.el (tramp-handle-shell-command): Set process sentinel and process filter, as done also in `shell-command'. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-09-21 08:20:21 +0000 +++ lisp/ChangeLog 2011-09-21 10:42:55 +0000 @@ -1,3 +1,8 @@ +2011-09-21 Michael Albinus + + * net/tramp.el (tramp-handle-shell-command): Set process sentinel + and process filter, as done also in `shell-command'. + 2011-09-21 Martin Rudalics * window.el (set-window-buffer-start-and-point): Call === modified file 'lisp/net/tramp.el' --- lisp/net/tramp.el 2011-09-18 11:26:15 +0000 +++ lisp/net/tramp.el 2011-09-21 10:42:55 +0000 @@ -3024,11 +3024,13 @@ (if (and (not current-buffer-p) (integerp asynchronous)) (prog1 ;; Run the process. - (apply 'start-file-process "*Async Shell*" buffer args) + (setq p (apply 'start-file-process "*Async Shell*" buffer args)) ;; Display output. (pop-to-buffer output-buffer) (setq mode-line-process '(":%s")) - (shell-mode)) + (shell-mode) + (set-process-sentinel p 'shell-command-sentinel) + (set-process-filter p 'comint-output-filter)) (prog1 ;; Run the process. ------------------------------------------------------------ revno: 105866 committer: martin rudalics branch nick: trunk timestamp: Wed 2011-09-21 10:20:21 +0200 message: Rewrite code quitting windows and restoring the previous buffer. * window.el (set-window-buffer-start-and-point): Call set-window-start with NOFORCE argument t. Suggested by Thierry Volpiatto . (quit-window): Reword doc-string. Handle new format of quit-restore parameter. Don't delete window if it has a previous buffer we can show instead of the present one. (display-buffer-record-window): Rewrite using a new format for the quit-restore window parameter (special-display-popup-frame, display-buffer-same-window) (display-buffer-reuse-window, display-buffer-pop-up-frame) (display-buffer-pop-up-window, display-buffer-use-some-window): Adapt symbol passed to display-buffer-record-window. * help.el (help-window-setup): Handle new format of quit-restore parameter. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-09-21 01:31:53 +0000 +++ lisp/ChangeLog 2011-09-21 08:20:21 +0000 @@ -1,3 +1,20 @@ +2011-09-21 Martin Rudalics + + * window.el (set-window-buffer-start-and-point): Call + set-window-start with NOFORCE argument t. Suggested by Thierry + Volpiatto . + (quit-window): Reword doc-string. Handle new format of + quit-restore parameter. Don't delete window if it has a + previous buffer we can show instead of the present one. + (display-buffer-record-window): Rewrite using a new format for + the quit-restore window parameter + (special-display-popup-frame, display-buffer-same-window) + (display-buffer-reuse-window, display-buffer-pop-up-frame) + (display-buffer-pop-up-window, display-buffer-use-some-window): + Adapt symbol passed to display-buffer-record-window. + * help.el (help-window-setup): Handle new format of quit-restore + parameter. + 2011-09-21 Stefan Monnier * faces.el (face-list): Fix docstring (bug#9564). === modified file 'lisp/help.el' --- lisp/help.el 2011-09-14 09:17:30 +0000 +++ lisp/help.el 2011-09-21 08:20:21 +0000 @@ -1066,7 +1066,7 @@ (let* ((help-buffer (when (window-live-p help-window) (window-buffer help-window))) (help-setup (when (window-live-p help-window) - (window-parameter help-window 'help-setup)))) + (car (window-parameter help-window 'quit-restore))))) (when help-buffer ;; Handle `help-window-point-marker'. (when (eq (marker-buffer help-window-point-marker) help-buffer) @@ -1077,7 +1077,7 @@ (cond ((or (eq help-window (selected-window)) (and (or (eq help-window-select t) - (eq help-setup 'new-frame) + (eq help-setup 'frame) (and (eq help-window-select 'other) (eq (window-frame help-window) (selected-frame)) (> (length (window-list nil 'no-mini)) 2))) @@ -1085,12 +1085,12 @@ ;; The help window is or gets selected ... (help-window-display-message (cond - ((eq help-setup 'new-window) + ((eq help-setup 'window) ;; ... and is new, ... "Type \"q\" to delete help window") - ((eq help-setup 'new-frame) + ((eq help-setup 'frame) "Type \"q\" to delete help frame") - ((eq help-setup 'reuse-other) + ((eq help-setup 'other) ;; ... or displayed some other buffer before. "Type \"q\" to restore previous buffer")) help-window t)) @@ -1100,19 +1100,19 @@ ;; other one is the selected one. (help-window-display-message (cond - ((eq help-setup 'new-window) + ((eq help-setup 'window) "Type \\[delete-other-windows] to delete the help window") - ((eq help-setup 'reuse-other) + ((eq help-setup 'other) "Type \"q\" in help window to restore its previous buffer")) help-window 'other)) (t ;; The help window is not selected ... (help-window-display-message (cond - ((eq help-setup 'new-window) + ((eq help-setup 'window) ;; ... and is new, ... "Type \"q\" in help window to delete it") - ((eq help-setup 'reuse-other) + ((eq help-setup 'other) ;; ... or displayed some other buffer before. "Type \"q\" in help window to restore previous buffer")) help-window)))))) === modified file 'lisp/window.el' --- lisp/window.el 2011-09-21 01:30:35 +0000 +++ lisp/window.el 2011-09-21 08:20:21 +0000 @@ -2531,7 +2531,8 @@ (when (and selected current) (set-buffer buffer)) (when start - (set-window-start window start)) + ;; Don't force window-start here (even if POINT is nil). + (set-window-start window start t)) (when point (if selected (with-current-buffer buffer @@ -2868,8 +2869,9 @@ (defun quit-window (&optional kill window) "Quit WINDOW and bury its buffer. -WINDOW defaults to the selected window. -With a prefix argument, kill the buffer instead. +WINDOW must be a live window and defaults to the selected one. +With prefix argument KILL non-nil, kill the buffer instead of +burying it. According to information stored in WINDOW's `quit-restore' window parameter either \(1) delete WINDOW and its frame, \(2) delete @@ -2878,50 +2880,62 @@ one. If non-nil, reset `quit-restore' parameter to nil." (interactive "P") (setq window (window-normalize-live-window window)) - (let ((buffer (window-buffer window)) - (quit-restore (window-parameter window 'quit-restore)) - resize) + (let* ((buffer (window-buffer window)) + (quit-restore (window-parameter window 'quit-restore)) + (prev-buffer + (let* ((prev-buffers (window-prev-buffers window)) + (prev-buffer (caar prev-buffers))) + (and (or (not (eq prev-buffer buffer)) + (and (cdr prev-buffers) + (not (eq (setq prev-buffer (cadr prev-buffers)) + buffer)))) + prev-buffer))) + quad resize) (cond - ((and (eq (car-safe quit-restore) 'new-frame) - (eq (nth 1 quit-restore) (window-buffer window)) - (eq (window-deletable-p window) 'frame)) + ((and (not prev-buffer) + (eq (nth 1 quit-restore) 'frame) + (eq (window-deletable-p window) 'frame) + (eq (nth 3 quit-restore) buffer)) ;; WINDOW's frame can be deleted. (delete-frame (window-frame window)) ;; If the previously selected window is still alive, select it. (when (window-live-p (nth 2 quit-restore)) (select-window (nth 2 quit-restore)))) - ((and (eq (car-safe quit-restore) 'new-window) - (eq (nth 1 quit-restore) (window-buffer window)) - (eq (window-deletable-p window) t)) - ;; WINDOW's can be deleted. + ((and (not prev-buffer) + (eq (nth 1 quit-restore) 'window) + (eq (window-deletable-p window) t) + (eq (nth 3 quit-restore) buffer)) + ;; WINDOW can be deleted. (delete-window window) ;; If the previously selected window is still alive, select it. (when (window-live-p (nth 2 quit-restore)) (select-window (nth 2 quit-restore)))) - ((and (buffer-live-p (nth 0 quit-restore)) - ;; The buffer currently shown in WINDOW must still be the - ;; buffer shown when its `quit-restore' parameter was created - ;; in the first place. - (eq (window-buffer window) (nth 3 quit-restore))) - (setq resize (with-current-buffer buffer temp-buffer-resize-mode)) + ((and (listp (setq quad (nth 1 quit-restore))) + (buffer-live-p (car quad)) + (eq (nth 3 quit-restore) buffer)) + ;; Show another buffer stored in quit-restore parameter. + (setq resize (with-current-buffer buffer + (and temp-buffer-resize-mode + (/= (nth 3 quad) (window-total-size window))))) (unrecord-window-buffer window buffer) - ;; Display buffer stored in the quit-restore parameter. (set-window-dedicated-p window nil) - (set-window-buffer window (nth 0 quit-restore)) - (set-window-start window (nth 1 quit-restore)) - (set-window-point window (nth 2 quit-restore)) - (and resize - (/= (nth 4 quit-restore) (window-total-size window)) - (window-resize window - (- (nth 4 quit-restore) - (window-total-size window)))) + (when resize + ;; Try to resize WINDOW to its old height but don't signal an + ;; error. + (condition-case nil + (window-resize window (- (nth 3 quad) (window-total-size window))) + (error nil))) + ;; Restore WINDOW's previous buffer, window start and point. + (set-window-buffer-start-and-point + window (nth 0 quad) (nth 1 quad) (nth 2 quad)) ;; Reset the quit-restore parameter. (set-window-parameter window 'quit-restore nil) - (when (window-live-p (nth 5 quit-restore)) - (select-window (nth 5 quit-restore)))) + ;; Select old window. + (when (window-live-p (nth 2 quit-restore)) + (select-window (nth 2 quit-restore)))) (t - ;; Otherwise, show another buffer in WINDOW and reset the - ;; quit-restore parameter. + ;; Show some other buffer in WINDOW and reset the quit-restore + ;; parameter. (set-window-parameter window 'quit-restore nil) (switch-to-prev-buffer window 'bury-or-kill))) @@ -3787,39 +3801,48 @@ (defun display-buffer-record-window (type window buffer) "Record information for window used by `display-buffer'. -TYPE must be one of the symbols reuse-window, pop-up-window, or -pop-up-frame. WINDOW is the window used for or created by the -`display-buffer' routines. BUFFER is the buffer that shall be -displayed." +TYPE specifies the type of the calling operation and must be one +of the symbols 'reuse \(when WINDOW existed already and was +reused for displaying BUFFER), 'window \(when WINDOW was created +on an already existing frame), or 'frame \(when WINDOW was +created on a new frame). WINDOW is the window used for or created +by the `display-buffer' routines. BUFFER is the buffer that +shall be displayed. + +This function installs or updates the quit-restore parameter of +WINDOW. The quit-restore parameter is a list of four elements: +The first element is one of the symbols 'window, 'frame, 'same or +'other. The second element is either one of the symbols 'window +or 'frame or a list whose elements are the buffer previously +shown in the window, that buffer's window start and window point, +and the window's height. The third element is the window +selected at the time the parameter was created. The fourth +element is BUFFER." (cond - ((eq type 'reuse-window) - ;; In `help-setup' window parameter record whether we used a window - ;; on the same buffer or another one. - (set-window-parameter - window 'help-setup - (if (eq (window-buffer window) buffer) 'reuse-same 'reuse-other)) - ;; In `quit-restore' parameter record information about the old - ;; buffer unless such information exists already. - (unless (window-parameter window 'quit-restore) + ((eq type 'reuse) + (if (eq (window-buffer window) buffer) + ;; WINDOW shows BUFFER already. + (when (consp (window-parameter window 'quit-restore)) + ;; If WINDOW has a quit-restore parameter, reset its car. + (setcar (window-parameter window 'quit-restore) 'same)) + ;; WINDOW shows another buffer. (set-window-parameter window 'quit-restore - (list (window-buffer window) (window-start window) - (window-point window) buffer - (window-total-size window) (selected-window))))) - ((eq type 'pop-up-window) - ;; In `help-setup' window parameter record window as new. - (set-window-parameter window 'help-setup 'new-window) - ;; In `quit-restore' parameter record that we popped up this window, - ;; its buffer, and which window was selected before. - (set-window-parameter - window 'quit-restore (list 'new-window buffer (selected-window)))) - ((eq type 'pop-up-frame) - ;; In `help-setup' window parameter record window as on new frame. - (set-window-parameter window 'help-setup 'new-frame) - ;; In `quit-restore' parameter record that we popped up this window - ;; on a new frame, the buffer, and which window was selected before. - (set-window-parameter - window 'quit-restore (list 'new-frame buffer (selected-window)))))) + (list 'other + ;; A quadruple of WINDOW's buffer, start, point and height. + (list (window-buffer window) (window-start window) + (window-point window) (window-total-size window)) + (selected-window) buffer)))) + ((eq type 'window) + ;; WINDOW has been created on an existing frame. + (set-window-parameter + window 'quit-restore + (list 'window 'window (selected-window) buffer))) + ((eq type 'frame) + ;; WINDOW has been created on a new frame. + (set-window-parameter + window 'quit-restore + (list 'frame 'frame (selected-window) buffer))))) (defcustom display-buffer-function nil "If non-nil, function to call to handle `display-buffer'. @@ -4065,7 +4088,7 @@ (let ((frame (window-frame window))) (make-frame-visible frame) (raise-frame frame) - (display-buffer-record-window 'reuse-window window buffer) + (display-buffer-record-window 'reuse window buffer) window)) ;; Reuse the current window if the user requested it. (when (cdr (assq 'same-window args)) @@ -4083,7 +4106,7 @@ (with-current-buffer buffer (make-frame (append args special-display-frame-alist))))) (display-buffer-record-window - 'pop-up-frame (frame-selected-window frame) buffer) + 'frame (frame-selected-window frame) buffer) (set-window-buffer (frame-selected-window frame) buffer) (set-window-dedicated-p (frame-selected-window frame) t) (frame-selected-window frame)))))) @@ -4644,7 +4667,7 @@ (unless (or (cdr (assq 'inhibit-same-window alist)) (window-minibuffer-p) (window-dedicated-p)) - (display-buffer-record-window 'reuse-window (selected-window) buffer) + (display-buffer-record-window 'reuse (selected-window) buffer) (window--display-buffer-2 buffer (selected-window)))) (defun display-buffer--maybe-same-window (buffer alist) @@ -4689,7 +4712,7 @@ (get-buffer-window-list buffer 'nomini frames)))))) (when window - (display-buffer-record-window 'reuse-window window buffer) + (display-buffer-record-window 'reuse window buffer) (window--display-buffer-1 window)))) (defun display-buffer--special (buffer alist) @@ -4713,7 +4736,7 @@ (when (and fun (setq frame (funcall fun)) (setq window (frame-selected-window frame))) - (display-buffer-record-window 'pop-up-frame window buffer) + (display-buffer-record-window 'frame window buffer) (window--display-buffer-2 buffer window) ;; Reset list of WINDOW's previous buffers to nil. (set-window-prev-buffers window nil) @@ -4739,7 +4762,7 @@ (get-largest-window frame t)) (window--try-to-split-window (get-lru-window frame t))))) - (display-buffer-record-window 'pop-up-window window buffer) + (display-buffer-record-window 'window window buffer) (window--display-buffer-2 buffer window) ;; Reset list of WINDOW's previous buffers to nil. (set-window-prev-buffers window nil) @@ -4793,7 +4816,7 @@ ;; Restore dedicated status of selected window. (set-window-dedicated-p window-to-undedicate nil))) (when window - (display-buffer-record-window 'reuse-window window buffer) + (display-buffer-record-window 'reuse window buffer) (window--even-window-heights window) (window--display-buffer-2 buffer window)))) ------------------------------------------------------------ revno: 105865 committer: Eli Zaretskii branch nick: trunk timestamp: Wed 2011-09-21 04:13:18 -0400 message: Fix assertion failure when displaying stretch glyphs under linum-mode. src/xdisp.c (pop_it): Allow it->object that is a cons cell to pass the xassert test. src/dispextern.h (struct it): Update the comment documenting what can it->OBJECT be. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2011-09-20 17:42:16 +0000 +++ src/ChangeLog 2011-09-21 08:13:18 +0000 @@ -1,3 +1,11 @@ +2011-09-21 Eli Zaretskii + + * xdisp.c (pop_it): Allow it->object that is a cons cell to pass + the xassert test. + + * dispextern.h (struct it): Update the comment documenting what + can it->OBJECT be. + 2011-09-20 Eli Zaretskii * xdisp.c (set_cursor_from_row): If the row ends in a newline from === modified file 'src/dispextern.h' --- src/dispextern.h 2011-09-14 21:45:51 +0000 +++ src/dispextern.h 2011-09-21 08:13:18 +0000 @@ -2398,9 +2398,19 @@ Lisp_Object font_height; /* Object and position where the current display element came from. - Object can be a Lisp string in case the current display element - comes from an overlay string, or it is buffer. It may also be nil - during mode-line update. Position is a position in object. */ + Object is normally the buffer which is being rendered, but it can + also be a Lisp string in case the current display element comes + from an overlay string or from a display string (before- or + after-string). It may also be nil when a C string is being + rendered, e.g., during mode-line or header-line update. It can + also be a cons cell of the form `(space ...)', when we produce a + stretch glyph from a `display' specification. Finally, it can be + a zero-valued Lisp integer, but only temporarily, when we are + producing special glyphs for display purposes, like truncation + and continuation glyphs, or blanks that extend each line to the + edge of the window on a TTY. + + Position is the current iterator position in object. */ Lisp_Object object; struct text_pos position; === modified file 'src/xdisp.c' --- src/xdisp.c 2011-09-20 17:42:16 +0000 +++ src/xdisp.c 2011-09-21 08:13:18 +0000 @@ -5459,7 +5459,8 @@ && IT_BYTEPOS (*it) == it->bidi_it.bytepos) || (STRINGP (it->object) && IT_STRING_CHARPOS (*it) == it->bidi_it.charpos - && IT_STRING_BYTEPOS (*it) == it->bidi_it.bytepos)); + && IT_STRING_BYTEPOS (*it) == it->bidi_it.bytepos) + || (CONSP (it->object) && it->method == GET_FROM_STRETCH)); } } ------------------------------------------------------------ revno: 105864 committer: Bill Wohler branch nick: trunk timestamp: Tue 2011-09-20 22:22:17 -0700 message: * mh-e.texi: (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for release 8.3. (Preface): Updated support information. (From Bill Wohler): Reset text to original version. As a historical quote, the tense should be correct in the time that it was written. diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2011-09-11 22:50:22 +0000 +++ doc/misc/ChangeLog 2011-09-21 05:22:17 +0000 @@ -1,3 +1,14 @@ +2011-09-21 Bill Wohler + + Release MH-E manual version 8.3. + + * mh-e.texi: (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for + release 8.3. + (Preface): Updated support information. + (From Bill Wohler): Reset text to original version. As a + historical quote, the tense should be correct in the time that it + was written. + 2011-09-11 Lars Magne Ingebrigtsen * gnus.texi (Listing Groups): Explain `gnus-group-list-limit'. === modified file 'doc/misc/mh-e.texi' --- doc/misc/mh-e.texi 2011-02-23 04:19:28 +0000 +++ doc/misc/mh-e.texi 2011-09-21 05:22:17 +0000 @@ -8,12 +8,12 @@ @c %**end of header @c Version of the software and manual. -@set VERSION 8.2 +@set VERSION 8.3 @c Edition of the manual. It is either empty for the first edition or @c has the form ", nth Edition" (without the quotes). @set EDITION -@set UPDATED 2009-06-13 -@set UPDATE-MONTH June, 2009 +@set UPDATED 2011-09-20 +@set UPDATE-MONTH September, 2011 @c Other variables. @set MH-BOOK-HOME http://rand-mh.sourceforge.net/book/mh @@ -212,10 +212,11 @@ them. The MH-E package is distributed with Emacs@footnote{Version -@value{VERSION} of MH-E appeared in Emacs 23.1. It is supported -in Emacs 21 and 22, as well as XEmacs 21 (except for versions -21.5.9-21.5.16). It is compatible with MH versions 6.8.4 and higher, -all versions of nmh, and GNU mailutils 1.0 and higher.}, so you +@value{VERSION} of MH-E appeared in Emacs 24.1. It is supported in GNU +Emacs 23 and higher, as well as XEmacs 21.4.22 and 21.5.31. MH-E is +known not to work with GNU Emacs versions 20 and below, and XEmacs +version 21.5.9 - 21.5.16. It is compatible with MH versions 6.8.4 and +higher, all versions of nmh, and GNU mailutils 1.0 and higher}, so you shouldn't have to do anything special to use it. Gnus is also required; version 5.10 or higher is recommended. This manual covers MH-E version @value{VERSION}. To help you decide which version you @@ -8950,8 +8951,8 @@ reorganized to push back two decades of entropy. Version 8 appeared in Emacs 22.1 in 2006. -Development was then quiet for a couple of years. Emacs 23.1, released -in June 2009, contains version 8.2. This version includes a few +Development was then quiet for a couple of years. Emacs 23.1, which is +due out in 2009, will contain version 8.1. This version includes a few new features and several bug fixes. Bill Wohler, August 2008 ------------------------------------------------------------ revno: 105863 committer: Katsumi Yamaoka branch nick: trunk timestamp: Wed 2011-09-21 02:13:03 +0000 message: mm-view.el (mm-display-inline-fontify): Don't run doc-view-mode because it displays images using overlays that aren't easy to copy to the article buffer. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2011-09-20 22:14:36 +0000 +++ lisp/gnus/ChangeLog 2011-09-21 02:13:03 +0000 @@ -1,3 +1,9 @@ +2011-09-21 Katsumi Yamaoka + + * mm-view.el (mm-display-inline-fontify): Don't run doc-view-mode + because it displays images using overlays that aren't easy to copy to + the article buffer. + 2011-09-20 Łukasz Stelmach (tiny change) * message.el (message-indent-citation): Fix empty line removal at the === modified file 'lisp/gnus/mm-view.el' --- lisp/gnus/mm-view.el 2011-09-17 04:53:25 +0000 +++ lisp/gnus/mm-view.el 2011-09-21 02:13:03 +0000 @@ -607,7 +607,10 @@ (set (make-local-variable 'enable-local-variables) nil) (if mode (funcall mode) - (set-auto-mode)) + (let ((auto-mode-alist + (delq (rassq 'doc-view-mode-maybe auto-mode-alist) + (copy-sequence auto-mode-alist)))) + (set-auto-mode))) ;; The mode function might have already turned on font-lock. ;; Do not fontify if the guess mode is fundamental. (unless (or (symbol-value 'font-lock-mode) ------------------------------------------------------------ revno: 105862 fixes bug(s): http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9564 committer: Stefan Monnier branch nick: trunk timestamp: Tue 2011-09-20 21:33:33 -0400 message: * doc/lispref/display.texi (Face Functions): `face-list' returns faces. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2011-09-19 08:14:13 +0000 +++ doc/lispref/ChangeLog 2011-09-21 01:33:33 +0000 @@ -1,3 +1,7 @@ +2011-09-21 Stefan Monnier + + * display.texi (Face Functions): `face-list' returns faces (bug#9564). + 2011-09-19 Lars Magne Ingebrigtsen * errors.texi (Standard Errors): Remove apparent placeholder text === modified file 'doc/lispref/display.texi' --- doc/lispref/display.texi 2011-08-30 15:24:07 +0000 +++ doc/lispref/display.texi 2011-09-21 01:33:33 +0000 @@ -2598,7 +2598,7 @@ @end defun @defun face-list -This function returns a list of all defined face names. +This function returns a list of all defined faces. @end defun @defun copy-face old-face new-name &optional frame new-frame ------------------------------------------------------------ revno: 105861 fixes bug(s): http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9564 committer: Stefan Monnier branch nick: trunk timestamp: Tue 2011-09-20 21:31:53 -0400 message: * lisp/faces.el (face-list): Fix docstring. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-09-21 01:30:35 +0000 +++ lisp/ChangeLog 2011-09-21 01:31:53 +0000 @@ -1,5 +1,7 @@ 2011-09-21 Stefan Monnier + * faces.el (face-list): Fix docstring (bug#9564). + * window.el (display-buffer--action-function-custom-type): Don't include internal functions in the Custom interface. === modified file 'lisp/faces.el' --- lisp/faces.el 2011-09-11 04:28:07 +0000 +++ lisp/faces.el 2011-09-21 01:31:53 +0000 @@ -119,7 +119,7 @@ (defun face-list () - "Return a list of all defined face names." + "Return a list of all defined faces." (mapcar #'car face-new-frame-defaults)) ------------------------------------------------------------ revno: 105860 committer: Stefan Monnier branch nick: trunk timestamp: Tue 2011-09-20 21:30:35 -0400 message: * lisp/window.el (display-buffer--action-function-custom-type): Don't include internal functions in the Custom interface. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-09-20 20:16:42 +0000 +++ lisp/ChangeLog 2011-09-21 01:30:35 +0000 @@ -1,3 +1,8 @@ +2011-09-21 Stefan Monnier + + * window.el (display-buffer--action-function-custom-type): + Don't include internal functions in the Custom interface. + 2011-09-20 Juri Linkov * info.el (Info-history-skip-intermediate-nodes): New defcustom. @@ -130,8 +135,8 @@ * net/tramp.el (top): Don't require 'shell. (tramp-methods): Fix docstring. (tramp-get-remote-tmpdir): New defun, moved from tramp-sh.el. - Return complete remote file name. Handle "smb" case. Use - `tramp-tmpdir', if defined for the respective method. + Return complete remote file name. Handle "smb" case. + Use `tramp-tmpdir', if defined for the respective method. (tramp-make-tramp-temp-file): Adapt call of `tramp-get-remote-tmpdir'. * net/tramp-compat.el (top): Require 'shell. === modified file 'lisp/window.el' --- lisp/window.el 2011-09-17 00:46:59 +0000 +++ lisp/window.el 2011-09-21 01:30:35 +0000 @@ -4442,10 +4442,7 @@ (defconst display-buffer--action-function-custom-type '(choice :tag "Function" (const :tag "--" ignore) ; default for insertion - (const display-buffer--maybe-same-window) (const display-buffer-reuse-window) - (const display-buffer--special) - (const display-buffer--maybe-pop-up-frame-or-window) (const display-buffer-use-some-window) (const display-buffer-same-window) (const display-buffer-pop-up-frame) ------------------------------------------------------------ revno: 105859 author: Gnus developers committer: Katsumi Yamaoka branch nick: trunk timestamp: Tue 2011-09-20 22:14:36 +0000 message: Merge changes made in Gnus trunk. message.el (message-indent-citation): Fix empty line removal at the end of the citation. auth-source.el (auth-source-netrc-create): Use default value for password if specified. Evaluate default. (auth-source-plstore-create): Ditto. (auth-source-plstore-create, auth-source-netrc-create): Fix default value evaluation. (auth-source-netrc-create): Typo fix. (auth-source-plstore-create): Ditto. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2011-09-20 14:08:04 +0000 +++ lisp/gnus/ChangeLog 2011-09-20 22:14:36 +0000 @@ -1,5 +1,18 @@ +2011-09-20 Łukasz Stelmach (tiny change) + + * message.el (message-indent-citation): Fix empty line removal at the + end of the citation. + 2011-09-20 Julien Danjou + * auth-source.el (auth-source-netrc-create): Use default value for + password if specified. Evaluate default. + (auth-source-plstore-create): Ditto. + (auth-source-plstore-create, auth-source-netrc-create): Fix default + value evaluation. + (auth-source-netrc-create): Typo fix. + (auth-source-plstore-create): Ditto. + * auth-source.el (auth-source-format-cache-entry): New function. 2011-09-20 Katsumi Yamaoka === modified file 'lisp/gnus/auth-source.el' --- lisp/gnus/auth-source.el 2011-09-20 14:08:04 +0000 +++ lisp/gnus/auth-source.el 2011-09-20 22:14:36 +0000 @@ -1225,49 +1225,46 @@ (?p ,(aget printable-defaults 'port)))))) ;; Store the data, prompting for the password if needed. - (setq data - (cond - ((and (null data) (eq r 'secret)) - ;; Special case prompt for passwords. - ;; TODO: make the default (setq auth-source-netrc-use-gpg-tokens `((,(if (boundp 'epa-file-auto-mode-alist-entry) (car (symbol-value 'epa-file-auto-mode-alist-entry)) "\\.gpg\\'") nil) (t gpg))) - ;; TODO: or maybe leave as (setq auth-source-netrc-use-gpg-tokens 'never) - (let* ((ep (format "Use GPG password tokens in %s?" file)) - (gpg-encrypt - (cond - ((eq auth-source-netrc-use-gpg-tokens 'never) - 'never) - ((listp auth-source-netrc-use-gpg-tokens) - (let ((check (copy-sequence - auth-source-netrc-use-gpg-tokens)) - item ret) - (while check - (setq item (pop check)) - (when (or (eq (car item) t) - (string-match (car item) file)) - (setq ret (cdr item)) - (setq check nil))))) - (t 'never))) - (plain (read-passwd prompt))) - ;; ask if we don't know what to do (in which case - ;; auth-source-netrc-use-gpg-tokens must be a list) - (unless gpg-encrypt - (setq gpg-encrypt (if (y-or-n-p ep) 'gpg 'never)) - ;; TODO: save the defcustom now? or ask? - (setq auth-source-netrc-use-gpg-tokens - (cons `(,file ,gpg-encrypt) - auth-source-netrc-use-gpg-tokens))) - (if (eq gpg-encrypt 'gpg) - (auth-source-epa-make-gpg-token plain file) - plain))) - ((null data) - (when default - (setq prompt - (if (string-match ": *\\'" prompt) - (concat (substring prompt 0 (match-beginning 0)) - " (default " default "): ") - (concat prompt "(default " default ") ")))) - (read-string prompt nil nil default)) - (t (or data default)))) + (setq data (or data + (if (eq r 'secret) + ;; Special case prompt for passwords. + ;; TODO: make the default (setq auth-source-netrc-use-gpg-tokens `((,(if (boundp 'epa-file-auto-mode-alist-entry) (car (symbol-value 'epa-file-auto-mode-alist-entry)) "\\.gpg\\'") nil) (t gpg))) + ;; TODO: or maybe leave as (setq auth-source-netrc-use-gpg-tokens 'never) + (let* ((ep (format "Use GPG password tokens in %s?" file)) + (gpg-encrypt + (cond + ((eq auth-source-netrc-use-gpg-tokens 'never) + 'never) + ((listp auth-source-netrc-use-gpg-tokens) + (let ((check (copy-sequence + auth-source-netrc-use-gpg-tokens)) + item ret) + (while check + (setq item (pop check)) + (when (or (eq (car item) t) + (string-match (car item) file)) + (setq ret (cdr item)) + (setq check nil))))) + (t 'never))) + (plain (or (eval default) (read-passwd prompt)))) + ;; ask if we don't know what to do (in which case + ;; auth-source-netrc-use-gpg-tokens must be a list) + (unless gpg-encrypt + (setq gpg-encrypt (if (y-or-n-p ep) 'gpg 'never)) + ;; TODO: save the defcustom now? or ask? + (setq auth-source-netrc-use-gpg-tokens + (cons `(,file ,gpg-encrypt) + auth-source-netrc-use-gpg-tokens))) + (if (eq gpg-encrypt 'gpg) + (auth-source-epa-make-gpg-token plain file) + plain)) + (if (stringp default) + (read-string (if (string-match ": *\\'" prompt) + (concat (substring prompt 0 (match-beginning 0)) + " (default " default "): ") + (concat prompt "(default " default ") ")) + nil nil default) + (eval default))))) (when data (setq artificial (plist-put artificial @@ -1671,20 +1668,16 @@ (?p ,(aget printable-defaults 'port)))))) ;; Store the data, prompting for the password if needed. - (setq data - (cond - ((and (null data) (eq r 'secret)) - ;; Special case prompt for passwords. - (read-passwd prompt)) - ((null data) - (when default - (setq prompt - (if (string-match ": *\\'" prompt) - (concat (substring prompt 0 (match-beginning 0)) - " (default " default "): ") - (concat prompt "(default " default ") ")))) - (read-string prompt nil nil default)) - (t (or data default)))) + (setq data (or data + (if (eq r 'secret) + (or (eval default) (read-passwd prompt)) + (if (stringp default) + (read-string (if (string-match ": *\\'" prompt) + (concat (substring prompt 0 (match-beginning 0)) + " (default " default "): ") + (concat prompt "(default " default ") ")) + nil nil default) + (eval default))))) (when data (if (member r base-secret) === modified file 'lisp/gnus/message.el' --- lisp/gnus/message.el 2011-09-15 01:08:08 +0000 +++ lisp/gnus/message.el 2011-09-20 22:14:36 +0000 @@ -3679,10 +3679,9 @@ (message-delete-line)) ;; Delete blank lines at the end of the buffer. (goto-char (point-max)) - (unless (eolp) - (insert "\n")) - (while (and (zerop (forward-line -1)) - (looking-at "$")) + (beginning-of-line) + (while (and (looking-at "$") + (zerop (forward-line -1))) (message-delete-line))) ;; Do the indentation. (if (null message-yank-prefix) ------------------------------------------------------------ revno: 105858 fixes bug(s): http://debbugs.gnu.org/9528 committer: Juri Linkov branch nick: trunk timestamp: Tue 2011-09-20 23:16:42 +0300 message: * lisp/info.el (Info-history-skip-intermediate-nodes): New defcustom. (Info-forward-node, Info-backward-node, Info-next-preorder) (Info-last-preorder): Use it. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-09-20 16:28:07 +0000 +++ lisp/ChangeLog 2011-09-20 20:16:42 +0000 @@ -1,5 +1,11 @@ 2011-09-20 Juri Linkov + * info.el (Info-history-skip-intermediate-nodes): New defcustom. + (Info-forward-node, Info-backward-node, Info-next-preorder) + (Info-last-preorder): Use it. (Bug#9528) + +2011-09-20 Juri Linkov + * info.el (Info-last-preorder): Visit last menu item only when `Info-scroll-prefer-subnodes' is non-nil (third test-case of bug#9528). === modified file 'lisp/info.el' --- lisp/info.el 2011-09-20 16:28:07 +0000 +++ lisp/info.el 2011-09-20 20:16:42 +0000 @@ -52,6 +52,15 @@ "List of all Info nodes user has visited. Each element of the list is a list (FILENAME NODENAME).") +(defcustom Info-history-skip-intermediate-nodes t + "Non-nil means don't record intermediate Info nodes to the history. +Intermediate Info nodes are nodes visited by Info internally in the process of +searching the node to display. Intermediate nodes are not presented +to the user." + :type 'boolean + :group 'info + :version "24.1") + (defcustom Info-enable-edit nil "Non-nil means the \\\\[Info-edit] command in Info can edit the current node. This is convenient if you want to write Info files by hand. @@ -2668,10 +2677,13 @@ "top"))) (let ((old-node Info-current-node)) (Info-up) - (let (Info-history success) + (let ((old-history Info-history) + success) (unwind-protect (setq success (Info-forward-node t nil no-error)) - (or success (Info-goto-node old-node)))))) + (or success (Info-goto-node old-node))) + (if Info-history-skip-intermediate-nodes + (setq Info-history old-history))))) (no-error nil) (t (error "No pointer forward from this node"))))) @@ -2693,10 +2705,12 @@ ;; If we move back at the same level, ;; go down to find the last subnode*. (Info-prev) - (let (Info-history) + (let ((old-history Info-history)) (while (and (not (Info-index-node)) (save-excursion (search-forward "\n* Menu:" nil t))) - (Info-goto-node (Info-extract-menu-counting nil))))) + (Info-goto-node (Info-extract-menu-counting nil))) + (if Info-history-skip-intermediate-nodes + (setq Info-history old-history)))) (t (error "No pointer backward from this node"))))) @@ -2752,8 +2766,10 @@ ;; Since logically we are done with the node with that menu, ;; move on from it. But don't add intermediate nodes ;; to the history on recursive calls. - (let (Info-history) - (Info-next-preorder))) + (let ((old-history Info-history)) + (Info-next-preorder) + (if Info-history-skip-intermediate-nodes + (setq Info-history old-history)))) (t (error "No more nodes")))) @@ -2767,24 +2783,28 @@ ;; so we can scroll back through it. (goto-char (point-max)))) ;; Keep going down, as long as there are nested menu nodes. - (let (Info-history) ; Don't add intermediate nodes to the history. + (let ((old-history Info-history)) (while (Info-no-error (Info-last-menu-item) ;; If we go down a menu item, go to the end of the node ;; so we can scroll back through it. - (goto-char (point-max))))) + (goto-char (point-max)))) + (if Info-history-skip-intermediate-nodes + (setq Info-history old-history))) (recenter -1)) ((and (Info-no-error (Info-extract-pointer "prev")) (not (equal (Info-extract-pointer "up") (Info-extract-pointer "prev")))) (Info-no-error (Info-prev)) (goto-char (point-max)) - (let (Info-history) ; Don't add intermediate nodes to the history. + (let ((old-history Info-history)) (while (Info-no-error (Info-last-menu-item) ;; If we go down a menu item, go to the end of the node ;; so we can scroll back through it. - (goto-char (point-max))))) + (goto-char (point-max)))) + (if Info-history-skip-intermediate-nodes + (setq Info-history old-history))) (recenter -1)) ((Info-no-error (Info-up t)) (goto-char (point-min)) ------------------------------------------------------------ revno: 105857 committer: Eli Zaretskii branch nick: trunk timestamp: Tue 2011-09-20 20:42:16 +0300 message: Fix bidi-aware cursor motion inside indentation. src/xdisp.c (Fcurrent_bidi_paragraph_direction): Fix search for previous non-empty line. Fixes confusing cursor motion with arrow keys at the beginning of a line that starts with whitespace. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2011-09-20 17:13:45 +0000 +++ src/ChangeLog 2011-09-20 17:42:16 +0000 @@ -5,6 +5,9 @@ (find_row_edges): If the row ends in a newline from a display string, increment its MATRIX_ROW_END_CHARPOS by one. (Bug#9549) Handle the case of a display string with multiple newlines. + (Fcurrent_bidi_paragraph_direction): Fix search for previous + non-empty line. Fixes confusing cursor motion with arrow keys at + the beginning of a line that starts with whitespace. 2011-09-19 Lars Magne Ingebrigtsen === modified file 'src/xdisp.c' --- src/xdisp.c 2011-09-20 17:13:45 +0000 +++ src/xdisp.c 2011-09-20 17:42:16 +0000 @@ -19205,6 +19205,7 @@ EMACS_INT pos = BUF_PT (buf); EMACS_INT bytepos = BUF_PT_BYTE (buf); int c; + void *itb_data = bidi_shelve_cache (); set_buffer_temp (buf); /* bidi_paragraph_init finds the base direction of the paragraph @@ -19217,27 +19218,27 @@ pos--; bytepos = CHAR_TO_BYTE (pos); } - while ((c = FETCH_BYTE (bytepos)) == '\n' - || c == ' ' || c == '\t' || c == '\f') + if (fast_looking_at (build_string ("[\f\t ]*\n"), + pos, bytepos, ZV, ZV_BYTE, Qnil) > 0) { - if (bytepos <= BEGV_BYTE) - break; - bytepos--; - pos--; + while ((c = FETCH_BYTE (bytepos)) == '\n' + || c == ' ' || c == '\t' || c == '\f') + { + if (bytepos <= BEGV_BYTE) + break; + bytepos--; + pos--; + } + while (!CHAR_HEAD_P (FETCH_BYTE (bytepos))) + bytepos--; } - while (!CHAR_HEAD_P (FETCH_BYTE (bytepos))) - bytepos--; - itb.charpos = pos; - itb.bytepos = bytepos; - itb.nchars = -1; + bidi_init_it (pos, bytepos, FRAME_WINDOW_P (SELECTED_FRAME ()), &itb); itb.string.s = NULL; itb.string.lstring = Qnil; - itb.frame_window_p = FRAME_WINDOW_P (SELECTED_FRAME ()); /* guesswork */ - itb.first_elt = 1; - itb.separator_limit = -1; - itb.paragraph_dir = NEUTRAL_DIR; - + itb.string.bufpos = 0; + itb.string.unibyte = 0; bidi_paragraph_init (NEUTRAL_DIR, &itb, 1); + bidi_unshelve_cache (itb_data, 0); set_buffer_temp (old); switch (itb.paragraph_dir) { ------------------------------------------------------------ revno: 105856 fixes bug(s): http://debbugs.gnu.org/9549 committer: Eli Zaretskii branch nick: trunk timestamp: Tue 2011-09-20 20:13:45 +0300 message: Fix bug #9549 with longlines-show-hard-newlines. src/xdisp.c (set_cursor_from_row): If the row ends in a newline from a display string, extend search for cursor position to end of row. (find_row_edges): If the row ends in a newline from a display string, increment its MATRIX_ROW_END_CHARPOS by one. Handle the case of a display string with multiple newlines. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2011-09-19 08:25:35 +0000 +++ src/ChangeLog 2011-09-20 17:13:45 +0000 @@ -1,3 +1,11 @@ +2011-09-20 Eli Zaretskii + + * xdisp.c (set_cursor_from_row): If the row ends in a newline from + a display string, extend search for cursor position to end of row. + (find_row_edges): If the row ends in a newline from a display + string, increment its MATRIX_ROW_END_CHARPOS by one. (Bug#9549) + Handle the case of a display string with multiple newlines. + 2011-09-19 Lars Magne Ingebrigtsen * lread.c (Fread_from_string): Document what FINAL-STRING-INDEX is === modified file 'src/xdisp.c' --- src/xdisp.c 2011-09-18 19:02:17 +0000 +++ src/xdisp.c 2011-09-20 17:13:45 +0000 @@ -13666,6 +13666,17 @@ x = -1; + /* If the row ends in a newline from a display string, + reordering could have moved the glyphs belonging to the + string out of the [GLYPH_BEFORE..GLYPH_AFTER] range. So + in this case we extend the search to the last glyph in + the row that was not inserted by redisplay. */ + if (row->ends_in_newline_from_string_p) + { + glyph_after = end; + pos_after = MATRIX_ROW_END_CHARPOS (row) + delta; + } + /* GLYPH_BEFORE and GLYPH_AFTER are the glyphs that correspond to POS_BEFORE and POS_AFTER, respectively. We need START and STOP in the order that corresponds to the @@ -18341,7 +18352,8 @@ Line ends in a newline from buffer eol_pos + 1 Line is continued from buffer max_pos + 1 Line is truncated on right it->current.pos - Line ends in a newline from string max_pos + Line ends in a newline from string max_pos + 1(*) + (*) + 1 only when line ends in a forward scan Line is continued from string max_pos Line is continued from display vector max_pos Line is entirely from a string min_pos == max_pos @@ -18354,8 +18366,76 @@ row->maxpos = it->current.pos; else if (row->used[TEXT_AREA]) { - if (row->ends_in_newline_from_string_p) - SET_TEXT_POS (row->maxpos, max_pos, max_bpos); + int seen_this_string = 0; + struct glyph_row *r1 = row - 1; + + /* Did we see the same display string on the previous row? */ + if (STRINGP (it->object) + /* this is not the first row */ + && row > it->w->desired_matrix->rows + /* previous row is not the header line */ + && !r1->mode_line_p + /* previous row also ends in a newline from a string */ + && r1->ends_in_newline_from_string_p) + { + struct glyph *start, *end; + + /* Search for the last glyph of the previous row that came + from buffer or string. Depending on whether the row is + L2R or R2L, we need to process it front to back or the + other way round. */ + if (!r1->reversed_p) + { + start = r1->glyphs[TEXT_AREA]; + end = start + r1->used[TEXT_AREA]; + /* Glyphs inserted by redisplay have an integer (zero) + as their object. */ + while (end > start + && INTEGERP ((end - 1)->object) + && (end - 1)->charpos <= 0) + --end; + if (end > start) + { + if (EQ ((end - 1)->object, it->object)) + seen_this_string = 1; + } + else + abort (); + } + else + { + end = r1->glyphs[TEXT_AREA] - 1; + start = end + r1->used[TEXT_AREA]; + while (end < start + && INTEGERP ((end + 1)->object) + && (end + 1)->charpos <= 0) + ++end; + if (end < start) + { + if (EQ ((end + 1)->object, it->object)) + seen_this_string = 1; + } + else + abort (); + } + } + /* Take note of each display string that covers a newline only + once, the first time we see it. This is for when a display + string includes more than one newline in it. */ + if (row->ends_in_newline_from_string_p && !seen_this_string) + { + /* If we were scanning the buffer forward when we displayed + the string, we want to account for at least one buffer + position that belongs to this row (position covered by + the display string), so that cursor positioning will + consider this row as a candidate when point is at the end + of the visual line represented by this row. This is not + required when scanning back, because max_pos will already + have a much larger value. */ + if (CHARPOS (row->end.pos) > max_pos) + INC_BOTH (max_pos, max_bpos); + SET_TEXT_POS (row->maxpos, max_pos, max_bpos); + } else if (CHARPOS (it->eol_pos) > 0) SET_TEXT_POS (row->maxpos, CHARPOS (it->eol_pos) + 1, BYTEPOS (it->eol_pos) + 1); ------------------------------------------------------------ revno: 105855 fixes bug(s): http://debbugs.gnu.org/9528 committer: Juri Linkov branch nick: trunk timestamp: Tue 2011-09-20 19:28:07 +0300 message: * lisp/info.el (Info-last-preorder): Visit last menu item only when `Info-scroll-prefer-subnodes' is non-nil (third test-case of bug#9528). diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-09-20 14:08:04 +0000 +++ lisp/ChangeLog 2011-09-20 16:28:07 +0000 @@ -1,3 +1,8 @@ +2011-09-20 Juri Linkov + + * info.el (Info-last-preorder): Visit last menu item only when + `Info-scroll-prefer-subnodes' is non-nil (third test-case of bug#9528). + 2011-09-20 Julien Danjou * password-cache.el (password-cache-remove): Remove entries even if the === modified file 'lisp/info.el' --- lisp/info.el 2011-09-18 20:14:16 +0000 +++ lisp/info.el 2011-09-20 16:28:07 +0000 @@ -2760,11 +2760,12 @@ (defun Info-last-preorder () "Go to the last node, popping up a level if there is none." (interactive) - (cond ((Info-no-error - (Info-last-menu-item) - ;; If we go down a menu item, go to the end of the node - ;; so we can scroll back through it. - (goto-char (point-max))) + (cond ((and Info-scroll-prefer-subnodes + (Info-no-error + (Info-last-menu-item) + ;; If we go down a menu item, go to the end of the node + ;; so we can scroll back through it. + (goto-char (point-max)))) ;; Keep going down, as long as there are nested menu nodes. (let (Info-history) ; Don't add intermediate nodes to the history. (while (Info-no-error ------------------------------------------------------------ revno: 105854 author: Julien Danjou committer: Katsumi Yamaoka branch nick: trunk timestamp: Tue 2011-09-20 14:08:04 +0000 message: password-cache.el (password-cache-remove): Remove entries even if the value is nil, so that password with a nil value (negative caching) is possible to invalidate. auth-source.el (auth-source-format-cache-entry): New function. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-09-20 04:12:05 +0000 +++ lisp/ChangeLog 2011-09-20 14:08:04 +0000 @@ -1,3 +1,9 @@ +2011-09-20 Julien Danjou + + * password-cache.el (password-cache-remove): Remove entries even if the + value is nil, so that password with a nil value (negative caching) is + possible to invalidate. + 2011-09-20 Lawrence Mitchell * progmodes/f90.el (f90-break-line): If breaking inside comment delete === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2011-09-20 00:21:58 +0000 +++ lisp/gnus/ChangeLog 2011-09-20 14:08:04 +0000 @@ -1,3 +1,7 @@ +2011-09-20 Julien Danjou + + * auth-source.el (auth-source-format-cache-entry): New function. + 2011-09-20 Katsumi Yamaoka * gnus-fun.el (gnus-convert-image-to-x-face-command): Doc fix. === modified file 'lisp/gnus/auth-source.el' --- lisp/gnus/auth-source.el 2011-09-19 22:06:57 +0000 +++ lisp/gnus/auth-source.el 2011-09-20 14:08:04 +0000 @@ -749,28 +749,31 @@ do (password-cache-remove (symbol-name sym))) (setq auth-source-netrc-cache nil)) +(defun auth-source-format-cache-entry (spec) + "Format SPEC entry to put it in the password cache." + (concat auth-source-magic (format "%S" spec))) + (defun auth-source-remember (spec found) "Remember FOUND search results for SPEC." (let ((password-cache-expiry auth-source-cache-expiry)) (password-cache-add - (concat auth-source-magic (format "%S" spec)) found))) + (auth-source-format-cache-entry spec) found))) (defun auth-source-recall (spec) "Recall FOUND search results for SPEC." - (password-read-from-cache - (concat auth-source-magic (format "%S" spec)))) + (password-read-from-cache (auth-source-format-cache-entry spec))) (defun auth-source-remembered-p (spec) "Check if SPEC is remembered." (password-in-cache-p - (concat auth-source-magic (format "%S" spec)))) + (auth-source-format-cache-entry spec))) (defun auth-source-forget (spec) "Forget any cached data matching SPEC exactly. This is the same SPEC you passed to `auth-source-search'. Returns t or nil for forgotten or not found." - (password-cache-remove (concat auth-source-magic (format "%S" spec)))) + (password-cache-remove (auth-source-format-cache-entry spec))) ;;; (loop for sym being the symbols of password-data when (string-match (concat "^" auth-source-magic) (symbol-name sym)) collect (symbol-name sym)) === modified file 'lisp/password-cache.el' --- lisp/password-cache.el 2011-03-03 13:21:50 +0000 +++ lisp/password-cache.el 2011-09-20 14:08:04 +0000 @@ -116,13 +116,14 @@ from the cache. This may be useful when it has been detected that a password is invalid, so that `password-read' query the user again." - (let ((password (symbol-value (intern-soft key password-data)))) - (when password - (when (stringp password) - (if (fboundp 'clear-string) - (clear-string password) - (fillarray password ?_))) - (unintern key password-data)))) + (let ((sym (intern-soft key password-data))) + (when sym + (let ((password (symbol-value sym))) + (when (stringp password) + (if (fboundp 'clear-string) + (clear-string password) + (fillarray password ?_))) + (unintern key password-data))))) (defun password-cache-add (key password) "Add password to cache. ------------------------------------------------------------ revno: 105853 committer: Glenn Morris branch nick: trunk timestamp: Tue 2011-09-20 06:18:55 -0400 message: Auto-commit of loaddefs files. diff: === modified file 'lisp/ps-print.el' --- lisp/ps-print.el 2011-05-23 17:57:17 +0000 +++ lisp/ps-print.el 2011-09-20 10:18:55 +0000 @@ -6658,7 +6658,7 @@ ;; But autoload them here to make the separation invisible. ;;;### (autoloads (ps-mule-end-job ps-mule-begin-job ps-mule-initialize -;;;;;; ps-multibyte-buffer) "ps-mule" "ps-mule.el" "179b43ee432338186dde9e8c4fe761af") +;;;;;; ps-multibyte-buffer) "ps-mule" "ps-mule.el" "cf055ee6ba398da614a675dc25bdb123") ;;; Generated autoloads from ps-mule.el (defvar ps-multibyte-buffer nil "\