diff --git a/core/core-scratch.el b/core/core-scratch.el index f6976f620..a0bdc78da 100644 --- a/core/core-scratch.el +++ b/core/core-scratch.el @@ -12,6 +12,8 @@ "The name of the doom scratch buffer.") (defvar doom-buffer-edited nil "If non-nil, the scratch buffer has been edited.") +(defvar doom-buffer-inhibit-refresh nil + "If non-nil, the doom buffer won't be refreshed.") (define-derived-mode doom-mode fundamental-mode (concat "v" doom-version) @@ -45,7 +47,8 @@ buffer. Without this, it would refuse to split, saying 'too small to split'." (defun doom-reload-scratch-buffer (&optional dir) "Update the DOOM scratch buffer (or create it, if it doesn't exist)." - (when (and (get-buffer-window-list doom-buffer nil t) + (when (and (not doom-buffer-inhibit-refresh) + (get-buffer-window-list doom-buffer nil t) (or (not doom-buffer-edited) dir) (not (minibuffer-window-active-p (minibuffer-window)))) (doom--reload-scratch-buffer dir))) diff --git a/core/defuns/defuns-workgroup.el b/core/defuns/defuns-workgroup.el index 82b5736a3..0c764ea41 100644 --- a/core/defuns/defuns-workgroup.el +++ b/core/defuns/defuns-workgroup.el @@ -2,9 +2,12 @@ ;;;###autoload (defun doom|wg-cleanup () - (doom/popup-close-all) - (when (and (featurep 'neotree) (neo-global--window-exists-p)) - (neotree-hide))) + "Remove unsavable windows and buffers before we save the window +configuration." + (let (doom-buffer-inhibit-refresh) + (doom/popup-close-all) + (when (and (featurep 'neotree) (neo-global--window-exists-p)) + (neotree-hide)))) ;;;###autoload (defun doom/wg-projectile-switch-project () @@ -17,9 +20,9 @@ ;;;###autoload (autoload 'doom:workgroup-save "defuns-workgroup" nil t) (evil-define-command doom:workgroup-save (&optional bang session-name) (interactive "") + (doom|wg-cleanup) (unless (wg-workgroup-list) (wg-create-workgroup wg-first-wg-name)) - (doom|wg-cleanup) (wg-save-session-as (if session-name (concat wg-workgroup-directory session-name) (if bang @@ -29,6 +32,7 @@ ;;;###autoload (autoload 'doom:workgroup-load "defuns-workgroup" nil t) (evil-define-command doom:workgroup-load (&optional bang session-name) (interactive "") + (doom|wg-cleanup) (let ((session-file (if session-name (concat wg-workgroup-directory session-name) (let ((sess (concat wg-workgroup-directory (f-filename (doom/project-root)))))