Refactor kill-this-buffer advice
And prevent it from switching to fallback buffer too early. Again.
This commit is contained in:
parent
ee24aba034
commit
c5837440d6
1 changed files with 14 additions and 9 deletions
|
@ -545,19 +545,24 @@ instead)."
|
||||||
|
|
||||||
(defun doom*switch-to-fallback-buffer-maybe (orig-fn)
|
(defun doom*switch-to-fallback-buffer-maybe (orig-fn)
|
||||||
"Advice for `kill-this-buffer'. If in a dedicated window, delete it. If there
|
"Advice for `kill-this-buffer'. If in a dedicated window, delete it. If there
|
||||||
are no real buffers left, switch to `doom-fallback-buffer'. Otherwise, delegate
|
are no real buffers left OR if all remaining buffers are visible in other
|
||||||
to original `kill-this-buffer'."
|
windows, switch to `doom-fallback-buffer'. Otherwise, delegate to original
|
||||||
|
`kill-this-buffer'."
|
||||||
(let ((buf (current-buffer)))
|
(let ((buf (current-buffer)))
|
||||||
(cond ((window-dedicated-p)
|
(cond ((window-dedicated-p)
|
||||||
(delete-window))
|
(delete-window))
|
||||||
|
((eq buf (doom-fallback-buffer))
|
||||||
|
(message "Can't kill the fallback buffer."))
|
||||||
((doom-real-buffer-p buf)
|
((doom-real-buffer-p buf)
|
||||||
(or (kill-buffer buf)
|
(when (or ;; if there aren't more real buffers than visible buffers,
|
||||||
(previous-buffer))
|
;; then there are no real, non-visible buffers left.
|
||||||
;; if there are no (real) buffers left to switch to, land on the
|
(not (cl-set-difference (doom-real-buffer-list)
|
||||||
;; fallback buffer.
|
(doom-visible-buffers)))
|
||||||
(unless (cl-set-difference (doom-real-buffer-list)
|
;; if we end up back where we start (or previous-buffer
|
||||||
(doom-visible-buffers))
|
;; returns nil), we have nowhere left to go
|
||||||
(switch-to-buffer (doom-fallback-buffer))))
|
(memq (previous-buffer) (list buf 'nil)))
|
||||||
|
(switch-to-buffer (doom-fallback-buffer)))
|
||||||
|
(kill-buffer buf))
|
||||||
(t
|
(t
|
||||||
(funcall orig-fn)))))
|
(funcall orig-fn)))))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue