diff --git a/.emacs.d/include/misc.el b/.emacs.d/include/misc.el index 37319fd..268f9ba 100644 --- a/.emacs.d/include/misc.el +++ b/.emacs.d/include/misc.el @@ -190,6 +190,20 @@ (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map) ;; Neotree +(defun neotree-toggle-dir-or-project () + "By default, toggle the directory at the project level, with prefix current." + (interactive) + (if (eq current-prefix-arg nil) + (neotree-toggle-project) + (neotree-toggle-current-directory))) + +(defun neotree-toggle-project () + "Toggle neotree at the project level if the project exists, otherwise current." + (interactive) + (if (projectile-project-p) + (neotree-toggle-directory (projectile-project-root)) + (neotree-toggle-current-directory))) + (defun neotree-toggle-current-directory () "Toggle neotree at the current directory." (interactive) @@ -198,10 +212,15 @@ (and (eq major-mode 'dired-mode) (dired-current-directory)) (and (eq major-mode 'magit-status-mode) (magit-toplevel)) "~"))) - (if (and (fboundp 'neo-global--window-exists-p) - (neo-global--window-exists-p)) - (neotree-hide) - (neotree-dir current-directory)))) + (neotree-toggle-directory current-directory))) + +(defun neotree-toggle-directory (dir) + "Toggle neotree at the given DIR." + (if (and (fboundp 'neo-global--window-exists-p) + (neo-global--window-exists-p)) + (neotree-hide) + (neotree-dir dir))) + ;; hledger (setq hledger-currency-string "$") diff --git a/.emacs.d/init.el b/.emacs.d/init.el index 1781ecd..e804625 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -117,7 +117,7 @@ (neo-smart-open t) (neo-window-fixed-size nil) (neo-show-hidden-files t)) - :bind (("C-c t" . #'neotree-toggle-current-directory))) + :bind (("C-c t" . #'neotree-toggle-dir-or-project))) (use-package all-the-icons :straight t) (use-package git-gutter :straight t :hook (prog-mode . git-gutter-mode)