diff --git a/init.el b/init.el
index f3a43d74a..eb354a70e 100644
--- a/init.el
+++ b/init.el
@@ -88,6 +88,7 @@
;; init-rust
;; init-vala
init-web
+ init-workgroups
init-yasnippet ; type for me
init-youtube ; tools for youtube vids
diff --git a/init/init-project.el b/init/init-project.el
index 877eabe2d..3cdb1d7ca 100644
--- a/init/init-project.el
+++ b/init/init-project.el
@@ -11,33 +11,24 @@
(kbd "TAB") 'neotree-enter
(kbd "RET") 'neotree-enter))))
-(use-package perspective
- :init (persp-mode 1)
- :config
- (progn
- (defun my-kill-persp ()
- (interactive)
- (persp-kill (persp-name persp-curr)))
- (evil-ex-define-cmd "k[ill]persp" 'my-kill-persp)))
+;; (use-package dired
+;; :disabled t
+;; :config
+;; (progn
+;; (setq dired-recursive-deletes 'always
+;; dired-recursive-copies 'always
+;; dired-auto-revert-buffer t
-(use-package dired
- :disabled t
- :config
- (progn
- (setq dired-recursive-deletes 'always
- dired-recursive-copies 'always
- dired-auto-revert-buffer t
+;; ;; if there is a dired buffer displayed in the next
+;; ;; window, use its current subdir, instead of the
+;; ;; current subdir of this dired buffer
+;; dired-dwim-target t)
- ;; if there is a dired buffer displayed in the next
- ;; window, use its current subdir, instead of the
- ;; current subdir of this dired buffer
- dired-dwim-target t)
+;; (push '(dired-mode :position bottom :height 0.5 :stick t) popwin:special-display-config)
- (push '(dired-mode :position bottom :height 0.5 :stick t) popwin:special-display-config)
-
- (add-hook! 'dired-mode-hook
- (use-package 'dired+ :config (toggle-diredp-find-file-reuse-dir 1)))))
+;; (add-hook! 'dired-mode-hook
+;; (use-package 'dired+ :config (toggle-diredp-find-file-reuse-dir 1)))))
(provide 'init-project)
diff --git a/init/init-workgroups.el b/init/init-workgroups.el
new file mode 100644
index 000000000..1ca6afd9f
--- /dev/null
+++ b/init/init-workgroups.el
@@ -0,0 +1,61 @@
+(use-package workgroups2
+ :config
+ (progn
+ (setq wg-session-file "~/.emacs.d/workgroups/.default")
+
+ (setq wg-session-load-on-start t)
+
+ ;; What to do on Emacs exit / workgroups-mode exit?
+ (setq wg-emacs-exit-save-behavior 'save) ; Options: 'save 'ask nil
+ (setq wg-workgroups-mode-exit-save-behavior 'save) ; Options: 'save 'ask nil
+
+ (setq wg-mode-line-display-on nil) ; Default: (not (featurep 'powerline))
+ (setq wg-flag-modified t) ; Display modified flags as well
+ (setq wg-mode-line-decor-left-brace "["
+ wg-mode-line-decor-right-brace "]" ; how to surround it
+ wg-mode-line-decor-divider ":")
+ (setq wg-mode-line-only-name t)
+
+ (evil-define-command my:save-session (&optional bang session-name)
+ (interactive "")
+ (if session-name
+ (wg-save-session-as (concat (file-name-directory wg-session-file) session-name) (not bang))
+ (wg-save-session)))
+
+ (evil-define-command my:load-session (&optional bang session-name)
+ (interactive "")
+ (wg-open-session (if session-name
+ (concat (file-name-directory wg-session-file) session-name)
+ wg-session-file)))
+
+ (evil-define-command my:rename-workgroup (new-name)
+ (interactive "")
+ (wg-rename-workgroup new-name))
+
+ (evil-ex-define-cmd "l[oad]" 'my:load-session)
+ (evil-ex-define-cmd "s[ave]" 'my:save-session)
+ (evil-ex-define-cmd "wn[ext]" 'wg-switch-to-workgroup-right)
+ (evil-ex-define-cmd "wp[rev]" 'wg-switch-to-workgroup-left)
+ (evil-ex-define-cmd "wre[name]" 'my:rename-workgroup)
+ (evil-ex-define-cmd "k[ill]w" 'wg-kill-workgroup-and-buffers)
+ (evil-ex-define-cmd "k[ill]ow" (λ
+ (let (workgroup (wg-get-workgroup))
+ (dolist (w (wg-workgroup-list-or-error))
+ (unless (eq w workgroup)
+ (wg-kill-workgroup-and-buffers w))))))
+
+ ;; Turns projectile switch-project interface (or helm's interface to it)
+ ;; create a new workgroup for the new project.
+ (after "projectile"
+ (defun my-projectile-workgroup-switch-project ()
+ (let ((workgroup-name (file-name-nondirectory (directory-file-name (my--project-root)))))
+ (wg-create-workgroup workgroup-name t)
+ (helm-projectile-find-file)))
+
+ (setq projectile-switch-project-action 'my-projectile-workgroup-switch-project))
+
+ (workgroups-mode 1)))
+
+
+(provide 'init-workgroups)
+;;; init-workgroups.el ends here