doomemacs/core/lib/defuns-workgroup.el

108 lines
3.6 KiB
EmacsLisp
Raw Normal View History

2015-06-15 09:05:52 +02:00
;;; defuns-workgroup.el
;;;###autoload
(defun narf/wg-helm-switch-to-workgroup (name)
(wg-switch-to-workgroup (wg-get-workgroup name)))
;;;###autoload
(defun narf:helm-wg ()
(interactive)
2015-08-07 10:50:24 +02:00
(require 'helm)
2015-06-15 09:05:52 +02:00
(helm :sources '(narf/helm-source-wg)))
;;;###autoload
(defun narf/wg-projectile-switch-project ()
(let ((workgroup-name (file-name-nondirectory (directory-file-name (narf/project-root)))))
(wg-create-workgroup workgroup-name t)
(helm-projectile-find-file)))
;;;###autoload (autoload 'narf:save-session "defuns-workgroup" nil t)
(evil-define-command narf:save-session (&optional bang session-name)
(interactive "<!><a>")
(if session-name
(wg-save-session-as (concat wg-workgroup-directory session-name) (not bang))
(wg-save-session)))
;;;###autoload (autoload 'narf:load-session "defuns-workgroup" nil t)
(evil-define-command narf:load-session (&optional bang session-name)
(interactive "<!><a>")
(wg-open-session (if session-name
(concat wg-workgroup-directory session-name)
wg-session-file)))
;;;###autoload (autoload 'narf:workgroup-new "defuns-workgroup" nil t)
(evil-define-command narf:workgroup-new (bang name)
"Create a new workgroup. If BANG, clone the current one to it."
2015-06-15 09:05:52 +02:00
(interactive "<!><a>")
(unless name
(user-error "No name specified for new workgroup"))
(if bang
(wg-clone-workgroup (wg-current-workgroup) name)
(wg-create-workgroup name t)))
;;;###autoload (autoload 'narf:workgroup-rename "defuns-workgroup" nil t)
(evil-define-command narf:workgroup-rename (new-name)
(interactive "<a>")
(wg-rename-workgroup new-name))
;;;###autoload (autoload 'narf:workgroup-delete "defuns-workgroup" nil t)
(evil-define-command narf:workgroup-delete (bang &optional name)
(interactive "<!><a>")
(let ((wg-name name))
(when (or bang (eq name ""))
(setq wg-name (wg-read-workgroup-name)))
(let ((wg (wg-get-workgroup name)))
(if (eq wg (wg-current-workgroup))
(wg-kill-workgroup)
(wg-delete-workgroup wg))
(message "Deleted workgroup: %s" name))))
2015-06-15 09:05:52 +02:00
;;;###autoload
(defun narf:kill-other-workgroups ()
"Kill all other workgroups."
(interactive)
(let (workgroup (wg-current-workgroup))
(dolist (w (wg-workgroup-list))
(unless (wg-current-workgroup-p w)
(wg-kill-workgroup w)))))
2015-09-30 13:50:30 -04:00
;;;###autoload
(defun narf:workgroup-display ()
(interactive)
(when (wg-current-session t)
(message "%s"
(wg-display-internal
2015-09-30 13:50:30 -04:00
(lambda (workgroup index)
(if (not workgroup) wg-nowg-string
(wg-element-display
workgroup
(format "%d %s" (1+ index) (wg-workgroup-name workgroup))
2015-09-30 13:50:30 -04:00
'wg-current-workgroup-p
'wg-previous-workgroup-p)))
(wg-workgroup-list)))))
;;;###autoload (autoload 'narf:switch-to-workgroup-left "defuns-workgroup" nil t)
(evil-define-command narf:switch-to-workgroup-left (count)
(interactive "<c>")
(if count
(wg-switch-to-workgroup-at-index (1- count))
(wg-switch-to-workgroup-left))
(narf:workgroup-display))
2015-09-30 13:50:30 -04:00
;;;###autoload (autoload 'narf:switch-to-workgroup-right "defuns-workgroup" nil t)
(evil-define-command narf:switch-to-workgroup-right (count)
(interactive "<c>")
(if count
(wg-switch-to-workgroup-at-index (1- count))
(wg-switch-to-workgroup-right))
(narf:workgroup-display))
2015-09-30 13:50:30 -04:00
;;;###autoload
(defun narf:switch-to-workgroup-at-index (index)
(interactive)
(wg-switch-to-workgroup-at-index index)
(narf:workgroup-display))
2015-06-15 09:05:52 +02:00
(provide 'defuns-workgroup)
;;; defuns-workgroup.el ends here