Polish workgroups integration

This commit is contained in:
Henrik Lissner 2016-03-03 01:36:42 -05:00
parent a9eaba309d
commit 9ea0821f81
2 changed files with 20 additions and 12 deletions

View file

@ -11,7 +11,7 @@
:init :init
(setq-default (setq-default
wg-session-file (expand-file-name "wg-default" narf-temp-dir) 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-first-wg-name "*untitled*"
wg-session-load-on-start t wg-session-load-on-start t
wg-mode-line-display-on nil wg-mode-line-display-on nil
@ -45,10 +45,10 @@
(defvar narf-wg-frames '() (defvar narf-wg-frames '()
"A list of all the frames opened as separate workgroups. See "A list of all the frames opened as separate workgroups. See
lib/defuns-workgroups.el.") defuns/defuns-workgroups.el.")
(defvar narf-wg-names '() (defvar narf-wg-names '()
"A list of fixed names for workgroups. If a name is set, workgroup names aren't "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 ;; Remember the set names in between sessions
(add-to-list 'savehist-additional-variables 'narf-wg-names) (add-to-list 'savehist-additional-variables 'narf-wg-names)
@ -60,8 +60,8 @@ lib/defuns-workgroups.el.")
;; Save the session every 20 minutes ;; Save the session every 20 minutes
(defvar narf-wg-autosave-interval 1200) (defvar narf-wg-autosave-interval 1200)
(narf|wg-autosave-enable) (narf|wg-autosave-enable)
(add-hook! focus-out 'narf|wg-autosave-disable) (add-hook 'focus-out-hook 'narf|wg-autosave-disable)
(add-hook! focus-in 'narf|wg-autosave-enable) (add-hook 'focus-in-hook 'narf|wg-autosave-enable)
;; Don't mess with the modeline! ;; Don't mess with the modeline!
(advice-add 'wg-change-modeline :override 'ignore) (advice-add 'wg-change-modeline :override 'ignore)

View file

@ -1,8 +1,6 @@
;;; defuns-workgroup.el ;;; defuns-workgroup.el
;;;###autoload ;;;###autoload
(defun narf/wg-helm-switch-to-workgroup (name)
(wg-switch-to-workgroup (wg-get-workgroup name)))
;;;###autoload ;;;###autoload
(defun narf/wg-projectile-switch-project () (defun narf/wg-projectile-switch-project ()
@ -27,17 +25,26 @@
wg-session-file)) wg-session-file))
(narf/workgroup-display t)) (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) ;;;###autoload (autoload 'narf:workgroup-new "defuns-workgroup" nil t)
(evil-define-command narf:workgroup-new (bang name &optional silent) (evil-define-command narf:workgroup-new (bang name &optional silent)
"Create a new workgroup. If BANG, clone the current one to it." "Create a new workgroup. If BANG, clone the current one to it."
(interactive "<!><a>") (interactive "<!><a>")
(unless name (unless name
(setq name (format "#%s" (length (wg-workgroup-list))))) (setq name (format "#%s" (1+ (length (wg-workgroup-list))))))
(if bang (let ((new-wg (wg-get-workgroup name t)))
(wg-clone-workgroup (wg-current-workgroup) name) (when (and new-wg bang)
(wg-create-workgroup name t)) (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 (unless silent
(narf--workgroup-display (wg-previous-workgroup) (narf--workgroup-display (wg-previous-workgroup t)
(format "Created %s" name) (format "Created %s" name)
'success))) 'success)))
@ -63,6 +70,7 @@
(when bang (when bang
(setq wg-name (wg-read-workgroup-name))) (setq wg-name (wg-read-workgroup-name)))
(let ((wg (wg-get-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) (if (eq wg current-wg)
(wg-kill-workgroup) (wg-kill-workgroup)
(wg-delete-workgroup wg)) (wg-delete-workgroup wg))