From 9ea0821f8161f1bdb80a13e8dbbb078e15e14250 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 3 Mar 2016 01:36:42 -0500 Subject: [PATCH] Polish workgroups integration --- core/core-sessions.el | 10 +++++----- core/defuns/defuns-workgroup.el | 22 +++++++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/core/core-sessions.el b/core/core-sessions.el index 9f1e27347..51f66773c 100644 --- a/core/core-sessions.el +++ b/core/core-sessions.el @@ -11,7 +11,7 @@ :init (setq-default wg-session-file (expand-file-name "wg-default" narf-temp-dir) - wg-workgroup-directory (expand-file-name "workgroups" narf-temp-dir) + wg-workgroup-directory (expand-file-name "workgroups/" narf-temp-dir) wg-first-wg-name "*untitled*" wg-session-load-on-start t wg-mode-line-display-on nil @@ -45,10 +45,10 @@ (defvar narf-wg-frames '() "A list of all the frames opened as separate workgroups. See -lib/defuns-workgroups.el.") +defuns/defuns-workgroups.el.") (defvar narf-wg-names '() "A list of fixed names for workgroups. If a name is set, workgroup names aren't - automatically renamed to the project name.") +automatically renamed to the project name.") ;; Remember the set names in between sessions (add-to-list 'savehist-additional-variables 'narf-wg-names) @@ -60,8 +60,8 @@ lib/defuns-workgroups.el.") ;; Save the session every 20 minutes (defvar narf-wg-autosave-interval 1200) (narf|wg-autosave-enable) - (add-hook! focus-out 'narf|wg-autosave-disable) - (add-hook! focus-in 'narf|wg-autosave-enable) + (add-hook 'focus-out-hook 'narf|wg-autosave-disable) + (add-hook 'focus-in-hook 'narf|wg-autosave-enable) ;; Don't mess with the modeline! (advice-add 'wg-change-modeline :override 'ignore) diff --git a/core/defuns/defuns-workgroup.el b/core/defuns/defuns-workgroup.el index 6ae0be205..89f1afaed 100644 --- a/core/defuns/defuns-workgroup.el +++ b/core/defuns/defuns-workgroup.el @@ -1,8 +1,6 @@ ;;; defuns-workgroup.el ;;;###autoload -(defun narf/wg-helm-switch-to-workgroup (name) - (wg-switch-to-workgroup (wg-get-workgroup name))) ;;;###autoload (defun narf/wg-projectile-switch-project () @@ -27,17 +25,26 @@ wg-session-file)) (narf/workgroup-display t)) +;;;###autoload +(defun narf/clear-sessions () + "Delete all session files." + (interactive) + (mapc 'delete-file (f-glob (expand-file-name "*" wg-workgroup-directory)))) + ;;;###autoload (autoload 'narf:workgroup-new "defuns-workgroup" nil t) (evil-define-command narf:workgroup-new (bang name &optional silent) "Create a new workgroup. If BANG, clone the current one to it." (interactive "") (unless name - (setq name (format "#%s" (length (wg-workgroup-list))))) - (if bang - (wg-clone-workgroup (wg-current-workgroup) name) - (wg-create-workgroup name t)) + (setq name (format "#%s" (1+ (length (wg-workgroup-list)))))) + (let ((new-wg (wg-get-workgroup name t))) + (when (and new-wg bang) + (wg-delete-workgroup new-wg)) + (setq new-wg (wg-make-and-add-workgroup name t)) + (add-to-list 'narf-wg-names (wg-workgroup-uid new-wg)) + (wg-switch-to-workgroup new-wg)) (unless silent - (narf--workgroup-display (wg-previous-workgroup) + (narf--workgroup-display (wg-previous-workgroup t) (format "Created %s" name) 'success))) @@ -63,6 +70,7 @@ (when bang (setq wg-name (wg-read-workgroup-name))) (let ((wg (wg-get-workgroup name))) + (setq narf-wg-names (delete (wg-workgroup-uid wg) narf-wg-names)) (if (eq wg current-wg) (wg-kill-workgroup) (wg-delete-workgroup wg))