diff --git a/core/autoload/buffers.el b/core/autoload/buffers.el index 33cc2064a..67016cb2d 100644 --- a/core/autoload/buffers.el +++ b/core/autoload/buffers.el @@ -185,23 +185,6 @@ See `doom-real-buffer-p' for what 'real' means." (delete-window window))) (kill-buffer buffer)) -;;;###autoload -(defun doom-kill-process-buffers () - "Kill all processes that have no visible associated buffers. Return number of -processes killed." - (interactive) - (let ((n 0)) - (dolist (p (process-list)) - (let ((process-buffer (process-buffer p))) - (when (and (process-live-p p) - (not (string= (process-name p) "server")) - (or (not process-buffer) - (and (bufferp process-buffer) - (not (buffer-live-p process-buffer))))) - (delete-process p) - (cl-incf n)))) - n)) - ;;;###autoload (defun doom-kill-matching-buffers (pattern &optional buffer-list) "Kill all buffers (in current workspace OR in BUFFER-LIST) that match the @@ -281,17 +264,36 @@ project." (message "Killed %s buffers" n)))) ;;;###autoload -(defun doom/cleanup-buffers (&optional all-p) - "Clean up buried and inactive process buffers in the current workspace." +(defun doom/cleanup-session (&optional all-p) + "Clean up buried buries and orphaned processes in the current workspace. If +ALL-P (universal argument), clean them up globally." (interactive "P") (run-hooks 'doom-cleanup-hook) (let ((buffers (doom-buried-buffers (if all-p (buffer-list)))) - (n 0)) + (n 0) + kill-buffer-query-functions) (mapc #'kill-buffer buffers) - (setq n (+ n (length buffers) (doom-kill-process-buffers))) + (setq n (+ n (length buffers) (doom/cleanup-processes))) (when (called-interactively-p 'interactive) (message "Cleaned up %s buffers" n)))) +;;;###autoload +(defun doom/cleanup-processes () + "Kill all processes that have no visible associated buffers. Return number of +processes killed." + (interactive) + (let ((n 0)) + (dolist (p (process-list)) + (let ((process-buffer (process-buffer p))) + (when (and (process-live-p p) + (not (string= (process-name p) "server")) + (or (not process-buffer) + (and (bufferp process-buffer) + (not (buffer-live-p process-buffer))))) + (delete-process p) + (cl-incf n)))) + n)) + ;;;###autoload (defun doom/next-buffer () "Switch to the next real buffer, skipping non-real buffers. See diff --git a/core/test/autoload-buffers.el b/core/test/autoload-buffers.el index abf5c4245..deefe679f 100644 --- a/core/test/autoload-buffers.el +++ b/core/test/autoload-buffers.el @@ -131,4 +131,4 @@ ;; TODO doom/kill-all-buffers ;; TODO doom/kill-other-buffers ;; TODO doom/kill-matching-buffers -;; TODO doom/cleanup-buffers +;; TODO doom/cleanup-session diff --git a/modules/feature/workspaces/autoload/workspaces.el b/modules/feature/workspaces/autoload/workspaces.el index 8566cd860..7aff9382c 100644 --- a/modules/feature/workspaces/autoload/workspaces.el +++ b/modules/feature/workspaces/autoload/workspaces.el @@ -310,7 +310,7 @@ workspace to delete." (doom/kill-all-buffers) (let ((fallback-buf (doom-fallback-buffer))) (switch-to-buffer fallback-buf) - (doom/cleanup-buffers))) + (doom/cleanup-session))) ;;;###autoload (defun +workspace/kill-session-and-quit ()