diff --git a/init.example.el b/init.example.el index dd413afc6..ac7c869fc 100644 --- a/init.example.el +++ b/init.example.el @@ -61,6 +61,7 @@ eshell ; a consistent, cross-platform shell (WIP) gist ; interacting with github gists macos ; macos-specific commands + neotree ; a project drawer, like NERDTree for vim rotate-text ; cycle region at point between text candidates term ; terminals in Emacs tmux ; an API for interacting with tmux diff --git a/modules/feature/evil/config.el b/modules/feature/evil/config.el index f04295d77..f2774213b 100644 --- a/modules/feature/evil/config.el +++ b/modules/feature/evil/config.el @@ -409,40 +409,3 @@ the new algorithm is confusing, like in python or ruby." (global-evil-visualstar-mode 1)) -;; A side-panel for browsing my project files. Inspired by vim's NERDTree. Sure, -;; there's dired and projectile, but sometimes I'd like a bird's eye view of a -;; project. -(def-package! neotree - :commands (neotree-show - neotree-hide - neotree-toggle - neotree-dir - neotree-find - neo-global--with-buffer - neo-global--window-exists-p) - :config - (setq neo-create-file-auto-open nil - neo-auto-indent-point nil - neo-autorefresh nil - neo-mode-line-type 'none - neo-window-width 25 - neo-show-updir-line nil - neo-theme 'nerd ; fallback - neo-banner-message nil - neo-confirm-create-file #'off-p - neo-confirm-create-directory #'off-p - neo-show-hidden-files nil - neo-keymap-style 'concise - neo-hidden-regexp-list - '(;; vcs folders - "^\\.\\(git\\|hg\\|svn\\)$" - ;; compiled files - "\\.\\(pyc\\|o\\|elc\\|lock\\|css.map\\)$" - ;; generated files, caches or local pkgs - "^\\(node_modules\\|vendor\\|.\\(project\\|cask\\|yardoc\\|sass-cache\\)\\)$" - ;; org-mode folders - "^\\.\\(sync\\|export\\|attach\\)$" - "~$" - "^#.*#$")) - - (push neo-buffer-name winner-boring-buffers)) diff --git a/modules/feature/evil/packages.el b/modules/feature/evil/packages.el index 475993ce1..4194b9bd1 100644 --- a/modules/feature/evil/packages.el +++ b/modules/feature/evil/packages.el @@ -18,4 +18,3 @@ (package! evil-surround) (package! evil-vimish-fold) (package! evil-visualstar) -(package! neotree) diff --git a/modules/private/hlissner/+bindings.el b/modules/private/hlissner/+bindings.el index e02e44682..3b2e5161c 100644 --- a/modules/private/hlissner/+bindings.el +++ b/modules/private/hlissner/+bindings.el @@ -224,7 +224,7 @@ :desc "Debugger" :n "d" #'+debug/open :desc "REPL" :n "r" #'+eval/repl :v "r" #'+eval:repl - :desc "Neotree" :n "n" #'+evil/neotree + :desc "Neotree" :n "n" #'+neotree/open :desc "Terminal" :n "t" #'+term/popup :desc "Terminal in project" :n "T" #'+term/popup-in-project @@ -519,8 +519,8 @@ :n "k" #'neotree-previous-line :n "n" #'neotree-next-line :n "p" #'neotree-previous-line - :n "h" #'+evil/neotree-collapse-or-up - :n "l" #'+evil/neotree-expand-or-open + :n "h" #'+neotree/collapse-or-up + :n "l" #'+neotree/expand-or-open :n "J" #'neotree-select-next-sibling-node :n "K" #'neotree-select-previous-sibling-node :n "H" #'neotree-select-up-node diff --git a/modules/tools/neotree/README.org b/modules/tools/neotree/README.org new file mode 100644 index 000000000..f5e448181 --- /dev/null +++ b/modules/tools/neotree/README.org @@ -0,0 +1,7 @@ +* :evil neotree + +This module brings a side panel for browsing project files, inspired by vim's NERDTree. + +#+begin_quote +Sure, there's dired and projectile, but sometimes I'd like a bird's eye view of a project. +#+end_quote diff --git a/modules/feature/evil/autoload/neotree.el b/modules/tools/neotree/autoload.el similarity index 88% rename from modules/feature/evil/autoload/neotree.el rename to modules/tools/neotree/autoload.el index 0ace19ec1..1a3dd4d15 100644 --- a/modules/feature/evil/autoload/neotree.el +++ b/modules/tools/neotree/autoload.el @@ -1,7 +1,7 @@ -;;; feature/evil/autoload/neotree.el +;;; tools/neotree/autoload.el ;;;###autoload -(defun +evil/neotree () +(defun +neotree/toggle () "Toggle the neotree window." (interactive) (let ((in-neotree (and (neo-global--window-exists-p) @@ -18,18 +18,18 @@ (neotree-find path project-root))))) ;;;###autoload -(defun +evil/neotree-collapse-or-up () +(defun +neotree/collapse-or-up () "Collapse an expanded directory node or go to the parent node." (interactive) (when-let (node (neo-buffer--get-filename-current-line)) (if (file-directory-p node) (if (neo-buffer--expanded-node-p node) - (+evil/neotree-collapse) + (+neotree/collapse) (neotree-select-up-node)) (neotree-select-up-node)))) ;;;###autoload -(defun +evil/neotree-collapse () +(defun +neotree/collapse () "Collapse a neotree node." (interactive) (when-let (node (neo-buffer--get-filename-current-line)) @@ -40,7 +40,7 @@ (neo-point-auto-indent)))) ;;;###autoload -(defun +evil/neotree-expand-or-open () +(defun +neotree/expand-or-open () "Expand or open a neotree node." (interactive) (when-let (node (neo-buffer--get-filename-current-line)) diff --git a/modules/tools/neotree/config.el b/modules/tools/neotree/config.el new file mode 100644 index 000000000..2e4a11165 --- /dev/null +++ b/modules/tools/neotree/config.el @@ -0,0 +1,37 @@ +;;; tools/neotree/config.el + +(def-package! neotree + :commands (neotree-show + neotree-hide + neotree-toggle + neotree-dir + neotree-find + neo-global--with-buffer + neo-global--window-exists-p) + :config + (setq neo-create-file-auto-open nil + neo-auto-indent-point nil + neo-autorefresh nil + neo-mode-line-type 'none + neo-window-width 25 + neo-show-updir-line nil + neo-theme 'nerd ; fallback + neo-banner-message nil + neo-confirm-create-file #'off-p + neo-confirm-create-directory #'off-p + neo-show-hidden-files nil + neo-keymap-style 'concise + neo-hidden-regexp-list + '(;; vcs folders + "^\\.\\(git\\|hg\\|svn\\)$" + ;; compiled files + "\\.\\(pyc\\|o\\|elc\\|lock\\|css.map\\)$" + ;; generated files, caches or local pkgs + "^\\(node_modules\\|vendor\\|.\\(project\\|cask\\|yardoc\\|sass-cache\\)\\)$" + ;; org-mode folders + "^\\.\\(sync\\|export\\|attach\\)$" + "~$" + "^#.*#$")) + + (when (bound-and-true-p winner-mode) + (push neo-buffer-name winner-boring-buffers))) diff --git a/modules/tools/neotree/packages.el b/modules/tools/neotree/packages.el new file mode 100644 index 000000000..86ec08eaf --- /dev/null +++ b/modules/tools/neotree/packages.el @@ -0,0 +1,4 @@ +;; -*- no-byte-compile: t; -*- +;;; tools/neotree/packages.el + +(package! neotree)