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)))))