diff --git a/core/autoload/buffers.el b/core/autoload/buffers.el index 9753836c4..e1c5147bb 100644 --- a/core/autoload/buffers.el +++ b/core/autoload/buffers.el @@ -179,11 +179,9 @@ DONT-SAVE is non-nil. See `doom-real-buffer-p' for what 'real' means." (setq buffer (or buffer (current-buffer))) (when (and (bufferp buffer) (buffer-live-p buffer)) - (let ((buffer-win (get-buffer-window buffer)) - (only-buffer-window-p (= 1 (length (get-buffer-window-list buffer nil t))))) + (let ((buffer-win (get-buffer-window buffer))) ;; deal with unsaved buffers - (when (and only-buffer-window-p - (buffer-file-name buffer) + (when (and (buffer-file-name buffer) (buffer-modified-p buffer)) (with-current-buffer buffer (if (and (not dont-save) @@ -201,10 +199,9 @@ See `doom-real-buffer-p' for what 'real' means." (doom--cycle-real-buffers -1) (when buffer-win (unrecord-window-buffer buffer-win buffer)) - (when only-buffer-window-p - (kill-buffer buffer))) - (not (eq (current-buffer) buffer))) - (kill-buffer buffer))))) + (kill-buffer buffer))) + (kill-buffer buffer))) + (not (eq (current-buffer) buffer)))) ;;;###autoload (defun doom-force-kill-buffer (&optional buffer dont-save) diff --git a/core/core-ui.el b/core/core-ui.el index 3ed1cf764..90342af68 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -228,6 +228,12 @@ local value, whether or not it's permanent-local. Therefore, we cycle (add-hook! '(doom-post-init-hook minibuffer-setup-hook) #'doom|no-fringes-in-minibuffer) +(defun doom|protect-visible-buffers () + "Don't kill the current buffer if it is visible in another window (bury it +instead)." + (not (and after-init-time (get-buffer-window-list nil t)))) +(add-hook 'kill-buffer-query-functions #'doom|protect-visible-buffers) + ;; ;; Plugins