From 4354cf73d7a5bdd18a5e5b385a06d9d140e8e472 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Fri, 31 Jan 2025 09:31:05 +0100 Subject: [PATCH] In 'replace-buffer-in-windows' try to preserve current buffer (Bug#75949) * lisp/window.el (replace-buffer-in-windows): Preserve current buffer when 'kill-buffer-quit-windows' is non-nil and a window showing BUFFER shall be quit. Running 'kill-buffer-hook' relies on it (Bug#75949). --- lisp/window.el | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/window.el b/lisp/window.el index b91c45226a1..74bb2985254 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -5224,7 +5224,12 @@ buffer by itself." (cond ((window-minibuffer-p window)) (kill-buffer-quit-windows - (quit-restore-window window 'killing)) + ;; Try to preserve the current buffer set up by 'kill-buffer' + ;; before running the hooks on 'kill-buffer-hook' (Bug#75949). + (let ((current-buffer (current-buffer))) + (quit-restore-window window 'killing) + (when (buffer-live-p current-buffer) + (set-buffer current-buffer)))) (t (let ((dedicated-side (eq (window-dedicated-p window) 'side))) (when (or dedicated-side (not (window--delete window t 'kill)))