blob: dfa5d44e48b21998348a1dfd47bbafd2e37f863c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
;;; 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
:pin "MELPA"
: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 nil
neo-mode-line-type 'none
neo-window-width 25
neo-window-fixed-size nil
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\\|.\\(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)))
(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
|