diff options
Diffstat (limited to 'lisp/winner.el')
-rw-r--r-- | lisp/winner.el | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lisp/winner.el b/lisp/winner.el index 1070e26df51..92dd9c0f122 100644 --- a/lisp/winner.el +++ b/lisp/winner.el @@ -291,8 +291,17 @@ You may want to include buffer names such as *Help*, *Apropos*, ;; Restore points (dolist (win (winner-sorted-window-list)) (unless (and (pop alive) - (setf (window-point win) - (winner-get-point (window-buffer win) win)) + (let* ((buf (window-buffer win)) + (pos (winner-get-point (window-buffer win) win)) + (entry (assq buf (window-prev-buffers win)))) + ;; Try to restore point of buffer in the selected + ;; window (Bug#23621). + (let ((marker (nth 2 entry))) + (when (and switch-to-buffer-preserve-window-point + marker + (not (= marker pos))) + (setq pos marker)) + (setf (window-point win) pos))) (not (member (buffer-name (window-buffer win)) winner-boring-buffers))) (push win xwins))) ; delete this window @@ -345,9 +354,6 @@ You may want to include buffer names such as *Help*, *Apropos*, ;;;###autoload (define-minor-mode winner-mode "Toggle Winner mode on or off. -With a prefix argument ARG, enable Winner mode if ARG is -positive, and disable it otherwise. If called from Lisp, enable -the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'. Winner mode is a global minor mode that records the changes in the window configuration (i.e. how the frames are partitioned |