Compare commits

..

171 Commits
3.1.0 ... 4.2.0

Author SHA1 Message Date
Martin Grenfell
205367ab3f update changelog/credits and bump to version 4.2.0 2011-12-28 13:16:57 +00:00
Martin Grenfell
4bd0def6fb add a note about vim-nerdtree-tabs to the readme 2011-12-27 22:53:38 +00:00
Martin Grenfell
4411344f7c update the doc for the new NERDTreeFind behaviour 2011-12-27 22:22:10 +00:00
Martin Grenfell
7ff9def95b fix mixed indenting 2011-12-27 22:18:28 +00:00
Benjamin Geiger
b3b394c329 Open NERDTreeFind tree at CWD if current file is below it. 2011-12-27 22:15:31 +00:00
Martin Grenfell
4dd1bc9ef6 make a minor formatting fix for the readme 2011-12-27 21:53:12 +00:00
Martin Grenfell
1b4dfc8745 add first version of readme 2011-12-24 10:58:57 +00:00
Martin Grenfell
0747198ee3 remove Rakefile - pathogen is now the recommended way to install 2011-12-24 10:58:45 +00:00
Martin Grenfell
23d1746bbf refactor tree window creation to remove duplication
create s:setCommonBufOptions() with the previously duplicated parts of
s:initNerdTreeInPlace() and s:createTreeWin()
2011-12-21 14:43:20 +00:00
Martin Grenfell
aa28ae7863 Merge pull request #87 from scottstvnsn/master
Add nolist to buffer options.
2011-12-21 06:40:49 -08:00
Martin Grenfell
02f1d828d9 Merge pull request #88 from andersonfreitas/master
Added new options in the file system menu
2011-12-21 06:27:25 -08:00
Martin Grenfell
b528910e7a dont add a trailing slash to auto-named bookmarked dirs
this breaks the highlighting of the nerdtree buffer, and seems dodgy
2011-12-21 13:20:09 +00:00
Min-Young Wu
dcccd0e532 Defaulting bookmark name to file/dir name
Note that for directories, there is a trailing slash
2011-12-21 13:15:56 +00:00
Martin Grenfell
af833e3006 remove the now unused s:setupSyntaxHighlighting() 2011-12-21 12:51:32 +00:00
Martin Grenfell
82c93a6448 Merge remote-tracking branch 'gnap/master' 2011-12-21 12:50:05 +00:00
Martin Grenfell
49b88757b0 enable NERDTreeDirArrows by default except on windows 2011-12-15 17:35:18 +00:00
Martin Grenfell
30f6bcc30c Merge pull request #86 from mathias/patch-1
Spelling
2011-10-09 09:34:12 -07:00
Anderson Freitas
796a40b5d7 New options in the file system menu:
- Reveal In Finder
 - Open with system editor
 - Quicklook

Current only when using MacVim under MacOSX
2011-09-06 21:15:44 -03:00
Scott Stevenson
1c568a4916 Add nolist to buffer options. 2011-08-31 12:34:41 +01:00
Martin Grenfell
12f692f436 always disallow insert mode
Remove the NERDTreeStopInsert option and always activate the
functionality. If, later on, it becomes apparent that some people might
not want this functionality then we can re-add the option, but in the
meantime, simplify things by removing the option.
2011-08-30 12:03:49 +01:00
Martin Grenfell
9b5851c36c Merge pull request #84 from kml/master
wycats's "disallow insert mode"

An explanation from vguerci@github:

Insert mode can be entered in nerdtree not sure the exact sequence / reason, but i guess that involve using mouse (sounds weird, a bug?) :

- open nerdtree, select a buffer, enter insert mode in buffer.
- select nerdtree buffer with mouse, you're in insert mode.

