From 5ef60c8521d6564b801331272424153c36a446d0 Mon Sep 17 00:00:00 2001 From: Bar Magal Date: Sat, 13 Jun 2015 10:57:35 +0300 Subject: [PATCH] window-purpose layer: fix for opening new eyebrowse workspace Make sure spacemacs home buffers is the only window in the frame after creating a new eyebrowse workspace. --- .../window-purpose/packages.el | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/contrib/!window-management/window-purpose/packages.el b/contrib/!window-management/window-purpose/packages.el index 9dfa61c76d61..5ac90addecc2 100644 --- a/contrib/!window-management/window-purpose/packages.el +++ b/contrib/!window-management/window-purpose/packages.el @@ -104,4 +104,28 @@ PURPOSE defaults to the purpose of the current buffer." (defun window-purpose/post-init-window-purpose () ;; *LV* buffer is used by corelv.el - (push "^\\*LV\\*$" purpose-action-function-ignore-buffer-names)) + (push "^\\*LV\\*$" purpose-action-function-ignore-buffer-names) + + (defvar window-purpose--eyebrowse-new-workspace eyebrowse-new-workspace) + + (defun window-purpose/new-workspace () + "Create a new eyebrowse workspace." + ;; partially copied from `eyebrowse-switch-to-window-config' + (cond + ((stringp window-purpose--eyebrowse-new-workspace) + (switch-to-buffer (get-buffer-create window-purpose--eyebrowse-new-workspace))) + ((functionp window-purpose--eyebrowse-new-workspace) + (funcall window-purpose--eyebrowse-new-workspace)) + (t (switch-to-buffer "*scratch*"))) + + ;; in case opening the new buffer splitted the frame (e.g. + ;; `eyebrowse-switch-to-window-config' was called from a purpose-dedicated + ;; buffer) + (delete-other-windows)) + + (defun window-purpose/sync-eyebrowse () + (if purpose-mode + (setq eyebrowse-new-workspace #'window-purpose/new-workspace) + (setq eyebrowse-new-workspace window-purpose--eyebrowse-new-workspace))) + (add-hook 'purpose-mode-hook #'window-purpose/sync-eyebrowse) + (window-purpose/sync-eyebrowse))