From 0418c2ce9891f1eafbb1f131340777948f8a8c92 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 8 Feb 2017 02:19:01 -0500 Subject: [PATCH] Refactor doom-kill-buffer --- core/autoload/buffers.el | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/core/autoload/buffers.el b/core/autoload/buffers.el index 981b7deac..631095392 100644 --- a/core/autoload/buffers.el +++ b/core/autoload/buffers.el @@ -179,6 +179,7 @@ buffer, but buries the buffer if it is present in another window. See `doom-real-buffer-p' for what 'real' means." (let* ((old-project (doom-project-root)) (buffer (or buffer (current-buffer))) + (buffer-win (get-buffer-window buffer)) (only-buffer-window-p (= (length (get-buffer-window-list buffer nil t)) 1))) (with-current-buffer buffer (when (and only-buffer-window-p @@ -188,13 +189,19 @@ See `doom-real-buffer-p' for what 'real' means." (yes-or-no-p "Buffer is unsaved, save it?")) (save-buffer) (set-buffer-modified-p nil))) - (doom--cycle-real-buffers -1) - (unless (eq (current-buffer) buffer) - (when only-buffer-window-p - (kill-buffer buffer) - (unless (doom-real-buffer-p) - (doom--cycle-real-buffers -1)))) - (eq (current-buffer) buffer)))) + (if (window-dedicated-p buffer-win) + (unless (window--delete buffer-win t t) + (split-window buffer-win) + (window--delete buffer-win t t)) + (doom--cycle-real-buffers -1) + (unless (eq (current-buffer) buffer) + (when only-buffer-window-p + (kill-buffer buffer) + (unless (doom-real-buffer-p) + (doom--cycle-real-buffers -1)))) + (when buffer-win + (unrecord-window-buffer buffer-win buffer)) + (eq (current-buffer) buffer))))) ;;;###autoload (defun doom-kill-buffer-and-windows (buffer)