From: Lars Ingebrigtsen Date: Sun, 25 Apr 2021 17:47:06 +0000 (+0200) Subject: Revert window/winner changes (Revert 0454bfd3313) X-Git-Tag: emacs-28.0.90~2728 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=8f63f0078a23421eada97b4da51b9308b82532ce;p=emacs.git Revert window/winner changes (Revert 0454bfd3313) See bug#23621 for an explanation. --- diff --git a/lisp/window.el b/lisp/window.el index 06d3e43f368..036eb271ee8 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -3755,8 +3755,6 @@ WINDOW must be a valid window and defaults to the selected one. If the option `window-resize-pixelwise' is non-nil minimize WINDOW pixelwise." (interactive) - (when switch-to-buffer-preserve-window-point - (window--before-delete-windows window)) (setq window (window-normalize-window window)) (window-resize window @@ -4142,41 +4140,6 @@ frame can be safely deleted." (throw 'done t) (setq parent (window-parent parent)))))))) -;; This function is called by `delete-window' and -;; `delete-other-windows' when `switch-to-buffer-preserve-window-point' -;; evaluates non-nil: it allows `winner-undo' to restore the -;; buffer point from deleted windows (Bug#23621). -(defun window--before-delete-windows (&optional window) - "Update `window-prev-buffers' before delete a window. -Optional arg WINDOW, if non-nil, update WINDOW-START and POS -in `window-prev-buffers' for all windows displaying same -buffer as WINDOW. Otherwise, update `window-prev-buffers' for -all windows. - -The new values for WINDOW-START and POS are those -returned by `window-start' and `window-point' respectively. - -This function is called only if `switch-to-buffer-preserve-window-point' -evaluates non-nil." - (dolist (win (window-list nil 'no-minibuf)) - (let* ((buf (window-buffer (or window win))) - (start (window-start win)) - (pos (window-point win)) - (entry (assq buf (window-prev-buffers win)))) - (cond (entry - (let ((marker (nth 2 entry))) - (unless (= pos marker) - (set-marker (nth 1 entry) start buf) - (set-marker marker pos buf)))) - (t - (let ((prev-buf (window-prev-buffers win)) - (start-m (make-marker)) - (pos-m (make-marker))) - (set-marker start-m start buf) - (set-marker pos-m pos buf) - (push (list buf start-m pos-m) prev-buf) - (set-window-prev-buffers win prev-buf))))))) - (defun delete-window (&optional window) "Delete WINDOW. WINDOW must be a valid window and defaults to the selected one. @@ -4195,8 +4158,6 @@ argument. Signal an error if WINDOW is either the only window on its frame, the last non-side window, or part of an atomic window that is its frame's root window." (interactive) - (when switch-to-buffer-preserve-window-point - (window--before-delete-windows)) (setq window (window-normalize-window window)) (let* ((frame (window-frame window)) (function (window-parameter window 'delete-window)) diff --git a/lisp/winner.el b/lisp/winner.el index f30fa6cf5cf..8062fbae904 100644 --- a/lisp/winner.el +++ b/lisp/winner.el @@ -283,17 +283,8 @@ You may want to include buffer names such as *Help*, *Apropos*, ;; Restore points (dolist (win (winner-sorted-window-list)) (unless (and (pop alive) - (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))) + (setf (window-point win) + (winner-get-point (window-buffer win) win)) (not (or (member (buffer-name (window-buffer win)) winner-boring-buffers) (and winner-boring-buffers-regexp