...then you can easily get E21, E382 errors.
Not a big deal but that can happen, if you use mouse... (which I don't)
(reproduced this on latests macvim (vim 7.3.260) from terminal (vim) or macvim)
2011-08-30 03:58:05 -07:00
Matt Gauger
077e330b64 Spelling 2011-08-25 13:39:02 -05:00
Kamil K. Lemański
86364c2150 wycats's "disallow insert mode"
3bb112d916
2011-08-05 17:42:41 +03:00
Martin Grenfell
2dd198c6c4 fix for copying files
when copying a file outside the current tree root, {} is returned by
TreeFileNode.copy() so try to reposition the cursor
2011-07-09 18:44:03 +12:00
Martin Grenfell
c08d7e9f19 Merge pull request #79 from AndrewRadev/master
Fix for an error when copying nodes
2011-07-08 23:35:10 -07:00
Andrew Radev
5bd641834d Fix for copying error
When copying a node to a directory that's outside the current path, the
"parent" node doesn't really exist, so the code raised an error.
2011-07-08 22:10:13 +03:00
Martin Grenfell
2fbd578a77 Merge remote-tracking branch 'EvanDotPro/master' 2011-07-06 13:59:57 +12:00
Martin Grenfell
04aa45fcd8 Merge pull request #74 from iNecas/nerd_tree_find_fix
NERDTreeFind fix revert
2011-07-05 03:55:05 -07:00
Evan Coury
71d6c1d3c6 specify 'file' input types to allow for tab-completion of paths when copying, moving, or creating a node 2011-07-04 05:56:39 -07:00
Ivan Necas
063e4d0870 Revert commit 7f5a8caa
Some other changes causted previos commit to break the NERDTreeFind functionality
instead of fixing it. Reverting...
2011-06-25 11:51:21 +02:00
George Ang
70ba0d60ec separate syntax file for better combacibility with plugins that reloads
vimrc files(such as perdirvimrc) after BufRead.
2011-06-18 23:56:31 +08:00
Martin Grenfell
1cd50482d2 Merge pull request #56 from iNecas/nerd_tree_find_fix
NERDTreeFind fix
2011-05-06 03:00:50 -07:00
Martin Grenfell
bf73470723 Merge pull request #50 from sdewald/master
Fix for issue #22 -- "FUNCTION: NERDTreeAddNode() cannot handle paths with spaces"
2011-05-06 02:33:57 -07:00
Martin Grenfell
2e072fe0e2 fix the mouse and NERDTreeDirArrows 2011-04-24 02:13:54 +12:00
Ivan Necas
7f5a8c3aac Fix for getting line of node
Set curPathComponent to 0 correctly identify with indent level of node.
2011-03-20 14:25:41 +01:00
Martin Grenfell
f621df68ae fix a minor bug with syntax highlighting of the root node 2011-03-10 10:43:47 +13:00
Steve DeWald
6a6ffe2ad6 Merge branch 'master' of github.com:scrooloose/nerdtree 2011-03-04 11:24:54 -08:00
Martin Grenfell
1dd345c56d only set relativenumber for vim >= 7.3 2011-03-03 12:18:04 +13:00
Martin Grenfell
bc0c64ef82 fix a bug when the bookmarks are toggled with NERDTreeMinimalUI 2011-03-01 11:28:57 +13:00
Martin Grenfell
702a88956b remove '.. (up a dir)' when NERDTreeMinimalUI is set
Shortening this line doesnt add anything to the UI (functionally
speaking), but removing frees up an extra line. Anyone who sets
NERDTreeMinimalUI probably uses the u/U mappings anyway.
2011-03-01 11:03:05 +13:00
Martin Grenfell
fad6f06ace fix a bug with NERDTreeMinimalUI and syntax highlighting
Use \V for the updir text regex. Otherwise '..' is treated as a regex
rather than 2 literal dots.
2011-03-01 10:56:03 +13:00
Cam Thompson
e697444f29 set nornu when line numbers aren't shown 2011-02-27 21:30:43 -05:00
Cam Thompson
d595605ff1 hide (up a dir) when using minimal ui 2011-02-27 21:18:28 -05:00
Cam Thompson
b9e970d934 Merge branch 'master' of git://github.com/scrooloose/nerdtree
Conflicts:
	doc/NERD_tree.txt
2011-02-27 20:45:22 -05:00
Cam Thompson
999ba49857 merge hide bookmarks and press ? options 2011-02-27 20:36:06 -05:00
Martin Grenfell
21bd141866 fix highlighting of executable files with NERDTreeDirArrows 2011-02-28 10:55:15 +13:00
Cam Thompson
e88f436302 Merge remote-tracking branch 'upstream/master' 2011-02-25 13:16:03 -05:00
Cam Thompson
2d17132f48 add bookmarks and press help documentation 2011-02-25 13:14:49 -05:00
Marcin Kulik
8accb0978e Make tree style (|+~ or arrows) configurable 2011-02-23 18:40:11 +01:00
Marcin Kulik
867de91643 Make indentation of file nodes more intuitive 2011-02-20 20:42:03 +01:00
Steve DeWald
1de3c22a44 Fixed two bugs affecting adding and copying nodes with escaped chars (e.g. spaces) in the filepath 2011-02-20 09:40:34 -08:00
Marcin Kulik
eac32148a4 Use small triangles for directories and get rid of ascii bars 2011-02-19 13:11:30 +01:00
Cam Thompson
37bfae0d2f rename press for help and bmark label options 2011-02-18 00:10:48 -05:00
Martin Grenfell
2504666a72 make it handle dirs of the form '[foo]baz' properly in *nix
previously such dirs always appeared to be empty
2011-02-14 10:20:15 +13:00
Cam Thompson
9e415dcc6d add option to hide bookmarks label 2011-02-08 18:59:38 -05:00
Cam Thompson
e4efdb3bd4 add option to hide 'Press ? for help' 2011-02-08 18:59:38 -05:00
Martin Grenfell
721ad3ecc2 fix a bug when opening a file bookmark in a new tab 2011-02-08 17:44:38 +13:00
Martin Grenfell
8618929e9a fix a couple of typos in the filesystem menu 2011-02-08 17:16:30 +13:00
Martin Grenfell
b3df8fb1e6 make all regex matching case sensitive 2011-02-08 16:53:45 +13:00
Martin Grenfell
492f491056 prefix all highlight groups with NERDTree for namespace reasons 2011-02-08 11:37:28 +13:00
marty
7650cdc662 update credits/changelog 2010-11-20 18:04:39 +13:00
marty
a72cb80337 fix a bug with :NERDTreeFind and symlinks
Previously, if we called NERDTreeFind for a file that was inside a
symlinked dir (when vims CWD was above that dir) then it would get
confused by the symlink and fail. Use :p with expand to get around this.
2010-11-20 18:01:38 +13:00
marty
e1abd4d373 close the tree win when opening bookmarked files for NERDTreeQuitOnOpen 2010-09-18 18:15:30 +12:00
marty
37859888b5 correct the window the cursor jumps to on :NERDTree(Close|Toggle) 2010-09-18 18:12:17 +12:00
paddyoloughlin
88aaba22b5 Escaped "value" parameter to initVariable, so it is a valid literal-string. 2010-07-31 19:30:15 +08:00
marty
a997ab3341 fix a bug with `:Bookmark foo' where foo was an existing bookmark 2010-06-21 21:49:04 +12:00
marty
153041ac93 switch to version 4.1.0 2009-12-01 22:20:53 +13:00
marty
68cb5fc2eb update changelog and credits 2009-12-01 22:19:43 +13:00
marty
ee7aafb135 bugfix: paths were incorrectly escaped in win32 for :e and :cd 2009-11-24 21:34:41 +13:00
marty
b047d7f312 put the open-in-new-tab logic in the models, make NERDTreeQuitOnOpen effect T and t 2009-11-24 00:11:02 +13:00
marty
1537d42706 move s:getSelectedBookmark in to the Bookmark model 2009-11-24 00:10:44 +13:00
marty
4b566f153f add NERDTreeFind command and handling code 2009-11-22 19:29:16 +13:00
marty
f34986d30f move the path string truncation into Path#str() 2009-11-22 18:25:23 +13:00
marty
a713a86f06 truncate the root line if its too long
and by "too long" i mean wider than the nerdtree window
2009-11-05 13:49:36 +13:00
marty
08bc9870bc bugfix: escape filenames for ":edit"ing 2009-10-10 12:30:28 +13:00
marty
94e085f1a2 really fix the window state restoring 2009-10-09 21:27:48 +13:00
marty
241f2e9dfe switch to version 4.0.0 2009-10-09 18:52:47 +13:00
marty
c864c6e463 bugfix for NERDTreeMirror
when the user was prompted to choose a tree to mirror, it would mirror
the wrong one
2009-10-09 18:46:33 +13:00
marty
bc55f3dda8 fix a typo in the doc 2009-10-09 15:54:57 +13:00
marty
39a3a78729 update changelog/credits 2009-10-09 15:54:46 +13:00
marty
31f65b97b1 remove the git menu plugin 2009-10-09 14:48:25 +13:00
marty
3837ea85e0 change my email to gmail 2009-10-09 14:46:40 +13:00
marty
fedd5f1162 minor refactor 2009-10-09 14:40:14 +13:00
marty
dc108f555e bugfix: the window state wasnt being stored 2009-10-09 14:36:25 +13:00
marty
93a0a422b4 remove a couple of useless lines 2009-10-08 16:15:53 +13:00
marty
e899bed4d7 fix a retarded line that somehow got in 2009-09-29 09:41:57 +13:00
marty
87fbc2e5e4 fix syntax error in Path#delete() 2009-09-29 09:40:41 +13:00
marty
cf61ad3285 change the statusline so restoring a session doesnt break so badly 2009-09-15 19:57:08 +12:00
marty
f772cfdefb fix path escaping for Path._strForCd() 2009-09-13 14:05:28 +12:00
marty
a1e7bc0b01 refactor away from Path.strForCd() (since it was removed earlier) 2009-09-13 14:02:48 +12:00
marty
e5c79fc5c1 dont highlight current menu item
this is mainly because users shouldnt be encouraged to use j/k, but
rather they should use the shortcuts... this is faster and stops the
menu from being re-rendered so often (which looks shithouse since he
screen is being ":redraw!"n)
2009-09-11 22:32:09 +12:00
Tim Henigan
a3b05e8e38 Taught s:Path.getParent to handle Windows paths.
There was an error in the function which prevented Windows paths
from being properly decoded.  This error was causing the ".. (up a dir)"
feature to fail due to an unhandled Invalid Argument exception.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>

Signed-off-by: Martin Grenfell <martin_grenfell@msn.com>
2009-09-11 15:11:32 +08:00
marty
89cfedd39b syntax fix 2009-09-09 16:04:14 +12:00
marty
1be18ed53c dont show separators at the top of the menu 2009-09-06 21:58:56 +12:00
marty
e2265ec3b3 update the changelog 2009-09-06 13:43:54 +12:00
marty
5ba3b3a5a8 update the doc 2009-09-06 13:43:47 +12:00
marty
6a513e4340 remove some old code left over for the ! mapping 2009-09-06 12:19:32 +12:00
marty
1ea2a0c29b update doc RE menu 2009-09-06 11:27:36 +12:00
marty
3a163fca64 migrate fs_menu.vim to use the new Path#str method 2009-09-05 22:29:11 +12:00
marty
36e4402550 update the API doc 2009-09-04 00:36:01 +12:00
marty
effb5d4de0 make "OS" the default format for Path#str()
remove the old "OS" format option and introduce "UI" (which is the old
default)
2009-09-03 17:27:45 +12:00
marty
a854feeb1e comment Path#str() 2009-09-02 22:07:23 +12:00
marty
cbb0a8698f correct a header comment 2009-09-02 22:07:12 +12:00
marty
d21b00c767 fix bug when using x on the tree root
patch from Bryan Venteicher
2009-09-02 16:42:24 +12:00
marty
5311777308 rename Path#_strForEditCmd to _strForEdit 2009-09-02 00:44:10 +12:00
marty
7a5685af57 highlight the current menu item 2009-09-01 23:36:34 +12:00
marty
38e2bcaf85 simplify the menu rendering
now we have a slight flicker on console vim, but the rendering engine is
more robust in general and should work across different OSs/versions of
vim
2009-09-01 22:43:06 +12:00
marty
0dda0ce5d7 refactor the Path#str* methods 2009-09-01 17:15:48 +12:00
marty
8fc72fd352 remove s:executeNode since it is now unused 2009-08-26 16:44:28 +12:00
marty
dc3f1b5edf refactor/move around the method to render a path to a string 2009-08-24 01:10:49 +12:00
marty
dd38ab8f43 remove the arg from Path#str()
now everything uses the equivalent of Path#str(0)
2009-08-23 23:56:33 +12:00
marty
7051977808 updates to the doc 2009-08-22 01:57:45 +12:00
marty
d9f315d63e update some file header info for the nerdtree plugins 2009-08-22 01:54:28 +12:00
marty
5e9635dfa4 update some of the old fs menu doc for the new menu system 2009-08-22 01:54:05 +12:00
marty
f2a9e9a360 make the git menu use the new NERDTreeAddSubmenu() call 2009-08-22 01:27:07 +12:00
marty
1080246af9 add some doc for the new API 2009-08-22 01:26:47 +12:00
marty
fcb4ec0303 make the menu api more awesome 2009-08-22 01:25:18 +12:00
marty
8211554efa recursively source all .vim files in nerdtree_plugin/ 2009-08-22 01:19:46 +12:00
marty
464699215c set nolazyredraw ... not sure how this got changed 2009-08-20 13:36:29 +12:00
marty
10bb62a728 add comments to MenuItem and MenuController methods 2009-08-20 13:35:47 +12:00
marty
46710bfb25 update git_menu so we dont prompt anymore unless needed 2009-08-20 03:09:09 +12:00
marty
fcb54eee12 remove some unneeded checks from fs_menu 2009-08-20 03:07:54 +12:00
marty
a686be5c31 some cosmetic changes to exec_menuitem 2009-08-20 03:07:17 +12:00
marty
bd5e5d71b5 rearange some code so the menu doesnt change the window/cursor position 2009-08-20 03:05:21 +12:00
marty
711c8e3328 add travis jefferys git-vimscript-installer rakefile 2009-08-19 16:00:59 +12:00
marty
ec1f7e3e6e Merge branch 'api' 2009-08-19 15:57:41 +12:00
marty
8535a906be refactor MenuItem.CreateSeparator() 2009-08-19 15:44:53 +12:00
marty
eef8a7b280 bugfix in fs_menu plugin 2009-08-19 02:06:11 +12:00
marty
891f0ed3a2 make the git menu work and put it under a submenu 2009-08-19 02:05:36 +12:00
marty
e93bf0632b make the menu system more awesome 2009-08-19 02:05:02 +12:00
marty
31c0ec6d63 add basic menu implementation 2009-08-18 09:44:49 +12:00
marty
fc3cb76695 remove a redundant function 2009-08-12 01:49:48 +12:00
marty
389f33ea81 add quickhelpText to s:KeyMap and display it in quickhelp 2009-08-12 01:38:57 +12:00
marty
abc0cc4c40 remove some useless/misleading comments 2009-08-12 01:15:18 +12:00
marty
1654ef820b remove some redundant code 2009-08-12 01:14:15 +12:00
marty
df3485ec64 remove an unused function 2009-08-12 01:13:29 +12:00
marty
59257d7a3a remove the old api functions 2009-08-12 00:55:12 +12:00
marty
a052a0db65 add an API to add custom key maps 2009-08-12 00:53:16 +12:00
marty
65dd1137da create a new dir for nerdtree plugins 2009-08-11 16:35:19 +12:00
marty
236d20946c correct a typo in the changelog 2009-08-11 16:10:01 +12:00
marty
a796715ac1 add A mapping to maximize/restore tree window size
this commit is a modified patch from Guillaume Duranceau
2009-08-11 16:09:51 +12:00
marty
abfd4fef76 correct a typo in the changelog 2009-08-09 22:38:21 +12:00
marty
95acf7dd25 add A mapping to maximize/restore tree window size
this commit is a modified patch from Guillaume Duranceau
2009-08-09 21:29:28 +12:00
marty
02b3cec827 set up syntax highlighting even if highlighting rules already exist 2009-07-31 18:49:56 +12:00
marty
c3a2f88b63 set up syntax highlighting even if highlighting rules already exist 2009-07-31 18:33:06 +12:00
Martin Grenfell
bc2a628a10 move the ! keymap into a plugin 2009-07-22 00:25:23 +12:00
Martin Grenfell
6518d1eb4c rename check_to_enable_callback to isActiveCallback 2009-07-21 23:43:00 +12:00
Martin Grenfell
a2ead3545e rename MenuCallback -> MenuItem 2009-07-21 21:13:23 +12:00
Martin Grenfell
a163f327eb make the git menu own harder 2009-07-21 19:27:10 +12:00
Martin Grenfell
e9d6a7209c update the fs menu to use the new api 2009-07-21 19:26:48 +12:00
Martin Grenfell
f0290b08dd add another api callback to determine whether menu items should appear
this way we can e.g. not show the git submenu unless a git repo is
actually present
2009-07-21 19:23:44 +12:00
Martin Grenfell
51637ec6d4 remove inferior rake symlink to travisjefferys awesome rakefile 2009-07-20 01:07:58 +12:00
Martin Grenfell
4d77c3ae45 add basic git plugin 2009-07-20 01:05:21 +12:00
Martin Grenfell
a7f9abe827 fix a bug where the ../ and ./ entries werent being filtered out 2009-07-20 01:01:12 +12:00
Martin Grenfell
41029aef24 put the fs operations in the top level of the menu 2009-07-19 17:34:28 +12:00
Martin Grenfell
c75a022a23 extend the api and move the fs operations into a plugin 2009-07-19 17:21:57 +12:00
Martin Grenfell
1acf6321a5 refactor the activate method so the code is now in the models 2009-07-18 01:04:40 +12:00
Martin Grenfell
e164980d84 fix a bug where the script ignored dirs ending in a dot 2009-07-18 00:55:01 +12:00
Martin Grenfell
71ebe27a8d fix a bug with secondary nerd trees and NERDTreeQuitOnOpen 2009-07-18 00:48:32 +12:00
Martin Grenfell
e7ebee3084 switch to version 3.1.1 2009-06-07 21:36:59 +12:00
Martin Grenfell
1239f78baf update changelog 2009-06-07 21:36:00 +12:00
Martin Grenfell
5f4c005771 bugfix: :NERDTreeMirror doesnt have tab completion 2009-06-07 20:40:19 +12:00
Martin Grenfell
9e0a0b6a43 fix a bug that was causing no-name bufs to be created 2009-06-02 20:04:10 +12:00
Martin Grenfell
5c85d28285 fix a function description comment 2009-06-02 11:12:36 +12:00
Martin Grenfell
f65bc62fac fix a bug that was occurring with :set nohidden
previously the code didnt take &hidden (it assumed it was set) into
account when determining if splitting was needed when using the o
mapping on a file node
2009-06-02 11:10:03 +12:00
Martin Grenfell
9b12953343 add a help file entry for the cd mapping 2009-06-02 11:09:33 +12:00
Martin Grenfell
84f9793231 fix some help tags 2009-05-29 14:23:58 +12:00
Martin Grenfell
1f46ecf4b8 update changelog 2009-03-12 09:45:18 +13:00
Martin Grenfell
eef90bf320 fix lots of no-name buffers being created
Previously every time the tree window was created a new [no-name] buffer
was being created (visible with :ls!). Avoid this by creating the window
with split,  not new
2009-03-12 09:44:02 +13:00
Martin Grenfell
3796a8799a map '<CR>' to the same as 'o' 2009-03-06 15:57:51 +13:00
Martin Grenfell
c726655d23 Compatibility syntax fix for screwy versions of vim 2009-01-30 23:59:50 +13:00
7 changed files with 1724 additions and 865 deletions

89
README.markdown Normal file
View File

@@ -0,0 +1,89 @@
The NERD Tree
=============
Intro
-----
The NERD tree allows you to explore your filesystem and to open files and
directories. It presents the filesystem to you in the form of a tree which you
manipulate with the keyboard and/or mouse. It also allows you to perform
simple filesystem operations.
The following features and functionality are provided by the NERD tree:
* Files and directories are displayed in a hierarchical tree structure
* Different highlighting is provided for the following types of nodes:
* files
* directories
* sym-links
* windows .lnk files
* read-only files
* executable files
* Many (customisable) mappings are provided to manipulate the tree:
* Mappings to open/close/explore directory nodes
* Mappings to open files in new/existing windows/tabs
* Mappings to change the current root of the tree
* Mappings to navigate around the tree
* ...
* Directories and files can be bookmarked.
* Most NERD tree navigation can also be done with the mouse
* Filtering of tree content (can be toggled at runtime)
* custom file filters to prevent e.g. vim backup files being displayed
* optional displaying of hidden files (. files)
* files can be "turned off" so that only directories are displayed
* The position and size of the NERD tree window can be customised
* The order in which the nodes in the tree are listed can be customised.
* A model of your filesystem is created/maintained as you explore it. This
has several advantages:
* All filesystem information is cached and is only re-read on demand
* If you revisit a part of the tree that you left earlier in your
session, the directory nodes will be opened/closed as you left them
* The script remembers the cursor position and window position in the NERD
tree so you can toggle it off (or just close the tree window) and then
reopen it (with NERDTreeToggle) the NERD tree window will appear exactly
as you left it
* You can have a separate NERD tree for each tab, share trees across tabs,
or a mix of both.
* By default the script overrides the default file browser (netw), so if
you :edit a directory a (slighly modified) NERD tree will appear in the
current window
* A programmable menu system is provided (simulates right clicking on a node)
* one default menu plugin is provided to perform basic filesytem
operations (create/delete/move/copy files/directories)
* There's an API for adding your own keymappings
Installation
------------
[pathogen.vim](https://github.com/tpope/vim-pathogen) is the recommended way to install nerdtree.
cd ~/.vim/bundle
git clone https://github.com/scrooloose/nerdtree.git
Then reload vim, run `:helptags`, and check out `:help NERD_tree.txt`.
Faq
---
Q. Can I have the nerdtree on every tab automatically?
A. Nope. If this is something you want then chances are you aren't using tabs
and buffers as they were intended to be used. Read this
http://stackoverflow.com/questions/102384/using-vims-tabs-like-buffers
If you are interested in this behavour then consider [vim-nerdtree-tabs](https://github.com/jistr/vim-nerdtree-tabs)
Changelog
---------
4.2.0 (2011-12-28)
* Add NERDTreeDirArrows option to make the UI use pretty arrow chars instead of the old +~| chars to define the tree structure (sickill)
* shift the syntax highlighting out into its own syntax file (gnap) * add some mac specific options to the filesystem menu - for macvim only (andersonfreitas)
* Add NERDTreeMinimalUI option to remove some non functional parts of the nerdtree ui (camthompson)
* tweak the behaviour of :NERDTreeFind - see :help :NERDTreeFind for the new behaviour (benjamingeiger)
* if no name is given to :Bookmark, make it default to the name of the target file/dir (minyoung)
* use 'file' completion when doing copying, create, and move operations (EvanDotPro)
* lots of misc bug fixes (paddyoloughlin, sdewald, camthompson, Vitaly Bogdanov, AndrewRadev, mathias, scottstvnsn, kml, wycats, me RAWR!)

View File

@@ -1,18 +0,0 @@
desc "Copy the vim/doc files into ~/.vim"
task :deploy_local do
run "cp plugin/NERD_tree.vim ~/.vim/plugin"
run "cp doc/NERD_tree.txt ~/.vim/doc"
end
desc "Create a zip archive for release to vim.org"
task :zip do
abort "NERD_tree.zip already exists, aborting" if File.exist?("NERD_tree.zip")
run "zip NERD_tree.zip plugin/NERD_tree.vim doc/NERD_tree.txt"
end
def run(cmd)
puts "Executing: #{cmd}"
system cmd
end

View File

@@ -27,11 +27,13 @@ CONTENTS *NERDTree-contents*
2.2.2.Bookmark commands...........|NERDTreeBookmarkCommands|
2.2.3.Invalid bookmarks...........|NERDTreeInvalidBookmarks|
2.3.NERD tree mappings................|NERDTreeMappings|
2.4.The filesystem menu...............|NERDTreeFilesysMenu|
2.4.The NERD tree menu................|NERDTreeMenu|
3.Options.................................|NERDTreeOptions|
3.1.Option summary....................|NERDTreeOptionSummary|
3.2.Option details....................|NERDTreeOptionDetails|
4.Hacking the NERD tree...................|NERDTreeHacking|
4.The NERD tree API.......................|NERDTreeAPI|
4.1.Key map API.......................|NERDTreeKeymapAPI|
4.2.Menu API..........................|NERDTreeMenuAPI|
5.About...................................|NERDTreeAbout|
6.Changelog...............................|NERDTreeChangelog|
7.Credits.................................|NERDTreeCredits|
@@ -68,9 +70,6 @@ The following features and functionality are provided by the NERD tree:
* custom file filters to prevent e.g. vim backup files being displayed
* optional displaying of hidden files (. files)
* files can be "turned off" so that only directories are displayed
* A textual filesystem menu is provided which allows you to
create/delete/move file and directory nodes as well as copy (for
supported OSs)
* The position and size of the NERD tree window can be customised
* The order in which the nodes in the tree are listed can be customised.
* A model of your filesystem is created/maintained as you explore it. This
@@ -87,6 +86,12 @@ The following features and functionality are provided by the NERD tree:
* By default the script overrides the default file browser (netw), so if
you :edit a directory a (slighly modified) NERD tree will appear in the
current window
* A programmable menu system is provided (simulates right clicking on a
node)
* one default menu plugin is provided to perform basic filesytem
operations (create/delete/move/copy files/directories)
* There's an API for adding your own keymappings
==============================================================================
2. Functionality provided *NERDTreeFunctionality*
@@ -123,6 +128,15 @@ The following features and functionality are provided by the NERD tree:
:NERDTreeClose *:NERDTreeClose*
Close the NERD tree in this tab.
:NERDTreeFind *:NERDTreeFind*
Find the current file in the tree.
If not tree exists and the current file is under vim's CWD, then init a
tree at the CWD and reveal the file. Otherwise init a tree in the current
file's directory.
In any case, the current file is revealed and the cursor is placed on it.
------------------------------------------------------------------------------
2.2. Bookmarks *NERDTreeBookmarks*
@@ -145,6 +159,8 @@ Note that the following commands are only available in the NERD tree buffer.
:Bookmark <name>
Bookmark the current node as <name>. If there is already a <name>
bookmark, it is overwritten. <name> must not contain spaces.
If <name> is not provided, it defaults to the file or directory name.
For directories, a trailing slash is present.
:BookmarkToRoot <bookmark>
Make the directory corresponding to <bookmark> the new root. If a treenode
@@ -205,12 +221,12 @@ i.......Open selected file in a split window.....................|NERDTree-i|
gi......Same as i, but leave the cursor on the NERDTree..........|NERDTree-gi|
s.......Open selected file in a new vsplit.......................|NERDTree-s|
gs......Same as s, but leave the cursor on the NERDTree..........|NERDTree-gs|
!.......Execute the current file.................................|NERDTree-!|
O.......Recursively open the selected directory..................|NERDTree-O|
x.......Close the current nodes parent...........................|NERDTree-x|
X.......Recursively close all children of the current node.......|NERDTree-X|
e.......Edit the current dif.....................................|NERDTree-e|
<CR>...............same as |NERDTree-o|.
double-click.......same as the |NERDTree-o| map.
middle-click.......same as |NERDTree-i| for files, same as
|NERDTree-e| for dirs.
@@ -221,15 +237,15 @@ P.......Jump to the root node....................................|NERDTree-P|
p.......Jump to current nodes parent.............................|NERDTree-p|
K.......Jump up inside directories at the current tree depth.....|NERDTree-K|
J.......Jump down inside directories at the current tree depth...|NERDTree-J|
<C-j>...Jump down to the next sibling of the current directory...|NERDTree-c-j|
<C-k>...Jump up to the previous sibling of the current directory.|NERDTree-c-k|
<C-J>...Jump down to the next sibling of the current directory...|NERDTree-C-J|
<C-K>...Jump up to the previous sibling of the current directory.|NERDTree-C-K|
C.......Change the tree root to the selected dir.................|NERDTree-C|
u.......Move the tree root up one directory......................|NERDTree-u|
U.......Same as 'u' except the old root node is left open........|NERDTree-U|
r.......Recursively refresh the current directory................|NERDTree-r|
R.......Recursively refresh the current root.....................|NERDTree-R|
m.......Display the filesystem menu..............................|NERDTree-m|
m.......Display the NERD tree menu...............................|NERDTree-m|
cd......Change the CWD to the dir of the selected node...........|NERDTree-cd|
I.......Toggle whether hidden files displayed....................|NERDTree-I|
@@ -238,6 +254,7 @@ F.......Toggle whether files are displayed.......................|NERDTree-F|
B.......Toggle whether the bookmark table is displayed...........|NERDTree-B|
q.......Close the NERDTree window................................|NERDTree-q|
A.......Zoom (maximize/minimize) the NERDTree window.............|NERDTree-A|
?.......Toggle the display of the quick help.....................|NERDTree-?|
------------------------------------------------------------------------------
@@ -330,14 +347,6 @@ The same as |NERDTree-s| except that the cursor is not moved.
The key combo for this mapping is always "g" + NERDTreeMapOpenVSplit (see
|NERDTree-s|).
------------------------------------------------------------------------------
*NERDTree-!*
Default key: !
Map option: NERDTreeMapExecute
Applies to: files.
Executes the selected file, prompting for arguments first.
------------------------------------------------------------------------------
*NERDTree-O*
Default key: O
@@ -430,16 +439,16 @@ If the cursor is already on the last node then do the following:
* go to the last child of that node
------------------------------------------------------------------------------
*NERDTree-c-j*
Default key: <C-j>
*NERDTree-C-J*
Default key: <C-J>
Map option: NERDTreeMapJumpNextSibling
Applies to: files and directories.
Jump to the next sibling of the selected node.
------------------------------------------------------------------------------
*NERDTree-c-k*
Default key: <C-k>
*NERDTree-C-K*
Default key: <C-K>
Map option: NERDTreeMapJumpPrevSibling
Applies to: files and directories.
@@ -492,10 +501,18 @@ Recursively refresh the tree root.
------------------------------------------------------------------------------
*NERDTree-m*
Default key: m
Map option: NERDTreeMapFilesystemMenu
Map option: NERDTreeMapMenu
Applies to: files and directories.
Display the filesystem menu. See |NERDTreeFilesysMenu| for details.
Display the NERD tree menu. See |NERDTreeMenu| for details.
------------------------------------------------------------------------------
*NERDTree-cd*
Default key: cd
Map option: NERDTreeMapChdir
Applies to: files and directories.
Change vims current working directory to that of the selected node.
------------------------------------------------------------------------------
*NERDTree-I*
@@ -537,6 +554,14 @@ Applies to: no restrictions.
Closes the NERDtree window.
------------------------------------------------------------------------------
*NERDTree-A*
Default key: A
Map option: NERDTreeMapToggleZoom
Applies to: no restrictions.
Maximize (zoom) and minimize the NERDtree window.
------------------------------------------------------------------------------
*NERDTree-?*
Default key: ?
@@ -546,44 +571,18 @@ Applies to: no restrictions.
Toggles whether the quickhelp is displayed.
------------------------------------------------------------------------------
2.3. The filesystem menu *NERDTreeFilesysMenu*
2.3. The NERD tree menu *NERDTreeMenu*
The purpose of the filesystem menu is to allow you to perform basic filesystem
operations quickly from the NERD tree rather than the console.
The NERD tree has a menu that can be programmed via the an API (see
|NERDTreeMenuAPI|). The idea is to simulate the "right click" menus that most
file explorers have.
The filesystem menu can be accessed with 'm' mapping and has four supported
operations: >
1. Adding nodes.
2. Move nodes.
3. Deleting nodes.
3. Copying nodes.
<
1. Adding nodes:
To add a node move the cursor onto (or anywhere inside) the directory you wish
to create the new node inside. Select the 'add node' option from the
filesystem menu and type a filename. If the filename you type ends with a '/'
character then a directory will be created. Once the operation is completed,
the cursor is placed on the new node.
The script comes with two default menu plugins: exec_menuitem.vim and
fs_menu.vim. fs_menu.vim adds some basic filesystem operations to the menu for
creating/deleting/moving/copying files and dirs. exec_menuitem.vim provides a
menu item to execute executable files.
2. Move nodes:
To move/rename a node, put the cursor on it and select the 'move' option from
the filesystem menu. Enter the new location for the node and it will be
moved. If the old file is open in a buffer, you will be asked if you wish to
delete that buffer. Once the operation is complete the cursor will be placed
on the renamed node.
3. Deleting nodes:
To delete a node put the cursor on it and select the 'delete' option from the
filesystem menu. After confirmation the node will be deleted. If a file is
deleted but still exists as a buffer you will be given the option to delete
that buffer.
4. Copying nodes:
To copy a node put the cursor on it and select the 'copy' option from the
filesystem menu. Enter the new location and you're done. Note: copying is
currently only supported for *nix operating systems. If someone knows a
one line copying command for windows that doesnt require user confirmation
then id be grateful if you'd email me.
Related tags: |NERDTree-m| |NERDTreeApi|
==============================================================================
3. Customisation *NERDTreeOptions*
@@ -649,6 +648,12 @@ NERD tree. These options should be set in your vimrc.
|'NERDTreeWinSize'| Sets the window size when the NERD tree is
opened.
|'NERDTreeMinimalUI'| Disables display of the 'Bookmarks' label and
'Press ? for help' text.
|'NERDTreeDirArrows'| Tells the NERD tree to use arrows instead of
+ ~ chars when displaying directories.
------------------------------------------------------------------------------
3.2. Customisation details *NERDTreeOptionDetails*
@@ -679,7 +684,7 @@ If set to 1, the NERD tree window will center around the cursor if it moves to
within |'NERDTreeAutoCenterThreshold'| lines of the top/bottom of the window.
This is ONLY done in response to tree navigation mappings,
i.e. |NERDTree-J| |NERDTree-K| |NERDTree-C-J| |NERDTree-c-K| |NERDTree-p|
i.e. |NERDTree-J| |NERDTree-K| |NERDTree-C-J| |NERDTree-C-K| |NERDTree-p|
|NERDTree-P|
The centering is done with a |zz| operation.
@@ -742,7 +747,7 @@ Values: 0 or 1.
Default: 1.
If set to 1, the current cursor line in the NERD tree buffer will be
highlighted. This is done using the |cursorline| option.
highlighted. This is done using the |'cursorline'| option.
------------------------------------------------------------------------------
*'NERDTreeHijackNetrw'*
@@ -815,7 +820,7 @@ Values: 0 or 1.
Default: 0
If set to 1, the NERD tree window will close after opening a file with the
|NERDTree-o| or |NERDTree-i| mappings.
|NERDTree-o|, |NERDTree-i|, |NERDTree-t| and |NERDTree-T| mappings.
------------------------------------------------------------------------------
*'NERDTreeShowBookmarks'*
@@ -928,44 +933,167 @@ Default: 31.
This option is used to change the size of the NERD tree when it is loaded.
------------------------------------------------------------------------------
*'NERDTreeMinimalUI'*
Values: 0 or 1
Default: 0
This options disables the 'Bookmarks' label 'Press ? for help' text. Use one
of the following lines to set this option: >
let NERDTreeMinimalUI=0
let NERDTreeMinimalUI=1
<
------------------------------------------------------------------------------
*'NERDTreeDirArrows'*
Values: 0 or 1
Default: 0.
This option is used to change the default look of directory nodes displayed in
the tree. When set to 0 it shows old-school bars (|), + and ~ chars. If set to
1 it shows right and down arrows. Use one of the follow lines to set this
option: >
let NERDTreeDirArrows=0
let NERDTreeDirArrows=1
<
==============================================================================
4. Hacking the NERD tree *NERDTreeHacking*
4. The NERD tree API *NERDTreeAPI*
Public functions ~
The NERD tree script allows you to add custom key mappings and menu items via
a set of API calls. Any scripts that use this API should be placed in
~/.vim/nerdtree_plugin/ (*nix) or ~/vimfiles/nerdtree_plugin (windows).
The script provides 2 public functions for your hacking pleasure. Their
signatures are: >
function! NERDTreeGetCurrentNode()
function! NERDTreeGetCurrentPath()
The script exposes some prototype objects that can be used to manipulate the
tree and/or get information from it: >
g:NERDTreePath
g:NERDTreeDirNode
g:NERDTreeFileNode
g:NERDTreeBookmark
<
The first returns the node object that the cursor is currently on, while the
second returns the corresponding path object.
See the code/comments in NERD_tree.vim to find how to use these objects. The
following code conventions are used:
* class members start with a capital letter
* instance members start with a lower case letter
* private members start with an underscore
This is probably a good time to mention that the script implements prototype
style OO. To see the functions that each class provides you can read look at
the code.
See this blog post for more details:
http://got-ravings.blogspot.com/2008/09/vim-pr0n-prototype-based-objects.html
Use the node objects to manipulate the structure of the tree. Use the path
objects to access the files/directories the tree nodes represent.
------------------------------------------------------------------------------
4.1. Key map API *NERDTreeKeymapAPI*
The NERD tree filetype ~
NERDTreeAddKeyMap({options}) *NERDTreeAddKeyMap()*
Adds a new keymapping for all NERD tree buffers.
{options} must be a dictionary, and must contain the following keys:
"key" - the trigger key for the new mapping
"callback" - the function the new mapping will be bound to
"quickhelpText" - the text that will appear in the quickhelp (see
|NERDTree-?|)
NERD tree buffers have a filetype of "nerdtree". You can use this to hack the
NERD tree via autocommands (on |FileType|) or via an ftplugin.
Example: >
call NERDTreeAddKeyMap({
\ 'key': 'b',
\ 'callback': 'NERDTreeEchoCurrentNode',
\ 'quickhelpText': 'echo full path of current node' })
For example, putting this code in ~/.vim/ftplugin/nerdtree.vim would override
the o mapping, making it open the selected node in a new gvim instance. >
nnoremap <silent> <buffer> o :call <sid>openInNewVimInstance()<cr>
function! s:openInNewVimInstance()
let p = NERDTreeGetCurrentPath()
if p != {}
silent exec "!gvim " . p.strForOS(1) . "&"
endif
endfunction
function! NERDTreeEchoCurrentNode()
let n = g:NERDTreeFileNode.GetSelected()
if n != {}
echomsg 'Current node: ' . n.path.str()
endif
endfunction
<
This way you can add new mappings or :commands or override any existing
mapping.
This code should sit in a file like ~/.vim/nerdtree_plugin/mymapping.vim.
It adds a (rather useless) mapping on 'b' which echos the full path to the
current node.
------------------------------------------------------------------------------
4.2. Menu API *NERDTreeMenuAPI*
NERDTreeAddSubmenu({options}) *NERDTreeAddSubmenu()*
Creates and returns a new submenu.
{options} must be a dictionary and must contain the following keys:
"text" - the text of the submenu that the user will see
"shortcut" - a shortcut key for the submenu (need not be unique)
The following keys are optional:
"isActiveCallback" - a function that will be called to determine whether
this submenu item will be displayed or not. The callback function must return
0 or 1.
"parent" - the parent submenu of the new submenu (returned from a previous
invocation of NERDTreeAddSubmenu()). If this key is left out then the new
submenu will sit under the top level menu.
See below for an example.
NERDTreeAddMenuItem({options}) *NERDTreeAddMenuItem()*
Adds a new menu item to the NERD tree menu (see |NERDTreeMenu|).
{options} must be a dictionary and must contain the
following keys:
"text" - the text of the menu item which the user will see
"shortcut" - a shortcut key for the menu item (need not be unique)
"callback" - the function that will be called when the user activates the
menu item.
The following keys are optional:
"isActiveCallback" - a function that will be called to determine whether
this menu item will be displayed or not. The callback function must return
0 or 1.
"parent" - if the menu item belongs under a submenu then this key must be
specified. This value for this key will be the object that
was returned when the submenu was created with |NERDTreeAddSubmenu()|.
See below for an example.
NERDTreeAddMenuSeparator([{options}]) *NERDTreeAddMenuSeparator()*
Adds a menu separator (a row of dashes).
{options} is an optional dictionary that may contain the following keys:
"isActiveCallback" - see description in |NERDTreeAddMenuItem()|.
Below is an example of the menu API in action. >
call NERDTreeAddMenuSeparator()
call NERDTreeAddMenuItem({
\ 'text': 'a (t)op level menu item',
\ 'shortcut': 't',
\ 'callback': 'SomeFunction' })
let submenu = NERDTreeAddSubmenu({
\ 'text': 'a (s)ub menu',
\ 'shortcut': 's' })
call NERDTreeAddMenuItem({
\ 'text': '(n)ested item 1',
\ 'shortcut': 'n',
\ 'callback': 'SomeFunction',
\ 'parent': submenu })
call NERDTreeAddMenuItem({
\ 'text': '(n)ested item 2',
\ 'shortcut': 'n',
\ 'callback': 'SomeFunction',
\ 'parent': submenu })
<
This will create the following menu: >
--------------------
a (t)op level menu item
a (s)ub menu
<
Where selecting "a (s)ub menu" will lead to a second menu: >
(n)ested item 1
(n)ested item 2
<
When any of the 3 concrete menu items are selected the function "SomeFunction"
will be called.
------------------------------------------------------------------------------
NERDTreeRender() *NERDTreeRender()*
Re-renders the NERD tree buffer. Useful if you change the state of the
tree and you want to it to be reflected in the UI.
==============================================================================
5. About *NERDTreeAbout*
@@ -973,10 +1101,10 @@ mapping.
The author of the NERD tree is a terrible terrible monster called Martyzilla
who gobbles up small children with milk and sugar for breakfast.
He can be reached at martin_grenfell at msn.com. He would love to hear from
you, so feel free to send him suggestions and/or comments about this plugin.
Don't be shy --- the worst he can do is slaughter you and stuff you in the
fridge for later ;)
He can be reached at martin.grenfell at gmail dot com. He would love to hear
from you, so feel free to send him suggestions and/or comments about this
plugin. Don't be shy --- the worst he can do is slaughter you and stuff you in
the fridge for later ;)
The latest stable versions can be found at
http://www.vim.org/scripts/script.php?script_id=1658
@@ -988,6 +1116,65 @@ The latest dev versions are on github
==============================================================================
6. Changelog *NERDTreeChangelog*
4.2.0
- Add NERDTreeDirArrows option to make the UI use pretty arrow chars
instead of the old +~| chars to define the tree structure (sickill)
- shift the syntax highlighting out into its own syntax file (gnap)
- add some mac specific options to the filesystem menu - for macvim
only (andersonfreitas)
- Add NERDTreeMinimalUI option to remove some non functional parts of the
nerdtree ui (camthompson)
- tweak the behaviour of :NERDTreeFind - see :help :NERDTreeFind for the
new behaviour (benjamingeiger)
- if no name is given to :Bookmark, make it default to the name of the
target file/dir (minyoung)
- use 'file' completion when doing copying, create, and move
operations (EvanDotPro)
- lots of misc bug fixes (paddyoloughlin, sdewald, camthompson, Vitaly
Bogdanov, AndrewRadev, mathias, scottstvnsn, kml, wycats, me RAWR!)
4.1.0
features:
- NERDTreeFind to reveal the node for the current buffer in the tree,
see |NERDTreeFind|. This effectively merges the FindInNERDTree plugin (by
Doug McInnes) into the script.
- make NERDTreeQuitOnOpen apply to the t/T keymaps too. Thanks to Stefan
Ritter and Rémi Prévost.
- truncate the root node if wider than the tree window. Thanks to Victor
Gonzalez.
bugfixes:
- really fix window state restoring
- fix some win32 path escaping issues. Thanks to Stephan Baumeister, Ricky,
jfilip1024, and Chris Chambers
4.0.0
- add a new programmable menu system (see :help NERDTreeMenu).
- add new APIs to add menus/menu-items to the menu system as well as
custom key mappings to the NERD tree buffer (see :help NERDTreeAPI).
- removed the old API functions
- added a mapping to maximize/restore the size of nerd tree window, thanks
to Guillaume Duranceau for the patch. See :help NERDTree-A for details.
- fix a bug where secondary nerd trees (netrw hijacked trees) and
NERDTreeQuitOnOpen didnt play nicely, thanks to Curtis Harvey.
- fix a bug where the script ignored directories whose name ended in a dot,
thanks to Aggelos Orfanakos for the patch.
- fix a bug when using the x mapping on the tree root, thanks to Bryan
Venteicher for the patch.
- fix a bug where the cursor position/window size of the nerd tree buffer
wasnt being stored on closing the window, thanks to Richard Hart.
- fix a bug where NERDTreeMirror would mirror the wrong tree
3.1.1
- fix a bug where a non-listed no-name buffer was getting created every
time the tree windows was created, thanks to Derek Wyatt and owen1
- make <CR> behave the same as the 'o' mapping
- some helptag fixes in the doc, thanks strull
- fix a bug when using :set nohidden and opening a file where the previous
buf was modified. Thanks iElectric
- other minor fixes
3.1.0
New features:
- add mappings to open files in a vsplit, see :help NERDTree-s and :help
@@ -1069,6 +1256,33 @@ just downloaded pr0n instead.
Frederic Chanal (nach)
Alf Mikula
Lucas S. Buchala
Curtis Harvey
Guillaume Duranceau
Richard Hart (hates)
Doug McInnes
Stefan Ritter
Rémi Prévost
Victor Gonzalez
Stephan Baumeister
Ricky
jfilip1024
Chris Chambers
Vitaly Bogdanov
Patrick O'Loughlin (paddyoloughlin)
Cam Thompson (camthompson)
Marcin Kulik (sickill)
Steve DeWald (sdewald)
Ivan Necas (iNecas)
George Ang (gnap)
Evan Coury (EvanDotPro)
Andrew Radev (AndrewRadev)
Matt Gauger (mathias)
Scott Stevenson (scottstvnsn)
Anderson Freitas (andersonfreitas)
Kamil K. Lemański (kml)
Yehuda Katz (wycats)
Min-Young Wu (minyoung)
Benjamin Geiger (benjamingeiger)
==============================================================================
8. License *NERDTreeLicense*

View File

@@ -0,0 +1,41 @@
" ============================================================================
" File: exec_menuitem.vim
" Description: plugin for NERD Tree that provides an execute file menu item
" Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
" Last Change: 22 July, 2009
" License: This program is free software. It comes without any warranty,
" to the extent permitted by applicable law. You can redistribute
" it and/or modify it under the terms of the Do What The Fuck You
" Want To Public License, Version 2, as published by Sam Hocevar.
" See http://sam.zoy.org/wtfpl/COPYING for more details.
"
" ============================================================================
if exists("g:loaded_nerdtree_exec_menuitem")
finish
endif
let g:loaded_nerdtree_exec_menuitem = 1
call NERDTreeAddMenuItem({
\ 'text': '(!)Execute file',
\ 'shortcut': '!',
\ 'callback': 'NERDTreeExecFile',
\ 'isActiveCallback': 'NERDTreeExecFileActive' })
function! NERDTreeExecFileActive()
let node = g:NERDTreeFileNode.GetSelected()
return !node.path.isDirectory && node.path.isExecutable
endfunction
function! NERDTreeExecFile()
let treenode = g:NERDTreeFileNode.GetSelected()
echo "==========================================================\n"
echo "Complete the command to execute (add arguments etc):\n"
let cmd = treenode.path.str({'escape': 1})
let cmd = input(':!', cmd . ' ')
if cmd != ''
exec ':!' . cmd
else
echo "Aborted"
endif
endfunction

224
nerdtree_plugin/fs_menu.vim Normal file
View File

@@ -0,0 +1,224 @@
" ============================================================================
" File: fs_menu.vim
" Description: plugin for the NERD Tree that provides a file system menu
" Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
" Last Change: 17 July, 2009
" License: This program is free software. It comes without any warranty,
" to the extent permitted by applicable law. You can redistribute
" it and/or modify it under the terms of the Do What The Fuck You
" Want To Public License, Version 2, as published by Sam Hocevar.
" See http://sam.zoy.org/wtfpl/COPYING for more details.
"
" ============================================================================
if exists("g:loaded_nerdtree_fs_menu")
finish
endif
let g:loaded_nerdtree_fs_menu = 1
call NERDTreeAddMenuItem({'text': '(a)dd a childnode', 'shortcut': 'a', 'callback': 'NERDTreeAddNode'})
call NERDTreeAddMenuItem({'text': '(m)ove the current node', 'shortcut': 'm', 'callback': 'NERDTreeMoveNode'})
call NERDTreeAddMenuItem({'text': '(d)elete the current node', 'shortcut': 'd', 'callback': 'NERDTreeDeleteNode'})
if has("gui_mac") || has("gui_macvim")
call NERDTreeAddMenuItem({'text': '(r)eveal in Finder the current node', 'shortcut': 'r', 'callback': 'NERDTreeRevealInFinder'})
call NERDTreeAddMenuItem({'text': '(o)pen the current node with system editor', 'shortcut': 'o', 'callback': 'NERDTreeExecuteFile'})
call NERDTreeAddMenuItem({'text': '(q)uicklook the current node', 'shortcut': 'q', 'callback': 'NERDTreeQuickLook'})
endif
if g:NERDTreePath.CopyingSupported()
call NERDTreeAddMenuItem({'text': '(c)copy the current node', 'shortcut': 'c', 'callback': 'NERDTreeCopyNode'})
endif
"FUNCTION: s:echo(msg){{{1
function! s:echo(msg)
redraw
echomsg "NERDTree: " . a:msg
endfunction
"FUNCTION: s:echoWarning(msg){{{1
function! s:echoWarning(msg)
echohl warningmsg
call s:echo(a:msg)
echohl normal
endfunction
"FUNCTION: s:promptToDelBuffer(bufnum, msg){{{1
"prints out the given msg and, if the user responds by pushing 'y' then the
"buffer with the given bufnum is deleted
"
"Args:
"bufnum: the buffer that may be deleted
"msg: a message that will be echoed to the user asking them if they wish to
" del the buffer
function! s:promptToDelBuffer(bufnum, msg)
echo a:msg
if nr2char(getchar()) ==# 'y'
exec "silent bdelete! " . a:bufnum
endif
endfunction
"FUNCTION: NERDTreeAddNode(){{{1
function! NERDTreeAddNode()
let curDirNode = g:NERDTreeDirNode.GetSelected()
let newNodeName = input("Add a childnode\n".
\ "==========================================================\n".
\ "Enter the dir/file name to be created. Dirs end with a '/'\n" .
\ "", curDirNode.path.str() . g:NERDTreePath.Slash(), "file")
if newNodeName ==# ''
call s:echo("Node Creation Aborted.")
return
endif
try
let newPath = g:NERDTreePath.Create(newNodeName)
let parentNode = b:NERDTreeRoot.findNode(newPath.getParent())
let newTreeNode = g:NERDTreeFileNode.New(newPath)
if parentNode.isOpen || !empty(parentNode.children)
call parentNode.addChild(newTreeNode, 1)
call NERDTreeRender()
call newTreeNode.putCursorHere(1, 0)
endif
catch /^NERDTree/
call s:echoWarning("Node Not Created.")
endtry
endfunction
"FUNCTION: NERDTreeMoveNode(){{{1
function! NERDTreeMoveNode()
let curNode = g:NERDTreeFileNode.GetSelected()
let newNodePath = input("Rename the current node\n" .
\ "==========================================================\n" .
\ "Enter the new path for the node: \n" .
\ "", curNode.path.str(), "file")
if newNodePath ==# ''
call s:echo("Node Renaming Aborted.")
return
endif
try
let bufnum = bufnr(curNode.path.str())
call curNode.rename(newNodePath)
call NERDTreeRender()
"if the node is open in a buffer, ask the user if they want to
"close that buffer
if bufnum != -1
let prompt = "\nNode renamed.\n\nThe old file is open in buffer ". bufnum . (bufwinnr(bufnum) ==# -1 ? " (hidden)" : "") .". Delete this buffer? (yN)"
call s:promptToDelBuffer(bufnum, prompt)
endif
call curNode.putCursorHere(1, 0)
redraw
catch /^NERDTree/
call s:echoWarning("Node Not Renamed.")
endtry
endfunction
" FUNCTION: NERDTreeDeleteNode() {{{1
function! NERDTreeDeleteNode()
let currentNode = g:NERDTreeFileNode.GetSelected()
let confirmed = 0
if currentNode.path.isDirectory
let choice =input("Delete the current node\n" .
\ "==========================================================\n" .
\ "STOP! To delete this entire directory, type 'yes'\n" .
\ "" . currentNode.path.str() . ": ")
let confirmed = choice ==# 'yes'
else
echo "Delete the current node\n" .
\ "==========================================================\n".
\ "Are you sure you wish to delete the node:\n" .
\ "" . currentNode.path.str() . " (yN):"
let choice = nr2char(getchar())
let confirmed = choice ==# 'y'
endif
if confirmed
try
call currentNode.delete()
call NERDTreeRender()
"if the node is open in a buffer, ask the user if they want to
"close that buffer
let bufnum = bufnr(currentNode.path.str())
if buflisted(bufnum)
let prompt = "\nNode deleted.\n\nThe file is open in buffer ". bufnum . (bufwinnr(bufnum) ==# -1 ? " (hidden)" : "") .". Delete this buffer? (yN)"
call s:promptToDelBuffer(bufnum, prompt)
endif
redraw
catch /^NERDTree/
call s:echoWarning("Could not remove node")
endtry
else
call s:echo("delete aborted")
endif
endfunction
" FUNCTION: NERDTreeCopyNode() {{{1
function! NERDTreeCopyNode()
let currentNode = g:NERDTreeFileNode.GetSelected()
let newNodePath = input("Copy the current node\n" .
\ "==========================================================\n" .
\ "Enter the new path to copy the node to: \n" .
\ "", currentNode.path.str(), "file")
if newNodePath != ""
"strip trailing slash
let newNodePath = substitute(newNodePath, '\/$', '', '')
let confirmed = 1
if currentNode.path.copyingWillOverwrite(newNodePath)
call s:echo("Warning: copying may overwrite files! Continue? (yN)")
let choice = nr2char(getchar())
let confirmed = choice ==# 'y'
endif
if confirmed
try
let newNode = currentNode.copy(newNodePath)
if !empty(newNode)
call NERDTreeRender()
call newNode.putCursorHere(0, 0)
endif
catch /^NERDTree/
call s:echoWarning("Could not copy node")
endtry
endif
else
call s:echo("Copy aborted.")
endif
redraw
endfunction
function! NERDTreeQuickLook()
let treenode = g:NERDTreeFileNode.GetSelected()
if treenode != {}
call system("qlmanage -p 2>/dev/null '" . treenode.path.str() . "'")
endif
endfunction
function! NERDTreeRevealInFinder()
let treenode = g:NERDTreeFileNode.GetSelected()
if treenode != {}
let x = system("open -R '" . treenode.path.str() . "'")
endif
endfunction
function! NERDTreeExecuteFile()
let treenode = g:NERDTreeFileNode.GetSelected()
if treenode != {}
let x = system("open '" . treenode.path.str() . "'")
endif
endfunction
" vim: set sw=4 sts=4 et fdm=marker:

File diff suppressed because it is too large Load Diff

88
syntax/nerdtree.vim Normal file
View File

@@ -0,0 +1,88 @@
let s:tree_up_dir_line = '.. (up a dir)'
"NERDTreeFlags are syntax items that should be invisible, but give clues as to
"how things should be highlighted
syn match NERDTreeFlag #\~#
syn match NERDTreeFlag #\[RO\]#
"highlighting for the .. (up dir) line at the top of the tree
execute "syn match NERDTreeUp #\\V". s:tree_up_dir_line ."#"
"highlighting for the ~/+ symbols for the directory nodes
syn match NERDTreeClosable #\~\<#
syn match NERDTreeClosable #\~\.#
syn match NERDTreeOpenable #+\<#
syn match NERDTreeOpenable #+\.#he=e-1
"highlighting for the tree structural parts
syn match NERDTreePart #|#
syn match NERDTreePart #`#
syn match NERDTreePartFile #[|`]-#hs=s+1 contains=NERDTreePart
"quickhelp syntax elements
syn match NERDTreeHelpKey #" \{1,2\}[^ ]*:#hs=s+2,he=e-1
syn match NERDTreeHelpKey #" \{1,2\}[^ ]*,#hs=s+2,he=e-1
syn match NERDTreeHelpTitle #" .*\~#hs=s+2,he=e-1 contains=NERDTreeFlag
syn match NERDTreeToggleOn #".*(on)#hs=e-2,he=e-1 contains=NERDTreeHelpKey
syn match NERDTreeToggleOff #".*(off)#hs=e-3,he=e-1 contains=NERDTreeHelpKey
syn match NERDTreeHelpCommand #" :.\{-}\>#hs=s+3
syn match NERDTreeHelp #^".*# contains=NERDTreeHelpKey,NERDTreeHelpTitle,NERDTreeFlag,NERDTreeToggleOff,NERDTreeToggleOn,NERDTreeHelpCommand
"highlighting for readonly files
syn match NERDTreeRO #.*\[RO\]#hs=s+2 contains=NERDTreeFlag,NERDTreeBookmark,NERDTreePart,NERDTreePartFile
"highlighting for sym links
syn match NERDTreeLink #[^-| `].* -> # contains=NERDTreeBookmark,NERDTreeOpenable,NERDTreeClosable,NERDTreeDirSlash
"highlighing for directory nodes and file nodes
syn match NERDTreeDirSlash #/#
syn match NERDTreeDir #[^-| `].*/# contains=NERDTreeLink,NERDTreeDirSlash,NERDTreeOpenable,NERDTreeClosable
syn match NERDTreeExecFile #[|` ].*\*\($\| \)# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark
syn match NERDTreeFile #|-.*# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark,NERDTreeExecFile
syn match NERDTreeFile #`-.*# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark,NERDTreeExecFile
syn match NERDTreeCWD #^[</].*$#
"highlighting for bookmarks
syn match NERDTreeBookmark # {.*}#hs=s+1
"highlighting for the bookmarks table
syn match NERDTreeBookmarksLeader #^>#
syn match NERDTreeBookmarksHeader #^>-\+Bookmarks-\+$# contains=NERDTreeBookmarksLeader
syn match NERDTreeBookmarkName #^>.\{-} #he=e-1 contains=NERDTreeBookmarksLeader
syn match NERDTreeBookmark #^>.*$# contains=NERDTreeBookmarksLeader,NERDTreeBookmarkName,NERDTreeBookmarksHeader
if exists("g:NERDChristmasTree") && g:NERDChristmasTree
hi def link NERDTreePart Special
hi def link NERDTreePartFile Type
hi def link NERDTreeFile Normal
hi def link NERDTreeExecFile Title
hi def link NERDTreeDirSlash Identifier
hi def link NERDTreeClosable Type
else
hi def link NERDTreePart Normal
hi def link NERDTreePartFile Normal
hi def link NERDTreeFile Normal
hi def link NERDTreeClosable Title
endif
hi def link NERDTreeBookmarksHeader statement
hi def link NERDTreeBookmarksLeader ignore
hi def link NERDTreeBookmarkName Identifier
hi def link NERDTreeBookmark normal
hi def link NERDTreeHelp String
hi def link NERDTreeHelpKey Identifier
hi def link NERDTreeHelpCommand Identifier
hi def link NERDTreeHelpTitle Macro
hi def link NERDTreeToggleOn Question
hi def link NERDTreeToggleOff WarningMsg
hi def link NERDTreeDir Directory
hi def link NERDTreeUp Directory
hi def link NERDTreeCWD Statement
hi def link NERDTreeLink Macro
hi def link NERDTreeOpenable Title
hi def link NERDTreeFlag ignore
hi def link NERDTreeRO WarningMsg
hi def link NERDTreeBookmark Statement
hi def link NERDTreeCurrentNode Search