summaryrefslogtreecommitdiff
path: root/lisp/winner.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/winner.el')
-rw-r--r--lisp/winner.el16
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