mirror of
https://github.com/preservim/nerdtree.git
synced 2025-11-09 11:53:48 -05:00
Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9aba1c17f6 | ||
|
|
0fc5d3f656 | ||
|
|
729abf8e9b | ||
|
|
96215c5da6 | ||
|
|
f4c455bc2f | ||
|
|
22904e41de | ||
|
|
d49c742daf | ||
|
|
a59a2f6177 | ||
|
|
2f399b9ba4 | ||
|
|
4b61723952 | ||
|
|
00ab690758 | ||
|
|
d4b4d69469 | ||
|
|
283559bd97 | ||
|
|
38442b06d4 | ||
|
|
ae0d744357 | ||
|
|
094074d8c6 | ||
|
|
9b192b4be4 | ||
|
|
5fcdd03f12 | ||
|
|
d89dbd354a | ||
|
|
ed273e108d | ||
|
|
03dec4cde4 | ||
|
|
171c3825fa | ||
|
|
be2e602efa |
@@ -122,7 +122,7 @@ For example, you could use bookmarks to tag all of your project directories.
|
|||||||
2.2.1. The Bookmark Table *NERDTreeBookmarkTable*
|
2.2.1. The Bookmark Table *NERDTreeBookmarkTable*
|
||||||
|
|
||||||
If the bookmark table is active (see |NERDTree-B| and
|
If the bookmark table is active (see |NERDTree-B| and
|
||||||
|NERDTreeShowBookmarks|), it will be rendered above the tree. You can double
|
|'NERDTreeShowBookmarks'|), it will be rendered above the tree. You can double
|
||||||
click bookmarks or use the |NERDTree-o| mapping to activate them. See also,
|
click bookmarks or use the |NERDTree-o| mapping to activate them. See also,
|
||||||
|NERDTree-t| and |NERDTree-T|
|
|NERDTree-t| and |NERDTree-T|
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@ Note that the following commands are only available in the NERD tree buffer.
|
|||||||
Remove all bookmarks.
|
Remove all bookmarks.
|
||||||
|
|
||||||
:ReadBookmarks
|
:ReadBookmarks
|
||||||
Re-read the bookmarks in the |NERDTreeBookmarksFile|.
|
Re-read the bookmarks in the |'NERDTreeBookmarksFile'|.
|
||||||
|
|
||||||
See also |:NERDTree| and |:NERDTreeFromBookmark|.
|
See also |:NERDTree| and |:NERDTreeFromBookmark|.
|
||||||
|
|
||||||
@@ -171,7 +171,7 @@ If invalid bookmarks are detected, the script will issue an error message and
|
|||||||
the invalid bookmarks will become unavailable for use.
|
the invalid bookmarks will become unavailable for use.
|
||||||
|
|
||||||
These bookmarks will still be stored in the bookmarks file (see
|
These bookmarks will still be stored in the bookmarks file (see
|
||||||
|NERDTreeBookmarksFile|), down the bottom. There will always be a blank line
|
|'NERDTreeBookmarksFile'|), down the bottom. There will always be a blank line
|
||||||
after the valid bookmarks but before the invalid ones.
|
after the valid bookmarks but before the invalid ones.
|
||||||
|
|
||||||
Each line in the bookmarks file represents one bookmark. The proper format is:
|
Each line in the bookmarks file represents one bookmark. The proper format is:
|
||||||
@@ -314,8 +314,8 @@ Applies to: directories.
|
|||||||
Recursively opens the selelected directory.
|
Recursively opens the selelected directory.
|
||||||
|
|
||||||
All files and directories are cached, but if a directory would not be
|
All files and directories are cached, but if a directory would not be
|
||||||
displayed due to file filters (see |NERDTreeIgnore| |NERDTree-f|) or the
|
displayed due to file filters (see |'NERDTreeIgnore'| |NERDTree-f|) or the
|
||||||
hidden file filter (see |NERDTreeShowHidden|) then its contents are not
|
hidden file filter (see |'NERDTreeShowHidden'|) then its contents are not
|
||||||
cached. This is handy, especially if you have .svn directories.
|
cached. This is handy, especially if you have .svn directories.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
@@ -477,7 +477,7 @@ Default key: f
|
|||||||
Map option: NERDTreeMapToggleFilters
|
Map option: NERDTreeMapToggleFilters
|
||||||
Applies to: no restrictions.
|
Applies to: no restrictions.
|
||||||
|
|
||||||
Toggles whether file filters are used. See |NERDTreeIgnore| for details.
|
Toggles whether file filters are used. See |'NERDTreeIgnore'| for details.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTree-F*
|
*NERDTree-F*
|
||||||
@@ -561,53 +561,53 @@ then id be grateful if you'd email me.
|
|||||||
The script provides the following options that can customise the behaviour the
|
The script provides the following options that can customise the behaviour the
|
||||||
NERD tree. These options should be set in your vimrc.
|
NERD tree. These options should be set in your vimrc.
|
||||||
|
|
||||||
|loaded_nerd_tree| Turns off the script.
|
|'loaded_nerd_tree'| Turns off the script.
|
||||||
|
|
||||||
|NERDChristmasTree| Tells the NERD tree to make itself colourful
|
|'NERDChristmasTree'| Tells the NERD tree to make itself colourful
|
||||||
and pretty.
|
and pretty.
|
||||||
|
|
||||||
|NERDTreeAutoCenter| Controls whether the NERD tree window centers
|
|'NERDTreeAutoCenter'| Controls whether the NERD tree window centers
|
||||||
when the cursor moves within a specified
|
when the cursor moves within a specified
|
||||||
distance to the top/bottom of the window.
|
distance to the top/bottom of the window.
|
||||||
|NERDTreeAutoCenterThreshold| Controls the sensitivity of autocentering.
|
|'NERDTreeAutoCenterThreshold'| Controls the sensitivity of autocentering.
|
||||||
|
|
||||||
|NERDTreeCaseSensitiveSort| Tells the NERD tree whether to be case
|
|'NERDTreeCaseSensitiveSort'| Tells the NERD tree whether to be case
|
||||||
sensitive or not when sorting nodes.
|
sensitive or not when sorting nodes.
|
||||||
|
|
||||||
|NERDTreeChDirMode| Tells the NERD tree if/when it should change
|
|'NERDTreeChDirMode'| Tells the NERD tree if/when it should change
|
||||||
vim's current working directory.
|
vim's current working directory.
|
||||||
|
|
||||||
|NERDTreeHighlightCursorline| Tell the NERD tree whether to highlight the
|
|'NERDTreeHighlightCursorline'| Tell the NERD tree whether to highlight the
|
||||||
current cursor line.
|
current cursor line.
|
||||||
|
|
||||||
|NERDTreeIgnore| Tells the NERD tree which files to ignore.
|
|'NERDTreeIgnore'| Tells the NERD tree which files to ignore.
|
||||||
|
|
||||||
|NERDTreeBookmarksFile| Where the bookmarks are stored.
|
|'NERDTreeBookmarksFile'| Where the bookmarks are stored.
|
||||||
|
|
||||||
|NERDTreeMouseMode| Tells the NERD tree how to handle mouse
|
|'NERDTreeMouseMode'| Tells the NERD tree how to handle mouse
|
||||||
clicks.
|
clicks.
|
||||||
|
|
||||||
|NERDTreeQuitOnOpen| Closes the tree window after opening a file.
|
|'NERDTreeQuitOnOpen'| Closes the tree window after opening a file.
|
||||||
|
|
||||||
|NERDTreeShowBookmarks| Tells the NERD tree whether to display the
|
|'NERDTreeShowBookmarks'| Tells the NERD tree whether to display the
|
||||||
bookmarks table on startup.
|
bookmarks table on startup.
|
||||||
|
|
||||||
|NERDTreeShowFiles| Tells the NERD tree whether to display files
|
|'NERDTreeShowFiles'| Tells the NERD tree whether to display files
|
||||||
in the tree on startup.
|
in the tree on startup.
|
||||||
|
|
||||||
|NERDTreeShowHidden| Tells the NERD tree whether to display hidden
|
|'NERDTreeShowHidden'| Tells the NERD tree whether to display hidden
|
||||||
files on startup.
|
files on startup.
|
||||||
|
|
||||||
|NERDTreeShowLineNumbers| Tells the NERD tree whether to display line
|
|'NERDTreeShowLineNumbers'| Tells the NERD tree whether to display line
|
||||||
numbers in the tree window.
|
numbers in the tree window.
|
||||||
|
|
||||||
|NERDTreeSortOrder| Tell the NERD tree how to sort the nodes in
|
|'NERDTreeSortOrder'| Tell the NERD tree how to sort the nodes in
|
||||||
the tree.
|
the tree.
|
||||||
|
|
||||||
|NERDTreeWinPos| Tells the script where to put the NERD tree
|
|'NERDTreeWinPos'| Tells the script where to put the NERD tree
|
||||||
window.
|
window.
|
||||||
|
|
||||||
|NERDTreeWinSize| Sets the window size when the NERD tree is
|
|'NERDTreeWinSize'| Sets the window size when the NERD tree is
|
||||||
opened.
|
opened.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
@@ -616,13 +616,13 @@ NERD tree. These options should be set in your vimrc.
|
|||||||
To enable any of the below options you should put the given line in your
|
To enable any of the below options you should put the given line in your
|
||||||
~/.vimrc
|
~/.vimrc
|
||||||
|
|
||||||
*loaded_nerd_tree*
|
*'loaded_nerd_tree'*
|
||||||
If this plugin is making you feel homicidal, it may be a good idea to turn it
|
If this plugin is making you feel homicidal, it may be a good idea to turn it
|
||||||
off with this line in your vimrc: >
|
off with this line in your vimrc: >
|
||||||
let loaded_nerd_tree=1
|
let loaded_nerd_tree=1
|
||||||
<
|
<
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDChristmasTree*
|
*'NERDChristmasTree'*
|
||||||
Values: 0 or 1.
|
Values: 0 or 1.
|
||||||
Default: 1.
|
Default: 1.
|
||||||
|
|
||||||
@@ -632,12 +632,12 @@ added to the nerd tree to make it more colourful.
|
|||||||
Set it to 0 for a more vanilla looking tree.
|
Set it to 0 for a more vanilla looking tree.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeAutoCenter*
|
*'NERDTreeAutoCenter'*
|
||||||
Values: 0 or 1.
|
Values: 0 or 1.
|
||||||
Default: 1
|
Default: 1
|
||||||
|
|
||||||
If set to 1, the NERD tree window will center around the cursor if it moves to
|
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.
|
within |'NERDTreeAutoCenterThreshold'| lines of the top/bottom of the window.
|
||||||
|
|
||||||
This is ONLY done in response to tree navigation mappings,
|
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|
|
||||||
@@ -646,15 +646,15 @@ i.e. |NERDTree-J| |NERDTree-K| |NERDTree-C-J| |NERDTree-c-K| |NERDTree-p|
|
|||||||
The centering is done with a |zz| operation.
|
The centering is done with a |zz| operation.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeAutoCenterThreshold*
|
*'NERDTreeAutoCenterThreshold'*
|
||||||
Values: Any natural number.
|
Values: Any natural number.
|
||||||
Default: 3
|
Default: 3
|
||||||
|
|
||||||
This option controls the "sensitivity" of the NERD tree auto centering. See
|
This option controls the "sensitivity" of the NERD tree auto centering. See
|
||||||
|NERDTreeAutoCenter| for details.
|
|'NERDTreeAutoCenter'| for details.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeCaseSensitiveSort*
|
*'NERDTreeCaseSensitiveSort'*
|
||||||
Values: 0 or 1.
|
Values: 0 or 1.
|
||||||
Default: 0.
|
Default: 0.
|
||||||
|
|
||||||
@@ -675,7 +675,7 @@ account. The above nodes would then be sorted like this: >
|
|||||||
boner.c
|
boner.c
|
||||||
<
|
<
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeChDirMode*
|
*'NERDTreeChDirMode'*
|
||||||
|
|
||||||
Values: 0, 1 or 2.
|
Values: 0, 1 or 2.
|
||||||
Default: 0.
|
Default: 0.
|
||||||
@@ -698,7 +698,7 @@ is /home/marty/foobar and you make the node for /home/marty/foobar/baz the new
|
|||||||
root then the CWD will become /home/marty/foobar/baz.
|
root then the CWD will become /home/marty/foobar/baz.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeHighlightCursorline*
|
*'NERDTreeHighlightCursorline'*
|
||||||
Values: 0 or 1.
|
Values: 0 or 1.
|
||||||
Default: 1.
|
Default: 1.
|
||||||
|
|
||||||
@@ -706,13 +706,14 @@ 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.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeIgnore*
|
*'NERDTreeIgnore'*
|
||||||
Values: a list of regular expressions.
|
Values: a list of regular expressions.
|
||||||
Default: ['\~$'].
|
Default: ['\~$'].
|
||||||
|
|
||||||
This option is used to specify which files the NERD tree should ignore. It
|
This option is used to specify which files the NERD tree should ignore. It
|
||||||
must be a list of regular expressions. When the NERD tree is rendered, any
|
must be a list of regular expressions. When the NERD tree is rendered, any
|
||||||
files/dirs that match any of the regex's in NERDTreeIgnore wont be displayed.
|
files/dirs that match any of the regex's in 'NERDTreeIgnore' wont be
|
||||||
|
displayed.
|
||||||
|
|
||||||
For example if you put the following line in your vimrc: >
|
For example if you put the following line in your vimrc: >
|
||||||
let NERDTreeIgnore=['\.vim$', '\~$']
|
let NERDTreeIgnore=['\.vim$', '\~$']
|
||||||
@@ -728,14 +729,14 @@ The file filters can be turned on and off dynamically with the |NERDTree-f|
|
|||||||
mapping.
|
mapping.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeBookmarksFile*
|
*'NERDTreeBookmarksFile'*
|
||||||
Values: a path
|
Values: a path
|
||||||
Default: $HOME/.NERDTreeBookmarks
|
Default: $HOME/.NERDTreeBookmarks
|
||||||
|
|
||||||
This is where bookmarks are saved. See |NERDTreeBookmarkCommands|.
|
This is where bookmarks are saved. See |NERDTreeBookmarkCommands|.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeMouseMode*
|
*'NERDTreeMouseMode'*
|
||||||
Values: 1, 2 or 3.
|
Values: 1, 2 or 3.
|
||||||
Default: 1.
|
Default: 1.
|
||||||
|
|
||||||
@@ -753,7 +754,7 @@ then (to single click activate it) you must click somewhere in
|
|||||||
'application.rb'.
|
'application.rb'.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeQuitOnOpen*
|
*'NERDTreeQuitOnOpen'*
|
||||||
|
|
||||||
Values: 0 or 1.
|
Values: 0 or 1.
|
||||||
Default: 0
|
Default: 0
|
||||||
@@ -762,16 +763,17 @@ If set to 1, the NERD tree window will close after opening a file with the
|
|||||||
|NERDTree-o| or |NERDTree-tab| mappings.
|
|NERDTree-o| or |NERDTree-tab| mappings.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeShowBookmarks*
|
*'NERDTreeShowBookmarks'*
|
||||||
Values: 0 or 1.
|
Values: 0 or 1.
|
||||||
Default: 0.
|
Default: 0.
|
||||||
|
|
||||||
If this option is set to 1 then the bookmarks table will be displayed.
|
If this option is set to 1 then the bookmarks table will be displayed.
|
||||||
|
|
||||||
This option can be toggled dynamically, per tree, with the |NERDTree-B| mapping.
|
This option can be toggled dynamically, per tree, with the |NERDTree-B|
|
||||||
|
mapping.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeShowFiles*
|
*'NERDTreeShowFiles'*
|
||||||
Values: 0 or 1.
|
Values: 0 or 1.
|
||||||
Default: 1.
|
Default: 1.
|
||||||
|
|
||||||
@@ -783,7 +785,7 @@ mapping and is useful for drastically shrinking the tree when you are
|
|||||||
navigating to a different part of the tree.
|
navigating to a different part of the tree.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeShowHidden*
|
*'NERDTreeShowHidden'*
|
||||||
Values: 0 or 1.
|
Values: 0 or 1.
|
||||||
Default: 0.
|
Default: 0.
|
||||||
|
|
||||||
@@ -795,7 +797,7 @@ of the follow lines to set this option: >
|
|||||||
<
|
<
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeShowLineNumbers*
|
*'NERDTreeShowLineNumbers'*
|
||||||
Values: 0 or 1.
|
Values: 0 or 1.
|
||||||
Default: 0.
|
Default: 0.
|
||||||
|
|
||||||
@@ -806,7 +808,7 @@ window. Use one of the follow lines to set this option: >
|
|||||||
<
|
<
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeSortOrder*
|
*'NERDTreeSortOrder'*
|
||||||
Values: a list of regular expressions.
|
Values: a list of regular expressions.
|
||||||
Default: ['\/$', '*', '\.swp$', '\.bak$', '\~$']
|
Default: ['\/$', '*', '\.swp$', '\.bak$', '\~$']
|
||||||
|
|
||||||
@@ -821,8 +823,8 @@ all .h files. All files containing the string 'foobar' will be placed at the
|
|||||||
end. The star is a special flag: it tells the script that every node that
|
end. The star is a special flag: it tells the script that every node that
|
||||||
doesnt match any of the other regexps should be placed here.
|
doesnt match any of the other regexps should be placed here.
|
||||||
|
|
||||||
If no star is present in NERDTreeSortOrder then one is automatically appended
|
If no star is present in 'NERDTreeSortOrder' then one is automatically
|
||||||
to the array.
|
appended to the array.
|
||||||
|
|
||||||
The regex '\/$' should be used to match directory nodes.
|
The regex '\/$' should be used to match directory nodes.
|
||||||
|
|
||||||
@@ -839,7 +841,7 @@ Other examples: >
|
|||||||
backup files will appear last with everything else preceding them.
|
backup files will appear last with everything else preceding them.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeWinPos*
|
*'NERDTreeWinPos'*
|
||||||
Values: "left", "right", "top" or "bottom"
|
Values: "left", "right", "top" or "bottom"
|
||||||
Default: "left".
|
Default: "left".
|
||||||
|
|
||||||
@@ -854,7 +856,7 @@ plugins simultaneously. For example, you could have the taglist plugin on the
|
|||||||
left of the window and the NERD tree on the right.
|
left of the window and the NERD tree on the right.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*NERDTreeWinSize*
|
*'NERDTreeWinSize'*
|
||||||
Values: a positive integer.
|
Values: a positive integer.
|
||||||
Default: 31.
|
Default: 31.
|
||||||
|
|
||||||
@@ -899,6 +901,30 @@ fridge for later ;)
|
|||||||
==============================================================================
|
==============================================================================
|
||||||
7. Changelog *NERDTreeChangelog*
|
7. Changelog *NERDTreeChangelog*
|
||||||
|
|
||||||
|
2.14.3
|
||||||
|
Thanks to tpope for the following:
|
||||||
|
- use relative paths when doing edit commands if possible (useful if you
|
||||||
|
have %f on your statusline for example)
|
||||||
|
- allow relative paths for :NERDTree commands, eg ":NERDTree ../foo"
|
||||||
|
- fix a bug where the script used the directory of the current buffer
|
||||||
|
instead of vims cwd for the :NERDTree command
|
||||||
|
- bugfix for read only node highlighting
|
||||||
|
|
||||||
|
2.14.2
|
||||||
|
- when opening a file (with 'o' or double click) dont split the window
|
||||||
|
unless we absolutely have to. This should make the script work better
|
||||||
|
with other explorer plugins. Thanks to Ryan Penn, Simon Peter Nicholls
|
||||||
|
and Michael
|
||||||
|
- fix a bug where directories starting with a '+' char could not be opened.
|
||||||
|
Thanks to Tomasz Chomiuk.
|
||||||
|
- fix a bug where closing vim with :qa with a tree open in another tab
|
||||||
|
would break, thanks to Denis Pokataev.
|
||||||
|
- compatibility bugfix for older versions of vim, thanks to knekk for
|
||||||
|
helping me track it down and to Sean Chou.
|
||||||
|
|
||||||
|
2.14.1
|
||||||
|
- dont clobber &cpo. Thanks to godlygeek for the bug report.
|
||||||
|
|
||||||
2.14.0
|
2.14.0
|
||||||
- fix a bug where the <c-w>o mapping would cause the tree window to be
|
- fix a bug where the <c-w>o mapping would cause the tree window to be
|
||||||
incorrectly sized when reopened.
|
incorrectly sized when reopened.
|
||||||
@@ -938,8 +964,8 @@ fridge for later ;)
|
|||||||
- applied a patch from Matan Nassau to add the NERDTreeQuitOnOpen option
|
- applied a patch from Matan Nassau to add the NERDTreeQuitOnOpen option
|
||||||
which closes the tree window after opening a file. See :help
|
which closes the tree window after opening a file. See :help
|
||||||
NERDTreeQuitOnOpen.
|
NERDTreeQuitOnOpen.
|
||||||
- optimised the nerd tree rendering. Now it takes just over 1/3 of the time
|
- optimised the nerd tree rendering. Now it takes just over 1/3 of the
|
||||||
it previously took to render.
|
time it previously took to render.
|
||||||
- now the tree filter mappings toggle the filters "per tree" rather than
|
- now the tree filter mappings toggle the filters "per tree" rather than
|
||||||
globally. The global filter variables are used to set the initial filter
|
globally. The global filter variables are used to set the initial filter
|
||||||
settings for each new NERD tree.
|
settings for each new NERD tree.
|
||||||
@@ -1015,9 +1041,9 @@ fridge for later ;)
|
|||||||
and you use <c-j/k> the cursor will jump to its PARENTS next/previous
|
and you use <c-j/k> the cursor will jump to its PARENTS next/previous
|
||||||
sibling. Go :help NERDTree-c-j and :help NERDTree-c-k for info.
|
sibling. Go :help NERDTree-c-j and :help NERDTree-c-k for info.
|
||||||
- Extended the behaviour of the J/K mappings. Now if the cursor is on the
|
- Extended the behaviour of the J/K mappings. Now if the cursor is on the
|
||||||
last child of a node and you push J/K it will jump down to the last child
|
last child of a node and you push J/K it will jump down to the last
|
||||||
of the next/prev of its parents siblings that is open and has children.
|
child of the next/prev of its parents siblings that is open and has
|
||||||
Go :help NERDTree-J and :help NERDTree-K for info.
|
children. Go :help NERDTree-J and :help NERDTree-K for info.
|
||||||
- The goal of these changes is to make tree navigation faster.
|
- The goal of these changes is to make tree navigation faster.
|
||||||
- Reorganised the help page a bit.
|
- Reorganised the help page a bit.
|
||||||
- Removed the E mapping.
|
- Removed the E mapping.
|
||||||
@@ -1057,8 +1083,8 @@ fridge for later ;)
|
|||||||
- Tree navigation changes:
|
- Tree navigation changes:
|
||||||
- Added J and K mappings to jump to last/first child of the current dir.
|
- Added J and K mappings to jump to last/first child of the current dir.
|
||||||
Options to customise these mappings have also been added.
|
Options to customise these mappings have also been added.
|
||||||
- Remapped the jump to next/prev sibling commands to be <C-j> and <C-k> by
|
- Remapped the jump to next/prev sibling commands to be <C-j> and <C-k>
|
||||||
default.
|
by default.
|
||||||
These changes should hopefully make tree navigation mappings easier to
|
These changes should hopefully make tree navigation mappings easier to
|
||||||
remember and use as the j and k keys are simply reused 3 times (twice
|
remember and use as the j and k keys are simply reused 3 times (twice
|
||||||
with modifier keys).
|
with modifier keys).
|
||||||
@@ -1220,6 +1246,25 @@ NERDTreeQuitOnOpen was set.
|
|||||||
Thanks to Charlton Wang for reporting bugs with the 'o' mapping and with
|
Thanks to Charlton Wang for reporting bugs with the 'o' mapping and with
|
||||||
handling named pipes.
|
handling named pipes.
|
||||||
|
|
||||||
|
Chur to godlygeek for reporting a bug where &cpo was getting clobbered.
|
||||||
|
|
||||||
|
Cheers to knekk for helping me track down a bug when overwriting dictionary
|
||||||
|
keys that only occurred in some versions of vim.
|
||||||
|
|
||||||
|
Thanks also to Sean Chou for the bug report about the above bug.
|
||||||
|
|
||||||
|
Thanks to Ryan Penn, Simon Peter Nicholls and Michael for pointing out an issue
|
||||||
|
where the script was splitting constantly when using the 'o' mapping while
|
||||||
|
other explorers were open.
|
||||||
|
|
||||||
|
Thanks to Tomasz Chomiuk for the bug report about the script failing when dir
|
||||||
|
names began with a +.
|
||||||
|
|
||||||
|
Thanks to Denis Pokataev for the bug report about the script failing when
|
||||||
|
closing vim with :qa with a tree open in another tab.
|
||||||
|
|
||||||
|
Thanks to tpope for his dope bug reporting.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
9. License *NERDTreeLicense*
|
9. License *NERDTreeLicense*
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
" File: NERD_tree.vim
|
" File: NERD_tree.vim
|
||||||
" Description: vim global plugin that provides a nice tree explorer
|
" Description: vim global plugin that provides a nice tree explorer
|
||||||
" Maintainer: Martin Grenfell <martin_grenfell at msn dot com>
|
" Maintainer: Martin Grenfell <martin_grenfell at msn dot com>
|
||||||
" Last Change: 20 July, 2008
|
" Last Change: 29 October, 2008
|
||||||
" License: This program is free software. It comes without any warranty,
|
" License: This program is free software. It comes without any warranty,
|
||||||
" to the extent permitted by applicable law. You can redistribute
|
" 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
|
" it and/or modify it under the terms of the Do What The Fuck You
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||||
"
|
"
|
||||||
" ============================================================================
|
" ============================================================================
|
||||||
let s:NERD_tree_version = '2.14.0'
|
let s:NERD_tree_version = '2.14.3'
|
||||||
|
|
||||||
" SECTION: Script init stuff {{{1
|
" SECTION: Script init stuff {{{1
|
||||||
"============================================================
|
"============================================================
|
||||||
@@ -22,6 +22,11 @@ if v:version < 700
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let loaded_nerd_tree = 1
|
let loaded_nerd_tree = 1
|
||||||
|
|
||||||
|
"for line continuation - i.e dont want C in &cpo
|
||||||
|
let s:old_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
"Function: s:initVariable() function {{{2
|
"Function: s:initVariable() function {{{2
|
||||||
"This function is used to initialise a given variable to a given value. The
|
"This function is used to initialise a given variable to a given value. The
|
||||||
"variable is only initialised if it does not exist prior
|
"variable is only initialised if it does not exist prior
|
||||||
@@ -127,8 +132,7 @@ let s:escape_chars = " \\`\|\"#%&,?()\*^<>"
|
|||||||
let s:NERDTreeWinName = '_NERD_tree_'
|
let s:NERDTreeWinName = '_NERD_tree_'
|
||||||
|
|
||||||
let s:tree_wid = 2
|
let s:tree_wid = 2
|
||||||
let s:tree_markup_reg = '[ \-+~`|]'
|
let s:tree_markup_reg = '^[ `|]*[\-+~]'
|
||||||
let s:tree_markup_reg_neg = '[^ \-+~`|]'
|
|
||||||
let s:tree_up_dir_line = '.. (up a dir)'
|
let s:tree_up_dir_line = '.. (up a dir)'
|
||||||
|
|
||||||
let s:os_slash = '/'
|
let s:os_slash = '/'
|
||||||
@@ -136,7 +140,6 @@ if s:running_windows
|
|||||||
let s:os_slash = '\'
|
let s:os_slash = '\'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
" SECTION: Commands {{{1
|
" SECTION: Commands {{{1
|
||||||
"============================================================
|
"============================================================
|
||||||
"init the command that users start the nerd tree with
|
"init the command that users start the nerd tree with
|
||||||
@@ -355,7 +358,7 @@ endfunction
|
|||||||
function! s:Bookmark.toRoot()
|
function! s:Bookmark.toRoot()
|
||||||
if self.validate()
|
if self.validate()
|
||||||
try
|
try
|
||||||
let targetNode = s:Bookmark.GetNodeForName(self.name, 1)
|
let targetNode = self.getNode(1)
|
||||||
catch /NERDTree.BookmarkedNodeNotFound/
|
catch /NERDTree.BookmarkedNodeNotFound/
|
||||||
let targetNode = s:TreeFileNode.New(s:Bookmark.BookmarkFor(self.name).path)
|
let targetNode = s:TreeFileNode.New(s:Bookmark.BookmarkFor(self.name).path)
|
||||||
endtry
|
endtry
|
||||||
@@ -495,7 +498,7 @@ function! s:TreeFileNode.findNode(path)
|
|||||||
endif
|
endif
|
||||||
return {}
|
return {}
|
||||||
endfunction
|
endfunction
|
||||||
"FUNCTION: TreeFileNode.findOpenDirSiblingWithChildren(direction) {{{3
|
"FUNCTION: TreeFileNode.findOpenDirSiblingWithVisibleChildren(direction) {{{3
|
||||||
"
|
"
|
||||||
"Finds the next sibling for this node in the indicated direction. This sibling
|
"Finds the next sibling for this node in the indicated direction. This sibling
|
||||||
"must be a directory and may/may not have children as specified.
|
"must be a directory and may/may not have children as specified.
|
||||||
@@ -505,7 +508,7 @@ endfunction
|
|||||||
"
|
"
|
||||||
"Return:
|
"Return:
|
||||||
"a treenode object or {} if no appropriate sibling could be found
|
"a treenode object or {} if no appropriate sibling could be found
|
||||||
function! s:TreeFileNode.findOpenDirSiblingWithChildren(direction)
|
function! s:TreeFileNode.findOpenDirSiblingWithVisibleChildren(direction)
|
||||||
"if we have no parent then we can have no siblings
|
"if we have no parent then we can have no siblings
|
||||||
if self.parent != {}
|
if self.parent != {}
|
||||||
let nextSibling = self.findSibling(a:direction)
|
let nextSibling = self.findSibling(a:direction)
|
||||||
@@ -708,6 +711,7 @@ endfunction
|
|||||||
"
|
"
|
||||||
"Args:
|
"Args:
|
||||||
"path: a path object
|
"path: a path object
|
||||||
|
unlet s:TreeDirNode.findNode
|
||||||
function! s:TreeDirNode.findNode(path)
|
function! s:TreeDirNode.findNode(path)
|
||||||
if a:path.equals(self.path)
|
if a:path.equals(self.path)
|
||||||
return self
|
return self
|
||||||
@@ -726,7 +730,6 @@ function! s:TreeDirNode.findNode(path)
|
|||||||
endif
|
endif
|
||||||
return {}
|
return {}
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
"FUNCTION: TreeDirNode.getChildCount() {{{3
|
"FUNCTION: TreeDirNode.getChildCount() {{{3
|
||||||
"Returns the number of children this node has
|
"Returns the number of children this node has
|
||||||
function! s:TreeDirNode.getChildCount()
|
function! s:TreeDirNode.getChildCount()
|
||||||
@@ -824,7 +827,7 @@ endfunction
|
|||||||
"FUNCTION: TreeDirNode.hasVisibleChildren() {{{3
|
"FUNCTION: TreeDirNode.hasVisibleChildren() {{{3
|
||||||
"returns 1 if this node has any childre, 0 otherwise..
|
"returns 1 if this node has any childre, 0 otherwise..
|
||||||
function! s:TreeDirNode.hasVisibleChildren()
|
function! s:TreeDirNode.hasVisibleChildren()
|
||||||
return self.getChildCount() != 0
|
return self.getVisibleChildCount() != 0
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
"FUNCTION: TreeDirNode._initChildren() {{{3
|
"FUNCTION: TreeDirNode._initChildren() {{{3
|
||||||
@@ -882,6 +885,7 @@ endfunction
|
|||||||
"
|
"
|
||||||
"Args:
|
"Args:
|
||||||
"path: a path object representing the full filesystem path to the file/dir that the node represents
|
"path: a path object representing the full filesystem path to the file/dir that the node represents
|
||||||
|
unlet s:TreeDirNode.New
|
||||||
function! s:TreeDirNode.New(path)
|
function! s:TreeDirNode.New(path)
|
||||||
if a:path.isDirectory != 1
|
if a:path.isDirectory != 1
|
||||||
throw "NERDTree.TreeDirNode.InvalidArguments exception. A TreeDirNode object must be instantiated with a directory Path object."
|
throw "NERDTree.TreeDirNode.InvalidArguments exception. A TreeDirNode object must be instantiated with a directory Path object."
|
||||||
@@ -943,6 +947,7 @@ function! s:TreeDirNode._openRecursively2(forceOpen)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
"FUNCTION: TreeDirNode.refresh() {{{3
|
"FUNCTION: TreeDirNode.refresh() {{{3
|
||||||
|
unlet s:TreeDirNode.refresh
|
||||||
function! s:TreeDirNode.refresh()
|
function! s:TreeDirNode.refresh()
|
||||||
call self.path.refresh()
|
call self.path.refresh()
|
||||||
|
|
||||||
@@ -1050,10 +1055,10 @@ endfunction
|
|||||||
let s:Path = {}
|
let s:Path = {}
|
||||||
"FUNCTION: Path.bookmarkNames() {{{3
|
"FUNCTION: Path.bookmarkNames() {{{3
|
||||||
function! s:Path.bookmarkNames()
|
function! s:Path.bookmarkNames()
|
||||||
if !exists("self.bookmarkNames")
|
if !exists("self._bookmarkNames")
|
||||||
call self.cacheDisplayString()
|
call self.cacheDisplayString()
|
||||||
endif
|
endif
|
||||||
return self.bookmarkNames
|
return self._bookmarkNames
|
||||||
endfunction
|
endfunction
|
||||||
"FUNCTION: Path.cacheDisplayString() {{{3
|
"FUNCTION: Path.cacheDisplayString() {{{3
|
||||||
function! s:Path.cacheDisplayString()
|
function! s:Path.cacheDisplayString()
|
||||||
@@ -1063,14 +1068,14 @@ function! s:Path.cacheDisplayString()
|
|||||||
let self.cachedDisplayString = self.cachedDisplayString . '*'
|
let self.cachedDisplayString = self.cachedDisplayString . '*'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let self.bookmarkNames = []
|
let self._bookmarkNames = []
|
||||||
for i in s:Bookmark.Bookmarks()
|
for i in s:Bookmark.Bookmarks()
|
||||||
if i.path.equals(self)
|
if i.path.equals(self)
|
||||||
call add(self.bookmarkNames, i.name)
|
call add(self._bookmarkNames, i.name)
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
if !empty(self.bookmarkNames)
|
if !empty(self._bookmarkNames)
|
||||||
let self.cachedDisplayString .= ' {' . join(self.bookmarkNames) . '}'
|
let self.cachedDisplayString .= ' {' . join(self._bookmarkNames) . '}'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if self.isSymLink
|
if self.isSymLink
|
||||||
@@ -1534,12 +1539,21 @@ endfunction
|
|||||||
"Return: the string for this path that is suitable to be used with the :edit
|
"Return: the string for this path that is suitable to be used with the :edit
|
||||||
"command
|
"command
|
||||||
function! s:Path.strForEditCmd()
|
function! s:Path.strForEditCmd()
|
||||||
|
let p = self.str(1)
|
||||||
|
let cwd = getcwd()
|
||||||
|
|
||||||
if s:running_windows
|
if s:running_windows
|
||||||
return self.strForOS(0)
|
let p = tolower(self.strForOS(0))
|
||||||
else
|
let cwd = tolower(getcwd())
|
||||||
return self.str(1)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
"return a relative path if we can
|
||||||
|
if stridx(p, cwd) == 0
|
||||||
|
let p = strpart(p, strlen(cwd)+1)
|
||||||
|
endif
|
||||||
|
|
||||||
|
return p
|
||||||
|
|
||||||
endfunction
|
endfunction
|
||||||
"FUNCTION: Path.strForGlob() {{{3
|
"FUNCTION: Path.strForGlob() {{{3
|
||||||
function! s:Path.strForGlob()
|
function! s:Path.strForGlob()
|
||||||
@@ -1663,8 +1677,14 @@ function! s:initNerdTree(name)
|
|||||||
if s:Bookmark.BookmarkExistsFor(a:name)
|
if s:Bookmark.BookmarkExistsFor(a:name)
|
||||||
let path = s:Bookmark.BookmarkFor(a:name).path
|
let path = s:Bookmark.BookmarkFor(a:name).path
|
||||||
else
|
else
|
||||||
let dir = a:name == '' ? expand('%:p:h') : a:name
|
let dir = a:name == '' ? getcwd() : a:name
|
||||||
|
|
||||||
|
"hack to get an absolute path if a relative path is given
|
||||||
|
if dir =~ '^\.'
|
||||||
|
let dir = getcwd() . s:os_slash . dir
|
||||||
|
endif
|
||||||
let dir = resolve(dir)
|
let dir = resolve(dir)
|
||||||
|
|
||||||
try
|
try
|
||||||
let path = s:Path.New(dir)
|
let path = s:Path.New(dir)
|
||||||
catch /NERDTree.Path.InvalidArguments/
|
catch /NERDTree.Path.InvalidArguments/
|
||||||
@@ -1828,9 +1848,6 @@ function! s:createTreeWin()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
" for line continuation
|
|
||||||
let cpo_save1 = &cpo
|
|
||||||
set cpo&vim
|
|
||||||
|
|
||||||
call s:bindMappings()
|
call s:bindMappings()
|
||||||
setfiletype nerdtree
|
setfiletype nerdtree
|
||||||
@@ -2059,7 +2076,7 @@ function! s:findNodeLineNumber(treenode)
|
|||||||
|
|
||||||
let curLine = getline(lnum)
|
let curLine = getline(lnum)
|
||||||
|
|
||||||
let indent = match(curLine,s:tree_markup_reg_neg) / s:tree_wid
|
let indent = s:indentLevelFor(curLine)
|
||||||
if indent == curPathComponent
|
if indent == curPathComponent
|
||||||
let curLine = s:stripMarkupFromLine(curLine, 1)
|
let curLine = s:stripMarkupFromLine(curLine, 1)
|
||||||
|
|
||||||
@@ -2090,6 +2107,21 @@ function! s:findRootNodeLineNumber()
|
|||||||
return rootLine
|
return rootLine
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
"FUNCTION: s:firstNormalWindow(){{{2
|
||||||
|
"find the window number of the first normal window
|
||||||
|
function! s:firstNormalWindow()
|
||||||
|
let i = 1
|
||||||
|
while i <= winnr("$")
|
||||||
|
let bnum = winbufnr(i)
|
||||||
|
if bnum != -1 && getbufvar(bnum, '&buftype') == ''
|
||||||
|
\ && !getwinvar(i, '&previewwindow')
|
||||||
|
return i
|
||||||
|
endif
|
||||||
|
|
||||||
|
let i += 1
|
||||||
|
endwhile
|
||||||
|
return -1
|
||||||
|
endfunction
|
||||||
"FUNCTION: s:getPath(ln) {{{2
|
"FUNCTION: s:getPath(ln) {{{2
|
||||||
"Gets the full path to the node that is rendered on the given line number
|
"Gets the full path to the node that is rendered on the given line number
|
||||||
"
|
"
|
||||||
@@ -2117,9 +2149,7 @@ function! s:getPath(ln)
|
|||||||
return t:NERDTreeRoot.path.getParent()
|
return t:NERDTreeRoot.path.getParent()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
"get the indent level for the file (i.e. how deep in the tree it is)
|
let indent = s:indentLevelFor(line)
|
||||||
let indent = match(line, s:tree_markup_reg_neg) / s:tree_wid
|
|
||||||
|
|
||||||
|
|
||||||
"remove the tree parts and the leading space
|
"remove the tree parts and the leading space
|
||||||
let curFile = s:stripMarkupFromLine(line, 0)
|
let curFile = s:stripMarkupFromLine(line, 0)
|
||||||
@@ -2144,7 +2174,7 @@ function! s:getPath(ln)
|
|||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
if curLineStripped =~ '/$'
|
if curLineStripped =~ '/$'
|
||||||
let lpindent = match(curLine,s:tree_markup_reg_neg) / s:tree_wid
|
let lpindent = s:indentLevelFor(curLine)
|
||||||
if lpindent < indent
|
if lpindent < indent
|
||||||
let indent = indent - 1
|
let indent = indent - 1
|
||||||
|
|
||||||
@@ -2207,11 +2237,44 @@ function! s:getTreeWinNum()
|
|||||||
return -1
|
return -1
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
"FUNCTION: s:indentLevelFor(line) {{{2
|
||||||
|
function! s:indentLevelFor(line)
|
||||||
|
return match(a:line, '[^ \-+~`|]') / s:tree_wid
|
||||||
|
endfunction
|
||||||
"FUNCTION: s:isTreeOpen() {{{2
|
"FUNCTION: s:isTreeOpen() {{{2
|
||||||
function! s:isTreeOpen()
|
function! s:isTreeOpen()
|
||||||
return s:getTreeWinNum() != -1
|
return s:getTreeWinNum() != -1
|
||||||
endfunction
|
endfunction
|
||||||
|
"FUNCTION: s:isWindowUsable(winnumber) {{{2
|
||||||
|
"Returns 1 if opening a file from the tree in the given window requires it to
|
||||||
|
"be split
|
||||||
|
"
|
||||||
|
"Args:
|
||||||
|
"winnumber: the number of the window in question
|
||||||
|
function! s:isWindowUsable(winnumber)
|
||||||
|
"gotta split if theres only one window (i.e. the NERD tree)
|
||||||
|
if winnr("$") == 1
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let oldwinnr = winnr()
|
||||||
|
exec a:winnumber . "wincmd p"
|
||||||
|
let specialWindow = getbufvar("%", '&buftype') != '' || getwinvar('%', '&previewwindow')
|
||||||
|
let modified = &modified
|
||||||
|
exec oldwinnr . "wincmd p"
|
||||||
|
|
||||||
|
"if its a special window e.g. quickfix or another explorer plugin then we
|
||||||
|
"have to split
|
||||||
|
if specialWindow
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if &hidden
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
return !modified || s:bufInWindows(winbufnr(a:winnumber)) >= 2
|
||||||
|
endfunction
|
||||||
|
|
||||||
" FUNCTION: s:jumpToChild(direction) {{{2
|
" FUNCTION: s:jumpToChild(direction) {{{2
|
||||||
" Args:
|
" Args:
|
||||||
@@ -2231,7 +2294,7 @@ function! s:jumpToChild(direction)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if targetNode.equals(currentNode)
|
if targetNode.equals(currentNode)
|
||||||
let siblingDir = currentNode.parent.findOpenDirSiblingWithChildren(a:direction)
|
let siblingDir = currentNode.parent.findOpenDirSiblingWithVisibleChildren(a:direction)
|
||||||
if siblingDir != {}
|
if siblingDir != {}
|
||||||
let indx = a:direction ? siblingDir.getVisibleChildCount()-1 : 0
|
let indx = a:direction ? siblingDir.getVisibleChildCount()-1 : 0
|
||||||
let targetNode = siblingDir.getChildByIndex(indx, 1)
|
let targetNode = siblingDir.getChildByIndex(indx, 1)
|
||||||
@@ -2282,18 +2345,24 @@ function! s:openFileNode(treenode)
|
|||||||
if winnr != -1
|
if winnr != -1
|
||||||
exec winnr . "wincmd w"
|
exec winnr . "wincmd w"
|
||||||
|
|
||||||
elseif s:shouldSplitToOpen(winnr("#"))
|
|
||||||
call s:openFileNodeSplit(a:treenode)
|
|
||||||
else
|
else
|
||||||
try
|
if !s:isWindowUsable(winnr("#")) && s:firstNormalWindow() == -1
|
||||||
wincmd p
|
call s:openFileNodeSplit(a:treenode)
|
||||||
exec ("edit " . a:treenode.path.strForEditCmd())
|
else
|
||||||
catch /^Vim\%((\a\+)\)\=:E37/
|
try
|
||||||
call s:putCursorInTreeWin()
|
if !s:isWindowUsable(winnr("#"))
|
||||||
call s:echo("Cannot open file, it is already open and modified")
|
exec s:firstNormalWindow() . "wincmd w"
|
||||||
catch /^Vim\%((\a\+)\)\=:/
|
else
|
||||||
echo v:exception
|
wincmd p
|
||||||
endtry
|
endif
|
||||||
|
exec ("edit " . a:treenode.path.strForEditCmd())
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E37/
|
||||||
|
call s:putCursorInTreeWin()
|
||||||
|
call s:echo("Cannot open file, it is already open and modified")
|
||||||
|
catch /^Vim\%((\a\+)\)\=:/
|
||||||
|
echo v:exception
|
||||||
|
endtry
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -2580,11 +2649,14 @@ endfunction
|
|||||||
"scroll position
|
"scroll position
|
||||||
function! s:saveScreenState()
|
function! s:saveScreenState()
|
||||||
let win = winnr()
|
let win = winnr()
|
||||||
call s:putCursorInTreeWin()
|
try
|
||||||
let t:NERDTreeOldPos = getpos(".")
|
call s:putCursorInTreeWin()
|
||||||
let t:NERDTreeOldTopLine = line("w0")
|
let t:NERDTreeOldPos = getpos(".")
|
||||||
let t:NERDTreeOldWindowSize = s:shouldSplitVertically() ? winwidth("") : winheight("")
|
let t:NERDTreeOldTopLine = line("w0")
|
||||||
exec win . "wincmd w"
|
let t:NERDTreeOldWindowSize = s:shouldSplitVertically() ? winwidth("") : winheight("")
|
||||||
|
exec win . "wincmd w"
|
||||||
|
catch /NERDTree.view.InvalidOperation/
|
||||||
|
endtry
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
"FUNCTION: s:setupSyntaxHighlighting() {{{2
|
"FUNCTION: s:setupSyntaxHighlighting() {{{2
|
||||||
@@ -2618,7 +2690,7 @@ function! s:setupSyntaxHighlighting()
|
|||||||
syn match treeHelp #^".*# contains=treeHelpKey,treeHelpTitle,treeFlag,treeToggleOff,treeToggleOn,treeHelpCommand
|
syn match treeHelp #^".*# contains=treeHelpKey,treeHelpTitle,treeFlag,treeToggleOff,treeToggleOn,treeHelpCommand
|
||||||
|
|
||||||
"highlighting for readonly files
|
"highlighting for readonly files
|
||||||
syn match treeRO #[\/0-9a-zA-Z]\+.*\[RO\]# contains=treeFlag,treeBookmark
|
syn match treeRO #.*\[RO\]#hs=s+2 contains=treeFlag,treeBookmark,treePart,treePartFile
|
||||||
|
|
||||||
"highlighting for sym links
|
"highlighting for sym links
|
||||||
syn match treeLink #[^-| `].* -> # contains=treeBookmark,treeOpenable,treeClosable,treeDirSlash
|
syn match treeLink #[^-| `].* -> # contains=treeBookmark,treeOpenable,treeClosable,treeDirSlash
|
||||||
@@ -2678,37 +2750,6 @@ function! s:setupSyntaxHighlighting()
|
|||||||
hi def link NERDTreeCurrentNode Search
|
hi def link NERDTreeCurrentNode Search
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
"FUNCTION: s:shouldSplitToOpen() {{{2
|
|
||||||
"Returns 1 if opening a file from the tree in the given window requires it to
|
|
||||||
"be split
|
|
||||||
"
|
|
||||||
"Args:
|
|
||||||
"winnumber: the number of the window in question
|
|
||||||
function! s:shouldSplitToOpen(winnumber)
|
|
||||||
"gotta split if theres only one window (i.e. the NERD tree)
|
|
||||||
if winnr("$") == 1
|
|
||||||
return 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
let oldwinnr = winnr()
|
|
||||||
exec a:winnumber . "wincmd p"
|
|
||||||
let specialWindow = getbufvar("%", '&buftype') != '' || getwinvar('%', '&previewwindow')
|
|
||||||
let modified = &modified
|
|
||||||
exec oldwinnr . "wincmd p"
|
|
||||||
|
|
||||||
"if its a special window e.g. quickfix or another explorer plugin then we
|
|
||||||
"have to split
|
|
||||||
if specialWindow
|
|
||||||
return 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
if &hidden
|
|
||||||
return 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
return modified && s:bufInWindows(winbufnr(a:winnumber)) < 2
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Function: s:shouldSplitVertically() {{{2
|
" Function: s:shouldSplitVertically() {{{2
|
||||||
" Returns 1 if g:NERDTreeWinPos is 'left' or 'right'
|
" Returns 1 if g:NERDTreeWinPos is 'left' or 'right'
|
||||||
function! s:shouldSplitVertically()
|
function! s:shouldSplitVertically()
|
||||||
@@ -2724,7 +2765,7 @@ endfunction
|
|||||||
function! s:stripMarkupFromLine(line, removeLeadingSpaces)
|
function! s:stripMarkupFromLine(line, removeLeadingSpaces)
|
||||||
let line = a:line
|
let line = a:line
|
||||||
"remove the tree parts and the leading space
|
"remove the tree parts and the leading space
|
||||||
let line = substitute (line,"^" . s:tree_markup_reg . "*","","")
|
let line = substitute (line, s:tree_markup_reg,"","")
|
||||||
|
|
||||||
"strip off any read only flag
|
"strip off any read only flag
|
||||||
let line = substitute (line, ' \[RO\]', "","")
|
let line = substitute (line, ' \[RO\]', "","")
|
||||||
@@ -2903,8 +2944,7 @@ function! s:checkForActivate()
|
|||||||
"if they clicked a dir, check if they clicked on the + or ~ sign
|
"if they clicked a dir, check if they clicked on the + or ~ sign
|
||||||
"beside it
|
"beside it
|
||||||
if currentNode.path.isDirectory
|
if currentNode.path.isDirectory
|
||||||
let reg = '^' . s:tree_markup_reg .'*[~+]$'
|
if startToCur =~ s:tree_markup_reg . '$' && char =~ '[+~]'
|
||||||
if startToCur =~ reg
|
|
||||||
call s:activateNode(0)
|
call s:activateNode(0)
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
@@ -3527,4 +3567,8 @@ function! s:upDir(keepState)
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
"reset &cpo back to users setting
|
||||||
|
let &cpo = s:old_cpo
|
||||||
|
|
||||||
" vim: set sw=4 sts=4 et fdm=marker:
|
" vim: set sw=4 sts=4 et fdm=marker:
|
||||||
|
|||||||
Reference in New Issue
Block a user