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