aboutsummaryrefslogtreecommitdiffstats
path: root/modules/init-neotree.el
diff options
context:
space:
mode:
authorJesús <heckyel@hyperbola.info>2019-01-22 15:45:41 -0500
committerJesús <heckyel@hyperbola.info>2019-01-22 15:45:41 -0500
commitced0fe8f9ef7cd16ade900bb34393c627f6d0c69 (patch)
tree350d3a0cbb87b12a36c0dc12537c56a75a2668ae /modules/init-neotree.el
parentd0f44d85466d7211d54e30970f29815842ff4180 (diff)
downloademacs-personal-ced0fe8f9ef7cd16ade900bb34393c627f6d0c69.tar.lz
emacs-personal-ced0fe8f9ef7cd16ade900bb34393c627f6d0c69.tar.xz
emacs-personal-ced0fe8f9ef7cd16ade900bb34393c627f6d0c69.zip
Change directory lisp/ to modules/
FS #2
Diffstat (limited to 'modules/init-neotree.el')
-rw-r--r--modules/init-neotree.el90
1 files changed, 90 insertions, 0 deletions
diff --git a/modules/init-neotree.el b/modules/init-neotree.el
new file mode 100644
index 0000000..ff38aa8
--- /dev/null
+++ b/modules/init-neotree.el
@@ -0,0 +1,90 @@
+;;; init-neotree.el --- .Emacs Configuration -*- lexical-binding: t -*-
+;;; Commentary:
+;;
+
+;;; Code:
+;;-----------------------------------
+;; Neotree - NerdTree for Vim
+;;-----------------------------------
+
+(use-package shrink-path
+ :ensure t)
+
+(use-package neotree
+ :ensure t
+ :commands (neotree-show
+ neotree-hide
+ neotree-toggle
+ neotree-dir
+ neotree-find
+ neo-global--with-buffer
+ neo-global--window-exists-p)
+ :bind (([f8] . neotree-toggle)
+ (:map neotree-mode-map
+ ("<C-return>" . neotree-change-root)
+ ("C" . neotree-change-root)
+ ("c" . neotree-create-node)
+ ("+" . neotree-create-node)
+ ("d" . neotree-delete-node)
+ ("r" . neotree-rename-node)))
+ :config
+ (setq neo-create-file-auto-open nil
+ neo-auto-indent-point nil
+ neo-autorefresh t
+ neo-smart-open t
+ neo-mode-line-type 'none
+ neo-window-width 25
+ neo-show-updir-line nil
+ neo-theme (if (display-graphic-p) 'icons 'arrow)
+ 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))
+
+ (defun shrink-root-entry (node)
+ "shrink-print pwd in neotree"
+ (insert (propertize (concat (shrink-path-dirs node) "\n") 'face `(:inherit (,neo-root-dir-face)))))
+
+ (advice-add #'neo-buffer--insert-root-entry :override #'shrink-root-entry))
+
+(defun neotree-project-dir-toggle ()
+ "Open NeoTree using the project root, using find-file-in-project or the current buffer directory."
+ (interactive)
+ (let ((project-dir
+ (ignore-errors
+ ;;; Pick one: projectile or find-file-in-project
+ (projectile-project-root)))
+ (file-name (buffer-file-name))
+ (neo-smart-open t))
+ (if (and (fboundp 'neo-global--window-exists-p)
+ (neo-global--window-exists-p))
+ (neotree-hide)
+ (progn
+ (neotree-show)
+ (if project-dir
+ (neotree-dir project-dir))
+ (if file-name
+ (neotree-find file-name))))))
+
+
+(provide 'init-neotree)
+
+;; Local Variables:
+;; byte-compile-warnings: (not free-vars)
+;; End:
+;;; init-neotree.el ends here