Prevent doom buffer from sneaking into saved workgroups

This commit is contained in:
Henrik Lissner 2016-10-30 13:10:34 +01:00
parent 799ea3054d
commit efb2d30bb4
2 changed files with 12 additions and 5 deletions

View file

@ -12,6 +12,8 @@
"The name of the doom scratch buffer.") "The name of the doom scratch buffer.")
(defvar doom-buffer-edited nil (defvar doom-buffer-edited nil
"If non-nil, the scratch buffer has been edited.") "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 (define-derived-mode doom-mode fundamental-mode
(concat "v" doom-version) (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) (defun doom-reload-scratch-buffer (&optional dir)
"Update the DOOM scratch buffer (or create it, if it doesn't exist)." "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) (or (not doom-buffer-edited) dir)
(not (minibuffer-window-active-p (minibuffer-window)))) (not (minibuffer-window-active-p (minibuffer-window))))
(doom--reload-scratch-buffer dir))) (doom--reload-scratch-buffer dir)))

View file

@ -2,9 +2,12 @@
;;;###autoload ;;;###autoload
(defun doom|wg-cleanup () (defun doom|wg-cleanup ()
"Remove unsavable windows and buffers before we save the window
configuration."
(let (doom-buffer-inhibit-refresh)
(doom/popup-close-all) (doom/popup-close-all)
(when (and (featurep 'neotree) (neo-global--window-exists-p)) (when (and (featurep 'neotree) (neo-global--window-exists-p))
(neotree-hide))) (neotree-hide))))
;;;###autoload ;;;###autoload
(defun doom/wg-projectile-switch-project () (defun doom/wg-projectile-switch-project ()
@ -17,9 +20,9 @@
;;;###autoload (autoload 'doom:workgroup-save "defuns-workgroup" nil t) ;;;###autoload (autoload 'doom:workgroup-save "defuns-workgroup" nil t)
(evil-define-command doom:workgroup-save (&optional bang session-name) (evil-define-command doom:workgroup-save (&optional bang session-name)
(interactive "<!><a>") (interactive "<!><a>")
(doom|wg-cleanup)
(unless (wg-workgroup-list) (unless (wg-workgroup-list)
(wg-create-workgroup wg-first-wg-name)) (wg-create-workgroup wg-first-wg-name))
(doom|wg-cleanup)
(wg-save-session-as (if session-name (wg-save-session-as (if session-name
(concat wg-workgroup-directory session-name) (concat wg-workgroup-directory session-name)
(if bang (if bang
@ -29,6 +32,7 @@
;;;###autoload (autoload 'doom:workgroup-load "defuns-workgroup" nil t) ;;;###autoload (autoload 'doom:workgroup-load "defuns-workgroup" nil t)
(evil-define-command doom:workgroup-load (&optional bang session-name) (evil-define-command doom:workgroup-load (&optional bang session-name)
(interactive "<!><a>") (interactive "<!><a>")
(doom|wg-cleanup)
(let ((session-file (if session-name (let ((session-file (if session-name
(concat wg-workgroup-directory session-name) (concat wg-workgroup-directory session-name)
(let ((sess (concat wg-workgroup-directory (f-filename (doom/project-root))))) (let ((sess (concat wg-workgroup-directory (f-filename (doom/project-root)))))