emacs-personal/modules/init-neotree.el
Jesús 70ee129a0a
Fix the following functions might not be defined at runtime
- off-p
- shrink-path-dirs
- neo-buffer--insert-root-entry

Fix functions are not known to be defined

- shrink-root-entry
- projectile-project-root

FS #2
2019-01-22 18:36:08 -05:00

100 lines
3.2 KiB
EmacsLisp

;;; 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
(when (and (require 'neotree nil t)
(fboundp 'off-p))
(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"
(when (and (require 'neotree nil t)
(fboundp 'shrink-path-dirs))
(insert (propertize (concat (shrink-path-dirs node) "\n") 'face `(:inherit (,neo-root-dir-face))))))
(when (and (require 'neotree nil t)
(fboundp 'neo-buffer--insert-root-entry)
(fboundp 'shrink-root-entry))
(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)
(when (and (require 'neotree nil t)
(fboundp 'projectile-project-root))
(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