From 374940b959a164bfe7154cdc57b451f71d1fced3 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 15 Aug 2019 01:07:45 -0400 Subject: [PATCH] Persist scratch buffers more proactively Prior to this change, scratch buffers were saved only when Emacs is killed. In cases where Emacs doesn't die properly, you'd lose your scratch contents. Now, they are persisted as soon as you close them. --- core/autoload/scratch.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/autoload/scratch.el b/core/autoload/scratch.el index 541497f7d..a93456ebc 100644 --- a/core/autoload/scratch.el +++ b/core/autoload/scratch.el @@ -55,6 +55,7 @@ following: (funcall mode))) (cl-pushnew (current-buffer) doom-scratch-buffers) (add-hook 'kill-buffer-hook #'doom-persist-scratch-buffer-h nil 'local) + (add-hook 'doom-switch-buffer-hook #'doom-persist-scratch-buffers-after-switch-h) (run-hooks 'doom-scratch-buffer-created-hook) (current-buffer))) @@ -80,6 +81,13 @@ following: (with-current-buffer buffer (doom-persist-scratch-buffer-h)))) +;;;###autoload +(defun doom-persist-scratch-buffers-after-switch-h () + "Kill scratch buffers when they are no longer visible, saving them to disk." + (unless (cl-some #'get-buffer-window doom-scratch-buffers) + (mapc #'kill-buffer doom-scratch-buffers) + (remove-hook 'doom-switch-buffer-hook #'doom-persist-scratch-buffers-after-switch-h))) + ;;;###autoload (unless noninteractive (add-hook 'kill-emacs-hook #'doom-persist-scratch-buffers-h))