emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master f974317: In display-buffer-record-window record sel


From: Martin Rudalics
Subject: [Emacs-diffs] master f974317: In display-buffer-record-window record selected window if necessary.
Date: Wed, 22 Apr 2015 09:18:52 +0000

branch: master
commit f974317897441f638808cbcfecb2c8fd1c0281ec
Author: Martin Rudalics <address@hidden>
Commit: Martin Rudalics <address@hidden>

    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).
---
 lisp/window.el |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/lisp/window.el b/lisp/window.el
index 46a7dd0..07e477d 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]