]> git.eshelyaron.com Git - emacs.git/commitdiff
In display-buffer-record-window record selected window if necessary.
authorMartin Rudalics <rudalics@gmx.at>
Wed, 22 Apr 2015 09:17:27 +0000 (11:17 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Wed, 22 Apr 2015 09:17:27 +0000 (11:17 +0200)
* lisp/window.el (display-buffer-record-window): Store selected window
if it differs from 3rd element of 'quit-restore' parameter (Bug#20353).

lisp/window.el

index 46a7dd0827577d431cb8a9245901a0247123158b..07e477d7799568f52df173bdb0699b11da69dfa5 100644 (file)
@@ -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