From: Martin Rudalics Date: Wed, 22 Apr 2015 09:17:27 +0000 (+0200) Subject: In display-buffer-record-window record selected window if necessary. X-Git-Tag: emacs-25.0.90~2336 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f974317897441f638808cbcfecb2c8fd1c0281ec;p=emacs.git In display-buffer-record-window record selected window if necessary. * lisp/window.el (display-buffer-record-window): Store selected window if it differs from 3rd element of 'quit-restore' parameter (Bug#20353). --- diff --git a/lisp/window.el b/lisp/window.el index 46a7dd08275..07e477d7799 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -5474,10 +5474,15 @@ element is BUFFER." (cond ((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 BUFFER already. Update WINDOW's quit-restore + ;; parameter, if any. + (let ((quit-restore (window-parameter window 'quit-restore))) + (when (consp quit-restore) + (setcar quit-restore 'same) + ;; The selected-window might have changed in + ;; between (Bug#20353). + (unless (memq (selected-window) '(window (nth 2 quit-restore))) + (setcar (cddr quit-restore) (selected-window))))) ;; WINDOW shows another buffer. (with-current-buffer (window-buffer window) (set-window-parameter