diff --git a/core/core-ui.el b/core/core-ui.el index fa5a4f5f173..bb0b25c54a7 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -246,29 +246,29 @@ windows, switch to `doom-fallback-buffer'. Otherwise, delegate to original (message "Can't kill the fallback buffer.") t) ((doom-real-buffer-p buf) - (let ((visible-p (delq (selected-window) (get-buffer-window-list buf nil t))) - (doom-inhibit-switch-buffer-hooks t) - (inhibit-redisplay t) - buffer-list-update-hook) + (let ((visible-p (delq (selected-window) (get-buffer-window-list buf nil t)))) (unless visible-p (when (and (buffer-modified-p buf) (not (y-or-n-p (format "Buffer %s is modified; kill anyway?" buf)))) (user-error "Aborted"))) - (when (or ;; if there aren't more real buffers than visible buffers, - ;; then there are no real, non-visible buffers left. - (not (cl-set-difference (doom-real-buffer-list) - (doom-visible-buffers))) - ;; if we end up back where we start (or previous-buffer - ;; returns nil), we have nowhere left to go - (memq (switch-to-prev-buffer nil t) (list buf 'nil))) - (switch-to-buffer (doom-fallback-buffer))) - (unless visible-p - (with-current-buffer buf - (restore-buffer-modified-p nil)) - (kill-buffer buf)) - (run-hooks 'buffer-list-update-hook) + (let ((inhibit-redisplay t) + (doom-inhibit-switch-buffer-hooks t) + buffer-list-update-hook) + (when (or ;; if there aren't more real buffers than visible buffers, + ;; then there are no real, non-visible buffers left. + (not (cl-set-difference (doom-real-buffer-list) + (doom-visible-buffers))) + ;; if we end up back where we start (or previous-buffer + ;; returns nil), we have nowhere left to go + (memq (switch-to-prev-buffer nil t) (list buf 'nil))) + (switch-to-buffer (doom-fallback-buffer))) + (unless visible-p + (with-current-buffer buf + (restore-buffer-modified-p nil)) + (kill-buffer buf))) + (run-hooks 'doom-switch-buffer-hook 'buffer-list-update-hook) t)))))