commit ab0a3a7c249b46f1e180f850edbfc3b3d6ed4f60
parent 2e43ad074bb3b7fafc77b9eea5098047d6fe6e90
Author: Jason Franklin <lifecrisis@users.noreply.github.com>
Date: Sat, 8 Jul 2017 10:04:08 -0400
Merge pull request #720 from lifecrisis/issue526
BUGFIX: Repair opening and closing of cascades.
Diffstat:
4 files changed, 1362 insertions(+), 1352 deletions(-)
diff --git a/README.markdown b/README.markdown
@@ -59,7 +59,7 @@ Installation
git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle/nerdtree
-Then reload vim, run `:helptags ~/.vim/bundle/nerdtree/doc/`, and check out `:help NERD_tree.txt`.
+Then reload Vim, run `:helptags ~/.vim/bundle/nerdtree/doc/`, and check out `:help NERDTree.txt`.
#### [apt-vim](https://github.com/egalpin/apt-vim)
diff --git a/doc/NERDTree.txt b/doc/NERDTree.txt
@@ -0,0 +1,1301 @@
+*NERDTree.txt* A tree explorer plugin that owns your momma!
+
+
+
+ omg its ... ~
+
+ ________ ________ _ ____________ ____ __________ ____________~
+ /_ __/ / / / ____/ / | / / ____/ __ \/ __ \ /_ __/ __ \/ ____/ ____/~
+ / / / /_/ / __/ / |/ / __/ / /_/ / / / / / / / /_/ / __/ / __/ ~
+ / / / __ / /___ / /| / /___/ _, _/ /_/ / / / / _, _/ /___/ /___ ~
+ /_/ /_/ /_/_____/ /_/ |_/_____/_/ |_/_____/ /_/ /_/ |_/_____/_____/ ~
+
+
+ Reference Manual~
+
+
+
+
+==============================================================================
+CONTENTS *NERDTree-contents*
+
+ 1.Intro...................................|NERDTree|
+ 2.Functionality provided..................|NERDTreeFunctionality|
+ 2.1.Global commands...................|NERDTreeGlobalCommands|
+ 2.2.Bookmarks.........................|NERDTreeBookmarks|
+ 2.2.1.The bookmark table..........|NERDTreeBookmarkTable|
+ 2.2.2.Bookmark commands...........|NERDTreeBookmarkCommands|
+ 2.2.3.Invalid bookmarks...........|NERDTreeInvalidBookmarks|
+ 2.3.NERD tree mappings................|NERDTreeMappings|
+ 2.4.The NERD tree menu................|NERDTreeMenu|
+ 3.Options.................................|NERDTreeOptions|
+ 3.1.Option summary....................|NERDTreeOptionSummary|
+ 3.2.Option details....................|NERDTreeOptionDetails|
+ 4.The NERD tree API.......................|NERDTreeAPI|
+ 4.1.Key map API.......................|NERDTreeKeymapAPI|
+ 4.2.Menu API..........................|NERDTreeMenuAPI|
+ 4.3.Menu API..........................|NERDTreeAddPathFilter()|
+ 4.4.Path Listener API.................|NERDTreePathListenerAPI|
+ 5.About...................................|NERDTreeAbout|
+ 6.License.................................|NERDTreeLicense|
+
+==============================================================================
+1. Intro *NERDTree*
+
+What is this "NERD tree"??
+
+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 (netrw), so if
+ you :edit a directory a (slightly 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 filesystem
+ operations (create/delete/move/copy files/directories)
+ * There's an API for adding your own keymappings
+
+
+==============================================================================
+2. Functionality provided *NERDTreeFunctionality*
+
+------------------------------------------------------------------------------
+2.1. Global Commands *NERDTreeGlobalCommands*
+
+:NERDTree [<start-directory> | <bookmark>] *:NERDTree*
+ Opens a fresh NERD tree. The root of the tree depends on the argument
+ given. There are 3 cases: If no argument is given, the current directory
+ will be used. If a directory is given, that will be used. If a bookmark
+ name is given, the corresponding directory will be used. For example: >
+ :NERDTree /home/marty/vim7/src
+ :NERDTree foo (foo is the name of a bookmark)
+<
+:NERDTreeFromBookmark <bookmark> *:NERDTreeFromBookmark*
+ Opens a fresh NERD tree with the root initialized to the dir for
+ <bookmark>. The only reason to use this command over :NERDTree is for
+ the completion (which is for bookmarks rather than directories).
+
+:NERDTreeToggle [<start-directory> | <bookmark>] *:NERDTreeToggle*
+ If a NERD tree already exists for this tab, it is reopened and rendered
+ again. If no NERD tree exists for this tab then this command acts the
+ same as the |:NERDTree| command.
+
+:NERDTreeFocus *:NERDTreeFocus*
+ Opens (or reopens) the NERD Tree if it is not currently visible;
+ otherwise, the cursor is moved to the already-open NERD Tree.
+
+:NERDTreeMirror *:NERDTreeMirror*
+ Shares an existing NERD tree, from another tab, in the current tab.
+ Changes made to one tree are reflected in both as they are actually the
+ same buffer.
+
+ If only one other NERD tree exists, that tree is automatically mirrored. If
+ more than one exists, the script will ask which tree to mirror.
+
+:NERDTreeClose *:NERDTreeClose*
+ Close the NERD tree in this tab.
+
+:NERDTreeFind *:NERDTreeFind*
+ Find the current file in the tree.
+
+ If no 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.
+
+:NERDTreeCWD *:NERDTreeCWD*
+ Change tree root to current directory. If no NERD tree exists for this
+ tab, a new tree will be opened.
+
+------------------------------------------------------------------------------
+2.2. Bookmarks *NERDTreeBookmarks*
+
+Bookmarks in the NERD tree are a way to tag files or directories of interest.
+For example, you could use bookmarks to tag all of your project directories.
+
+------------------------------------------------------------------------------
+2.2.1. The Bookmark Table *NERDTreeBookmarkTable*
+
+If the bookmark table is active (see |NERDTree-B| and
+|'NERDTreeShowBookmarks'|), it will be rendered above the tree. You can double
+click bookmarks or use the |NERDTree-o| mapping to activate them. See also,
+|NERDTree-t| and |NERDTree-T|
+
+------------------------------------------------------------------------------
+2.2.2. Bookmark commands *NERDTreeBookmarkCommands*
+
+Note: The following commands are only available within the NERDTree 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
+ corresponding to <bookmark> is already cached somewhere in the tree then
+ the current tree will be used, otherwise a fresh tree will be opened.
+ Note that if <bookmark> points to a file then its parent will be used
+ instead.
+
+:RevealBookmark <bookmark>
+ If the node is cached under the current root then it will be revealed
+ (i.e. directory nodes above it will be opened) and the cursor will be
+ placed on it.
+
+:OpenBookmark <name>
+ The Bookmark named <name> is opened as if |NERDTree-o| was applied to
+ its entry in the Bookmark table. If the Bookmark points to a directory,
+ it is made the new root of the current NERDTree. If the Bookmark points
+ to a file, that file is opened for editing in another window.
+
+:ClearBookmarks [<bookmarks>]
+ Remove all the given bookmarks. If no bookmarks are given then remove all
+ bookmarks on the current node.
+
+:ClearAllBookmarks
+ Remove all bookmarks.
+
+:ReadBookmarks
+ Re-read the bookmarks in the |'NERDTreeBookmarksFile'|.
+
+See also |:NERDTree| and |:NERDTreeFromBookmark|.
+
+------------------------------------------------------------------------------
+2.2.3. Invalid Bookmarks *NERDTreeInvalidBookmarks*
+
+If invalid bookmarks are detected, the script will issue an error message and
+the invalid bookmarks will become unavailable for use.
+
+These bookmarks will still be stored in the bookmarks file (see
+|'NERDTreeBookmarksFile'|), down the bottom. There will always be a blank line
+after the valid bookmarks but before the invalid ones.
+
+Each line in the bookmarks file represents one bookmark. The proper format is:
+<bookmark name><space><full path to the bookmark location>
+
+After you have corrected any invalid bookmarks, either restart vim, or go
+:ReadBookmarks from the NERD tree window.
+
+------------------------------------------------------------------------------
+2.3. NERD tree Mappings *NERDTreeMappings*
+
+Default Description~ help-tag~
+Key~
+
+o.......Open files, directories and bookmarks....................|NERDTree-o|
+go......Open selected file, but leave cursor in the NERDTree.....|NERDTree-go|
+t.......Open selected node/bookmark in a new tab.................|NERDTree-t|
+T.......Same as 't' but keep the focus on the current tab........|NERDTree-T|
+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|
+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 dir.....................................|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.
+
+D.......Delete the current bookmark .............................|NERDTree-D|
+
+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.......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 NERD tree menu...............................|NERDTree-m|
+cd......Change the CWD to the dir of the selected node...........|NERDTree-cd|
+CD......Change tree root to the CWD..............................|NERDTree-CD|
+
+I.......Toggle whether hidden files displayed....................|NERDTree-I|
+f.......Toggle whether the file filters are used.................|NERDTree-f|
+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-?|
+
+------------------------------------------------------------------------------
+ *NERDTree-o*
+Default key: o
+Map option: NERDTreeMapActivateNode
+Applies to: files and directories.
+
+If a file node is selected, it is opened in the previous window.
+
+If a directory is selected it is opened or closed depending on its current
+state.
+
+If a bookmark that links to a directory is selected then that directory
+becomes the new root.
+
+If a bookmark that links to a file is selected then that file is opened in the
+previous window.
+
+------------------------------------------------------------------------------
+ *NERDTree-go*
+Default key: go
+Map option: NERDTreeMapPreview
+Applies to: files.
+
+If a file node is selected, it is opened in the previous window, but the
+cursor does not move.
+
+The default key combo for this mapping is "g" + NERDTreeMapActivateNode (see
+|NERDTree-o|).
+
+------------------------------------------------------------------------------
+ *NERDTree-t*
+Default key: t
+Map option: NERDTreeMapOpenInTab
+Applies to: files and directories.
+
+Opens the selected file in a new tab. If a directory is selected, a fresh
+NERD Tree for that directory is opened in a new tab.
+
+If a bookmark which points to a directory is selected, open a NERD tree for
+that directory in a new tab. If the bookmark points to a file, open that file
+in a new tab.
+
+------------------------------------------------------------------------------
+ *NERDTree-T*
+Default key: T
+Map option: NERDTreeMapOpenInTabSilent
+Applies to: files and directories.
+
+The same as |NERDTree-t| except that the focus is kept in the current tab.
+
+------------------------------------------------------------------------------
+ *NERDTree-i*
+Default key: i
+Map option: NERDTreeMapOpenSplit
+Applies to: files.
+
+Opens the selected file in a new split window and puts the cursor in the new
+window.
+
+------------------------------------------------------------------------------
+ *NERDTree-gi*
+Default key: gi
+Map option: NERDTreeMapPreviewSplit
+Applies to: files.
+
+The same as |NERDTree-i| except that the cursor is not moved.
+
+The default key combo for this mapping is "g" + NERDTreeMapOpenSplit (see
+|NERDTree-i|).
+
+------------------------------------------------------------------------------
+ *NERDTree-s*
+Default key: s
+Map option: NERDTreeMapOpenVSplit
+Applies to: files.
+
+Opens the selected file in a new vertically split window and puts the cursor in
+the new window.
+
+------------------------------------------------------------------------------
+ *NERDTree-gs*
+Default key: gs
+Map option: NERDTreeMapPreviewVSplit
+Applies to: files.
+
+The same as |NERDTree-s| except that the cursor is not moved.
+
+The default key combo for this mapping is "g" + NERDTreeMapOpenVSplit (see
+|NERDTree-s|).
+
+------------------------------------------------------------------------------
+ *NERDTree-O*
+Default key: O
+Map option: NERDTreeMapOpenRecursively
+Applies to: directories.
+
+Recursively opens the selected directory.
+
+All files and directories are cached, but if a directory would not be
+displayed due to file filters (see |'NERDTreeIgnore'| |NERDTree-f|) or the
+hidden file filter (see |'NERDTreeShowHidden'|) then its contents are not
+cached. This is handy, especially if you have .svn directories.
+
+------------------------------------------------------------------------------
+ *NERDTree-x*
+Default key: x
+Map option: NERDTreeMapCloseDir
+Applies to: files and directories.
+
+Closes the parent of the selected node.
+
+------------------------------------------------------------------------------
+ *NERDTree-X*
+Default key: X
+Map option: NERDTreeMapCloseChildren
+Applies to: directories.
+
+Recursively closes all children of the selected directory.
+
+Tip: To quickly "reset" the tree, use |NERDTree-P| with this mapping.
+
+------------------------------------------------------------------------------
+ *NERDTree-e*
+Default key: e
+Map option: NERDTreeMapOpenExpl
+Applies to: files and directories.
+
+|:edit|s the selected directory, or the selected file's directory. This could
+result in a NERD tree or a netrw being opened, depending on
+|'NERDTreeHijackNetrw'|.
+
+------------------------------------------------------------------------------
+ *NERDTree-D*
+Default key: D
+Map option: NERDTreeMapDeleteBookmark
+Applies to: lines in the bookmarks table
+
+Deletes the currently selected bookmark.
+
+------------------------------------------------------------------------------
+ *NERDTree-P*
+Default key: P
+Map option: NERDTreeMapJumpRoot
+Applies to: no restrictions.
+
+Jump to the tree root.
+
+------------------------------------------------------------------------------
+ *NERDTree-p*
+Default key: p
+Map option: NERDTreeMapJumpParent
+Applies to: files and directories.
+
+Jump to the parent node of the selected node.
+
+------------------------------------------------------------------------------
+ *NERDTree-K*
+Default key: K
+Map option: NERDTreeMapJumpFirstChild
+Applies to: files and directories.
+
+Jump to the first child of the current nodes parent.
+
+If the cursor is already on the first node then do the following:
+ * loop back thru the siblings of the current nodes parent until we find an
+ open dir with children
+ * go to the first child of that node
+
+------------------------------------------------------------------------------
+ *NERDTree-J*
+Default key: J
+Map option: NERDTreeMapJumpLastChild
+Applies to: files and directories.
+
+Jump to the last child of the current nodes parent.
+
+If the cursor is already on the last node then do the following:
+ * loop forward thru the siblings of the current nodes parent until we find
+ an open dir with children
+ * go to the last child of that node
+
+------------------------------------------------------------------------------
+ *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>
+Map option: NERDTreeMapJumpPrevSibling
+Applies to: files and directories.
+
+Jump to the previous sibling of the selected node.
+
+------------------------------------------------------------------------------
+ *NERDTree-C*
+Default key: C
+Map option: NERDTreeMapChangeRoot
+Applies to: files and directories.
+
+Make the selected directory node the new tree root. If a file is selected, its
+parent is used.
+
+------------------------------------------------------------------------------
+ *NERDTree-u*
+Default key: u
+Map option: NERDTreeMapUpdir
+Applies to: no restrictions.
+
+Move the tree root up a dir (like doing a "cd ..").
+
+------------------------------------------------------------------------------
+ *NERDTree-U*
+Default key: U
+Map option: NERDTreeMapUpdirKeepOpen
+Applies to: no restrictions.
+
+Like |NERDTree-u| except that the old tree root is kept open.
+
+------------------------------------------------------------------------------
+ *NERDTree-r*
+Default key: r
+Map option: NERDTreeMapRefresh
+Applies to: files and directories.
+
+If a dir is selected, recursively refresh that dir, i.e. scan the filesystem
+for changes and represent them in the tree.
+
+If a file node is selected then the above is done on it's parent.
+
+------------------------------------------------------------------------------
+ *NERDTree-R*
+Default key: R
+Map option: NERDTreeMapRefreshRoot
+Applies to: no restrictions.
+
+Recursively refresh the tree root.
+
+------------------------------------------------------------------------------
+ *NERDTree-m*
+Default key: m
+Map option: NERDTreeMapMenu
+Applies to: files and directories.
+
+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-CD*
+Default key: CD
+Map option: NERDTreeMapCWD
+Applies to: no restrictions.
+
+Change tree root to vims current working directory.
+
+------------------------------------------------------------------------------
+ *NERDTree-I*
+Default key: I
+Map option: NERDTreeMapToggleHidden
+Applies to: no restrictions.
+
+Toggles whether hidden files (i.e. "dot files") are displayed.
+
+------------------------------------------------------------------------------
+ *NERDTree-f*
+Default key: f
+Map option: NERDTreeMapToggleFilters
+Applies to: no restrictions.
+
+Toggles whether file filters are used. See |'NERDTreeIgnore'| for details.
+
+------------------------------------------------------------------------------
+ *NERDTree-F*
+Default key: F
+Map option: NERDTreeMapToggleFiles
+Applies to: no restrictions.
+
+Toggles whether file nodes are displayed.
+
+------------------------------------------------------------------------------
+ *NERDTree-B*
+Default key: B
+Map option: NERDTreeMapToggleBookmarks
+Applies to: no restrictions.
+
+Toggles whether the bookmarks table is displayed.
+
+------------------------------------------------------------------------------
+ *NERDTree-q*
+Default key: q
+Map option: NERDTreeMapQuit
+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: ?
+Map option: NERDTreeMapHelp
+Applies to: no restrictions.
+
+Toggles whether the quickhelp is displayed.
+
+------------------------------------------------------------------------------
+2.3. The NERD tree menu *NERDTreeMenu*
+
+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 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.
+
+Related tags: |NERDTree-m| |NERDTreeApi|
+
+==============================================================================
+3. Customisation *NERDTreeOptions*
+
+
+------------------------------------------------------------------------------
+3.1. Customisation summary *NERDTreeOptionSummary*
+
+The script provides the following options that can customise the behaviour the
+NERD tree. These options should be set in your vimrc.
+
+|'loaded_nerd_tree'| Turns off the script.
+
+|'NERDTreeAutoCenter'| Controls whether the NERD tree window centers
+ when the cursor moves within a specified
+ distance to the top/bottom of the window.
+
+|'NERDTreeAutoCenterThreshold'| Controls the sensitivity of autocentering.
+
+|'NERDTreeCaseSensitiveSort'| Tells the NERD tree whether to be case
+ sensitive or not when sorting nodes.
+
+|'NERDTreeNaturalSort'| Tells the NERD tree whether to use
+ natural sort order or not when sorting nodes.
+
+|'NERDTreeSortHiddenFirst'| Tells the NERD tree whether to take the dot
+ at the beginning of the hidden file names
+ into account when sorting nodes.
+
+|'NERDTreeChDirMode'| Tells the NERD tree if/when it should change
+ vim's current working directory.
+
+|'NERDTreeHighlightCursorline'| Tell the NERD tree whether to highlight the
+ current cursor line.
+
+|'NERDTreeHijackNetrw'| Tell the NERD tree whether to replace the netrw
+ autocommands for exploring local directories.
+
+|'NERDTreeIgnore'| Tells the NERD tree which files to ignore.
+
+|'NERDTreeRespectWildIgnore'| Tells the NERD tree to respect |'wildignore'|.
+
+|'NERDTreeBookmarksFile'| Where the bookmarks are stored.
+
+|'NERDTreeBookmarksSort'| Control how the Bookmark table is sorted.
+
+|'NERDTreeMarkBookmarks'| Render bookmarked nodes with markers.
+
+|'NERDTreeMouseMode'| Manage the interpretation of mouse clicks.
+
+|'NERDTreeQuitOnOpen'| Closes the tree window after opening a file.
+
+|'NERDTreeShowBookmarks'| Tells the NERD tree whether to display the
+ bookmarks table on startup.
+
+|'NERDTreeShowFiles'| Tells the NERD tree whether to display files
+ in the tree on startup.
+
+|'NERDTreeShowHidden'| Tells the NERD tree whether to display hidden
+ files on startup.
+
+|'NERDTreeShowLineNumbers'| Tells the NERD tree whether to display line
+ numbers in the tree window.
+
+|'NERDTreeSortOrder'| Tell the NERD tree how to sort the nodes in
+ the tree.
+
+|'NERDTreeStatusline'| Set a statusline for NERD tree windows.
+
+|'NERDTreeWinPos'| Tells the script where to put the NERD tree
+ window.
+
+|'NERDTreeWinSize'| Sets the window size when the NERD tree is
+ opened.
+
+|'NERDTreeMinimalUI'| Disables display of the 'Bookmarks' label and
+ 'Press ? for help' text.
+
+|'NERDTreeCascadeSingleChildDir'|
+ Collapses on the same line directories that
+ have only one child directory.
+
+|'NERDTreeCascadeOpenSingleChildDir'|
+ Cascade open while selected directory has only
+ one child that also is a directory.
+
+|'NERDTreeAutoDeleteBuffer'| Tells the NERD tree to automatically remove
+ a buffer when a file is being deleted or renamed
+ via a context menu command.
+
+|'NERDTreeCreatePrefix'| Specify a prefix to be used when creating the
+ NERDTree window.
+
+------------------------------------------------------------------------------
+3.2. Customisation details *NERDTreeOptionDetails*
+
+To enable any of the below options you should put the given line in your
+~/.vimrc
+
+ *'loaded_nerd_tree'*
+If this plugin is making you feel homicidal, it may be a good idea to turn it
+off with this line in your vimrc: >
+ let loaded_nerd_tree=1
+<
+
+------------------------------------------------------------------------------
+ *'NERDTreeAutoCenter'*
+Values: 0 or 1.
+Default: 1
+
+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|
+|NERDTree-P|
+
+The centering is done with a |zz| operation.
+
+------------------------------------------------------------------------------
+ *'NERDTreeAutoCenterThreshold'*
+Values: Any natural number.
+Default: 3
+
+This option controls the "sensitivity" of the NERD tree auto centering. See
+|'NERDTreeAutoCenter'| for details.
+
+------------------------------------------------------------------------------
+ *'NERDTreeCaseSensitiveSort'*
+Values: 0 or 1.
+Default: 0.
+
+By default the NERD tree does not sort nodes case sensitively, i.e. nodes
+could appear like this: >
+ bar.c
+ Baz.c
+ blarg.c
+ boner.c
+ Foo.c
+<
+But, if you set this option to 1 then the case of the nodes will be taken into
+account. The above nodes would then be sorted like this: >
+ Baz.c
+ Foo.c
+ bar.c
+ blarg.c
+ boner.c
+<
+------------------------------------------------------------------------------
+ *'NERDTreeNaturalSort'*
+Values: 0 or 1.
+Default: 0.
+
+By default the NERD tree does not sort nodes in natural sort order, i.e. nodes
+could appear like this: >
+ z1.txt
+ z10.txt
+ z100.txt
+ z11.txt
+ z110.txt
+ z2.txt
+ z20.txt
+ z3.txt
+<
+But if you set this option to 1 then the natural sort order will be used. The
+above nodes would then be sorted like this: >
+ z1.txt
+ z2.txt
+ z3.txt
+ z10.txt
+ z11.txt
+ z20.txt
+ z100.txt
+ z110.txt
+<
+------------------------------------------------------------------------------
+ *'NERDTreeChDirMode'*
+
+Values: 0, 1 or 2.
+Default: 0.
+
+Use this option to tell the script when (if at all) to change the current
+working directory (CWD) for vim.
+
+If it is set to 0 then the CWD is never changed by the NERD tree.
+
+If set to 1 then the CWD is changed when the NERD tree is first loaded to the
+directory it is initialized in. For example, if you start the NERD tree with >
+ :NERDTree /home/marty/foobar
+<
+then the CWD will be changed to /home/marty/foobar and will not be changed
+again unless you init another NERD tree with a similar command.
+
+If the option is set to 2 then it behaves the same as if set to 1 except that
+the CWD is changed whenever the tree root is changed. For example, if the CWD
+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.
+
+------------------------------------------------------------------------------
+ *'NERDTreeHighlightCursorline'*
+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.
+
+------------------------------------------------------------------------------
+ *'NERDTreeHijackNetrw'*
+Values: 0 or 1.
+Default: 1.
+
+If set to 1, doing a >
+ :edit <some directory>
+<
+will open up a window level NERD tree instead of a netrw in the target window.
+
+Window level trees behaves slightly different from a regular trees in the
+following respects:
+ 1. 'o' will open the selected file in the same window as the tree,
+ replacing it.
+ 2. you can have one tree per window - instead of per tab.
+
+------------------------------------------------------------------------------
+ *'NERDTreeIgnore'*
+Values: a list of regular expressions.
+Default: ['\~$'].
+
+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
+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: >
+ let NERDTreeIgnore=['\.vim$', '\~$']
+<
+then all files ending in .vim or ~ will be ignored.
+
+There are 2 magic flags that can be appended to the end of each regular
+expression to specify that the regex should match only files or only dirs.
+These flags are "[[dir]]" and "[[file]]". Example: >
+ let NERDTreeIgnore=['\.d$[[dir]]', '\.o$[[file]]']
+<
+This will cause all dirs ending in ".d" to be ignored and all files ending in
+".o" to be ignored.
+
+Note: to tell the NERD tree not to ignore any files you must use the following
+line: >
+ let NERDTreeIgnore=[]
+<
+
+The file filters can be turned on and off dynamically with the |NERDTree-f|
+mapping.
+
+------------------------------------------------------------------------------
+ *'NERDTreeRespectWildIgnore'*
+Values: 0 or 1.
+Default: 0.
+
+If set to 1, the |'wildignore'| setting is respected.
+
+------------------------------------------------------------------------------
+ *'NERDTreeBookmarksFile'*
+Values: a path
+Default: $HOME/.NERDTreeBookmarks
+
+This is where bookmarks are saved. See |NERDTreeBookmarkCommands|.
+
+------------------------------------------------------------------------------
+ *'NERDTreeBookmarksSort'*
+Values: 0, 1, or 2
+Default: 1
+
+This option controls the method by which the list of user bookmarks is
+sorted. When sorted, bookmarks will render in alphabetical order by name.
+
+If set to 0, the bookmarks list is not sorted.
+If set to 1, the bookmarks list is sorted in a case-insensitive manner.
+If set to 2, the bookmarks list is sorted in a case-sensitive manner.
+
+------------------------------------------------------------------------------
+ *'NERDTreeMarkBookmarks'*
+Values: 0 or 1
+Default: 1
+
+If set to 1, Bookmarks will be specially marked whenever the NERDTree is
+rendered. Users of the |'NERDTreeMinimalUI'| setting may prefer to disable
+this setting for even less visual clutter.
+
+------------------------------------------------------------------------------
+ *'NERDTreeMouseMode'*
+Values: 1, 2 or 3.
+Default: 1.
+
+If set to 1 then a double click on a node is required to open it.
+If set to 2 then a single click will open directory nodes, while a double
+click will still be required for file nodes.
+If set to 3 then a single click will open any node.
+
+Note: a double click anywhere on a line that a tree node is on will
+activate it, but all single-click activations must be done on name of the node
+itself. For example, if you have the following node: >
+ | | |-application.rb
+<
+then (to single click activate it) you must click somewhere in
+'application.rb'.
+
+------------------------------------------------------------------------------
+ *'NERDTreeQuitOnOpen'*
+
+Values: 0 or 1.
+Default: 0
+
+If set to 1, the NERD tree window will close after opening a file with the
+|NERDTree-o|, |NERDTree-i|, |NERDTree-t| and |NERDTree-T| mappings.
+
+------------------------------------------------------------------------------
+ *'NERDTreeShowBookmarks'*
+Values: 0 or 1.
+Default: 0.
+
+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.
+
+------------------------------------------------------------------------------
+ *'NERDTreeShowFiles'*
+Values: 0 or 1.
+Default: 1.
+
+If this option is set to 1 then files are displayed in the NERD tree. If it is
+set to 0 then only directories are displayed.
+
+This option can be toggled dynamically, per tree, with the |NERDTree-F|
+mapping and is useful for drastically shrinking the tree when you are
+navigating to a different part of the tree.
+
+------------------------------------------------------------------------------
+ *'NERDTreeShowHidden'*
+Values: 0 or 1.
+Default: 0.
+
+This option tells vim whether to display hidden files by default. This option
+can be dynamically toggled, per tree, with the |NERDTree-I| mapping. Use one
+of the follow lines to set this option: >
+ let NERDTreeShowHidden=0
+ let NERDTreeShowHidden=1
+<
+
+------------------------------------------------------------------------------
+ *'NERDTreeShowLineNumbers'*
+Values: 0 or 1.
+Default: 0.
+
+This option tells vim whether to display line numbers for the NERD tree
+window. Use one of the follow lines to set this option: >
+ let NERDTreeShowLineNumbers=0
+ let NERDTreeShowLineNumbers=1
+<
+
+------------------------------------------------------------------------------
+ *'NERDTreeSortOrder'*
+Values: a list of regular expressions.
+Default: ['\/$', '*', '\.swp$', '\.bak$', '\~$']
+
+This option is set to a list of regular expressions which are used to
+specify the order of nodes under their parent.
+
+For example, if the option is set to: >
+ ['\.vim$', '\.c$', '\.h$', '*', 'foobar']
+<
+then all .vim files will be placed at the top, followed by all .c files then
+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
+doesnt match any of the other regexps should be placed here.
+
+If no star is present in 'NERDTreeSortOrder' then one is automatically
+appended to the array.
+
+The regex '\/$' should be used to match directory nodes.
+
+After this sorting is done, the files in each group are sorted alphabetically.
+
+Other examples: >
+ (1) ['*', '\/$']
+ (2) []
+ (3) ['\/$', '\.rb$', '\.php$', '*', '\.swp$', '\.bak$', '\~$']
+<
+1. Directories will appear last, everything else will appear above.
+2. Everything will simply appear in alphabetical order.
+3. Dirs will appear first, then ruby and php. Swap files, bak files and vim
+ backup files will appear last with everything else preceding them.
+
+------------------------------------------------------------------------------
+ *'NERDTreeStatusline'*
+Values: Any valid statusline setting.
+Default: %{b:NERDTree.root.path.strForOS(0)}
+
+Tells the script what to use as the |'statusline'| setting for NERD tree
+windows.
+
+Note that the statusline is set using |:let-&| not |:set| so escaping spaces
+isn't necessary.
+
+Setting this option to -1 will will deactivate it so that your global
+statusline setting is used instead.
+
+------------------------------------------------------------------------------
+ *'NERDTreeWinPos'*
+Values: "left" or "right"
+Default: "left".
+
+This option is used to determine where NERD tree window is placed on the
+screen.
+
+This option makes it possible to use two different explorer plugins
+simultaneously. For example, you could have the taglist plugin on the left of
+the window and the NERD tree on the right.
+
+------------------------------------------------------------------------------
+ *'NERDTreeWinSize'*
+Values: a positive integer.
+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
+<
+
+------------------------------------------------------------------------------
+ *'NERDTreeCascadeSingleChildDir'*
+Values: 0 or 1
+Default: 1.
+
+When displaying dir nodes, this option tells NERDTree to collapse dirs that
+have only one child. Use one of the follow lines to set this option: >
+ let NERDTreeCascadeSingleChildDir=0
+ let NERDTreeCascadeSingleChildDir=1
+<
+
+------------------------------------------------------------------------------
+ *'NERDTreeCascadeOpenSingleChildDir'*
+Values: 0 or 1
+Default: 1.
+
+When opening dir nodes, this option tells NERDTree to recursively open dirs
+that have only one child which is also a dir. NERDTree will stop when it finds
+a dir that contains anything but another single dir. This option also causes
+the |NERDTree-x| mapping to close dirs in the same manner. This option may be
+useful for Java projects. Use one of the follow lines to set this option: >
+ let NERDTreeCascadeOpenSingleChildDir=0
+ let NERDTreeCascadeOpenSingleChildDir=1
+<
+
+------------------------------------------------------------------------------
+ *'NERDTreeAutoDeleteBuffer'*
+Values: 0 or 1
+Default: 0.
+
+When using a context menu to delete or rename a file you may also want to delete
+the buffer which is no more valid. If the option is not set you will see a
+confirmation if you really want to delete an old buffer. If you always press 'y'
+then it worths to set this option to 1. Use one of the follow lines to set this
+option: >
+ let NERDTreeAutoDeleteBuffer=0
+ let NERDTreeAutoDeleteBuffer=1
+<
+------------------------------------------------------------------------------
+ *'NERDTreeCreatePrefix'*
+Values: Any valid command prefix.
+Default: "silent".
+
+Internally, NERDTree uses the |:edit| command to create a buffer in which to
+display its tree view. You can augment this behavior by specifying a prefix
+string such as "keepalt" or similar. For example, to have NERDTree create its
+tree window using `silent keepalt keepjumps edit`:
+ let NERDTreeCreatePrefix='silent keepalt keepjumps'
+<
+
+==============================================================================
+4. The NERD tree API *NERDTreeAPI*
+
+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 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
+<
+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
+
+See this blog post for more details:
+ http://got-ravings.blogspot.com/2008/09/vim-pr0n-prototype-based-objects.html
+
+------------------------------------------------------------------------------
+4.1. Key map API *NERDTreeKeymapAPI*
+
+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-?|)
+ "override" - if 1 then this new mapping will override whatever previous
+ mapping was defined for the key/scope combo. Useful for overriding the
+ default mappings.
+
+ Additionally, a "scope" argument may be supplied. This constrains the
+ mapping so that it is only activated if the cursor is on a certain object.
+ That object is then passed into the handling method. Possible values are:
+ "FileNode" - a file node
+ "DirNode" - a directory node
+ "Node" - a file or directory node
+ "Bookmark" - A bookmark
+ "all" - the keymap is not constrained to any scope (default). When
+ thei is used, the handling function is not passed any arguments.
+
+
+ Example: >
+ call NERDTreeAddKeyMap({
+ \ 'key': 'foo',
+ \ 'callback': 'NERDTreeCDHandler',
+ \ 'quickhelpText': 'echo full path of current node',
+ \ 'scope': 'DirNode' })
+
+ function! NERDTreeCDHandler(dirnode)
+ call a:dirnode.changeToDir()
+ endfunction
+<
+ This code should sit in a file like ~/.vim/nerdtree_plugin/mymapping.vim.
+ It adds a (redundant) mapping on 'foo' which changes vim's CWD to that of
+ the current dir node. Note this mapping will only fire when the cursor is
+ on a directory 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.
+
+------------------------------------------------------------------------------
+4.3 NERDTreeAddPathFilter(callback) *NERDTreeAddPathFilter()*
+
+Path filters are essentially a more powerful version of |NERDTreeIgnore|.
+If the simple regex matching in |NERDTreeIgnore| is not enough then use
+|NERDTreeAddPathFilter()| to add a callback function that paths will be
+checked against when the decision to ignore them is made. Example >
+
+ call NERDTreeAddPathFilter('MyFilter')
+
+ function! MyFilter(params)
+ "params is a dict containing keys: 'nerdtree' and 'path' which are
+ "g:NERDTree and g:NERDTreePath objects
+
+ "return 1 to ignore params['path'] or 0 otherwise
+ endfunction
+<
+------------------------------------------------------------------------------
+4.4 Path Listener API *NERDTreePathListenerAPI*
+
+Use this API if you want to run a callback for events on Path objects. E.G >
+
+ call g:NERDTreePathNotifier.AddListener("init", "MyListener")
+
+ "....
+
+ function! MyListener(event)
+ "This function will be called whenever a Path object is created.
+
+ "a:event is an object that contains a bunch of relevant info -
+ "including the path in question. See lib/nerdtree/event.vim for details.
+ endfunction
+<
+Current events supported:
+ init ~
+ refresh ~
+ refreshFlags ~
+
+------------------------------------------------------------------------------
+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*
+
+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 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
+
+The latest dev versions are on github
+ http://github.com/scrooloose/nerdtree
+
+==============================================================================
+6. License *NERDTreeLicense*
+
+The NERD tree is released under the wtfpl.
+See http://sam.zoy.org/wtfpl/COPYING.
diff --git a/doc/NERD_tree.txt b/doc/NERD_tree.txt
@@ -1,1301 +0,0 @@
-*NERD_tree.txt* A tree explorer plugin that owns your momma!
-
-
-
- omg its ... ~
-
- ________ ________ _ ____________ ____ __________ ____________~
- /_ __/ / / / ____/ / | / / ____/ __ \/ __ \ /_ __/ __ \/ ____/ ____/~
- / / / /_/ / __/ / |/ / __/ / /_/ / / / / / / / /_/ / __/ / __/ ~
- / / / __ / /___ / /| / /___/ _, _/ /_/ / / / / _, _/ /___/ /___ ~
- /_/ /_/ /_/_____/ /_/ |_/_____/_/ |_/_____/ /_/ /_/ |_/_____/_____/ ~
-
-
- Reference Manual~
-
-
-
-
-==============================================================================
-CONTENTS *NERDTree-contents*
-
- 1.Intro...................................|NERDTree|
- 2.Functionality provided..................|NERDTreeFunctionality|
- 2.1.Global commands...................|NERDTreeGlobalCommands|
- 2.2.Bookmarks.........................|NERDTreeBookmarks|
- 2.2.1.The bookmark table..........|NERDTreeBookmarkTable|
- 2.2.2.Bookmark commands...........|NERDTreeBookmarkCommands|
- 2.2.3.Invalid bookmarks...........|NERDTreeInvalidBookmarks|
- 2.3.NERD tree mappings................|NERDTreeMappings|
- 2.4.The NERD tree menu................|NERDTreeMenu|
- 3.Options.................................|NERDTreeOptions|
- 3.1.Option summary....................|NERDTreeOptionSummary|
- 3.2.Option details....................|NERDTreeOptionDetails|
- 4.The NERD tree API.......................|NERDTreeAPI|
- 4.1.Key map API.......................|NERDTreeKeymapAPI|
- 4.2.Menu API..........................|NERDTreeMenuAPI|
- 4.3.Menu API..........................|NERDTreeAddPathFilter()|
- 4.4.Path Listener API.................|NERDTreePathListenerAPI|
- 5.About...................................|NERDTreeAbout|
- 6.License.................................|NERDTreeLicense|
-
-==============================================================================
-1. Intro *NERDTree*
-
-What is this "NERD tree"??
-
-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 (netrw), so if
- you :edit a directory a (slightly 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 filesystem
- operations (create/delete/move/copy files/directories)
- * There's an API for adding your own keymappings
-
-
-==============================================================================
-2. Functionality provided *NERDTreeFunctionality*
-
-------------------------------------------------------------------------------
-2.1. Global Commands *NERDTreeGlobalCommands*
-
-:NERDTree [<start-directory> | <bookmark>] *:NERDTree*
- Opens a fresh NERD tree. The root of the tree depends on the argument
- given. There are 3 cases: If no argument is given, the current directory
- will be used. If a directory is given, that will be used. If a bookmark
- name is given, the corresponding directory will be used. For example: >
- :NERDTree /home/marty/vim7/src
- :NERDTree foo (foo is the name of a bookmark)
-<
-:NERDTreeFromBookmark <bookmark> *:NERDTreeFromBookmark*
- Opens a fresh NERD tree with the root initialized to the dir for
- <bookmark>. The only reason to use this command over :NERDTree is for
- the completion (which is for bookmarks rather than directories).
-
-:NERDTreeToggle [<start-directory> | <bookmark>] *:NERDTreeToggle*
- If a NERD tree already exists for this tab, it is reopened and rendered
- again. If no NERD tree exists for this tab then this command acts the
- same as the |:NERDTree| command.
-
-:NERDTreeFocus *:NERDTreeFocus*
- Opens (or reopens) the NERD Tree if it is not currently visible;
- otherwise, the cursor is moved to the already-open NERD Tree.
-
-:NERDTreeMirror *:NERDTreeMirror*
- Shares an existing NERD tree, from another tab, in the current tab.
- Changes made to one tree are reflected in both as they are actually the
- same buffer.
-
- If only one other NERD tree exists, that tree is automatically mirrored. If
- more than one exists, the script will ask which tree to mirror.
-
-:NERDTreeClose *:NERDTreeClose*
- Close the NERD tree in this tab.
-
-:NERDTreeFind *:NERDTreeFind*
- Find the current file in the tree.
-
- If no 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.
-
-:NERDTreeCWD *:NERDTreeCWD*
- Change tree root to current directory. If no NERD tree exists for this
- tab, a new tree will be opened.
-
-------------------------------------------------------------------------------
-2.2. Bookmarks *NERDTreeBookmarks*
-
-Bookmarks in the NERD tree are a way to tag files or directories of interest.
-For example, you could use bookmarks to tag all of your project directories.
-
-------------------------------------------------------------------------------
-2.2.1. The Bookmark Table *NERDTreeBookmarkTable*
-
-If the bookmark table is active (see |NERDTree-B| and
-|'NERDTreeShowBookmarks'|), it will be rendered above the tree. You can double
-click bookmarks or use the |NERDTree-o| mapping to activate them. See also,
-|NERDTree-t| and |NERDTree-T|
-
-------------------------------------------------------------------------------
-2.2.2. Bookmark commands *NERDTreeBookmarkCommands*
-
-Note: The following commands are only available within the NERDTree 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
- corresponding to <bookmark> is already cached somewhere in the tree then
- the current tree will be used, otherwise a fresh tree will be opened.
- Note that if <bookmark> points to a file then its parent will be used
- instead.
-
-:RevealBookmark <bookmark>
- If the node is cached under the current root then it will be revealed
- (i.e. directory nodes above it will be opened) and the cursor will be
- placed on it.
-
-:OpenBookmark <name>
- The Bookmark named <name> is opened as if |NERDTree-o| was applied to
- its entry in the Bookmark table. If the Bookmark points to a directory,
- it is made the new root of the current NERDTree. If the Bookmark points
- to a file, that file is opened for editing in another window.
-
-:ClearBookmarks [<bookmarks>]
- Remove all the given bookmarks. If no bookmarks are given then remove all
- bookmarks on the current node.
-
-:ClearAllBookmarks
- Remove all bookmarks.
-
-:ReadBookmarks
- Re-read the bookmarks in the |'NERDTreeBookmarksFile'|.
-
-See also |:NERDTree| and |:NERDTreeFromBookmark|.
-
-------------------------------------------------------------------------------
-2.2.3. Invalid Bookmarks *NERDTreeInvalidBookmarks*
-
-If invalid bookmarks are detected, the script will issue an error message and
-the invalid bookmarks will become unavailable for use.
-
-These bookmarks will still be stored in the bookmarks file (see
-|'NERDTreeBookmarksFile'|), down the bottom. There will always be a blank line
-after the valid bookmarks but before the invalid ones.
-
-Each line in the bookmarks file represents one bookmark. The proper format is:
-<bookmark name><space><full path to the bookmark location>
-
-After you have corrected any invalid bookmarks, either restart vim, or go
-:ReadBookmarks from the NERD tree window.
-
-------------------------------------------------------------------------------
-2.3. NERD tree Mappings *NERDTreeMappings*
-
-Default Description~ help-tag~
-Key~
-
-o.......Open files, directories and bookmarks....................|NERDTree-o|
-go......Open selected file, but leave cursor in the NERDTree.....|NERDTree-go|
-t.......Open selected node/bookmark in a new tab.................|NERDTree-t|
-T.......Same as 't' but keep the focus on the current tab........|NERDTree-T|
-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|
-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 dir.....................................|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.
-
-D.......Delete the current bookmark .............................|NERDTree-D|
-
-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.......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 NERD tree menu...............................|NERDTree-m|
-cd......Change the CWD to the dir of the selected node...........|NERDTree-cd|
-CD......Change tree root to the CWD..............................|NERDTree-CD|
-
-I.......Toggle whether hidden files displayed....................|NERDTree-I|
-f.......Toggle whether the file filters are used.................|NERDTree-f|
-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-?|
-
-------------------------------------------------------------------------------
- *NERDTree-o*
-Default key: o
-Map option: NERDTreeMapActivateNode
-Applies to: files and directories.
-
-If a file node is selected, it is opened in the previous window.
-
-If a directory is selected it is opened or closed depending on its current
-state.
-
-If a bookmark that links to a directory is selected then that directory
-becomes the new root.
-
-If a bookmark that links to a file is selected then that file is opened in the
-previous window.
-
-------------------------------------------------------------------------------
- *NERDTree-go*
-Default key: go
-Map option: NERDTreeMapPreview
-Applies to: files.
-
-If a file node is selected, it is opened in the previous window, but the
-cursor does not move.
-
-The default key combo for this mapping is "g" + NERDTreeMapActivateNode (see
-|NERDTree-o|).
-
-------------------------------------------------------------------------------
- *NERDTree-t*
-Default key: t
-Map option: NERDTreeMapOpenInTab
-Applies to: files and directories.
-
-Opens the selected file in a new tab. If a directory is selected, a fresh
-NERD Tree for that directory is opened in a new tab.
-
-If a bookmark which points to a directory is selected, open a NERD tree for
-that directory in a new tab. If the bookmark points to a file, open that file
-in a new tab.
-
-------------------------------------------------------------------------------
- *NERDTree-T*
-Default key: T
-Map option: NERDTreeMapOpenInTabSilent
-Applies to: files and directories.
-
-The same as |NERDTree-t| except that the focus is kept in the current tab.
-
-------------------------------------------------------------------------------
- *NERDTree-i*
-Default key: i
-Map option: NERDTreeMapOpenSplit
-Applies to: files.
-
-Opens the selected file in a new split window and puts the cursor in the new
-window.
-
-------------------------------------------------------------------------------
- *NERDTree-gi*
-Default key: gi
-Map option: NERDTreeMapPreviewSplit
-Applies to: files.
-
-The same as |NERDTree-i| except that the cursor is not moved.
-
-The default key combo for this mapping is "g" + NERDTreeMapOpenSplit (see
-|NERDTree-i|).
-
-------------------------------------------------------------------------------
- *NERDTree-s*
-Default key: s
-Map option: NERDTreeMapOpenVSplit
-Applies to: files.
-
-Opens the selected file in a new vertically split window and puts the cursor in
-the new window.
-
-------------------------------------------------------------------------------
- *NERDTree-gs*
-Default key: gs
-Map option: NERDTreeMapPreviewVSplit
-Applies to: files.
-
-The same as |NERDTree-s| except that the cursor is not moved.
-
-The default key combo for this mapping is "g" + NERDTreeMapOpenVSplit (see
-|NERDTree-s|).
-
-------------------------------------------------------------------------------
- *NERDTree-O*
-Default key: O
-Map option: NERDTreeMapOpenRecursively
-Applies to: directories.
-
-Recursively opens the selected directory.
-
-All files and directories are cached, but if a directory would not be
-displayed due to file filters (see |'NERDTreeIgnore'| |NERDTree-f|) or the
-hidden file filter (see |'NERDTreeShowHidden'|) then its contents are not
-cached. This is handy, especially if you have .svn directories.
-
-------------------------------------------------------------------------------
- *NERDTree-x*
-Default key: x
-Map option: NERDTreeMapCloseDir
-Applies to: files and directories.
-
-Closes the parent of the selected node.
-
-------------------------------------------------------------------------------
- *NERDTree-X*
-Default key: X
-Map option: NERDTreeMapCloseChildren
-Applies to: directories.
-
-Recursively closes all children of the selected directory.
-
-Tip: To quickly "reset" the tree, use |NERDTree-P| with this mapping.
-
-------------------------------------------------------------------------------
- *NERDTree-e*
-Default key: e
-Map option: NERDTreeMapOpenExpl
-Applies to: files and directories.
-
-|:edit|s the selected directory, or the selected file's directory. This could
-result in a NERD tree or a netrw being opened, depending on
-|'NERDTreeHijackNetrw'|.
-
-------------------------------------------------------------------------------
- *NERDTree-D*
-Default key: D
-Map option: NERDTreeMapDeleteBookmark
-Applies to: lines in the bookmarks table
-
-Deletes the currently selected bookmark.
-
-------------------------------------------------------------------------------
- *NERDTree-P*
-Default key: P
-Map option: NERDTreeMapJumpRoot
-Applies to: no restrictions.
-
-Jump to the tree root.
-
-------------------------------------------------------------------------------
- *NERDTree-p*
-Default key: p
-Map option: NERDTreeMapJumpParent
-Applies to: files and directories.
-
-Jump to the parent node of the selected node.
-
-------------------------------------------------------------------------------
- *NERDTree-K*
-Default key: K
-Map option: NERDTreeMapJumpFirstChild
-Applies to: files and directories.
-
-Jump to the first child of the current nodes parent.
-
-If the cursor is already on the first node then do the following:
- * loop back thru the siblings of the current nodes parent until we find an
- open dir with children
- * go to the first child of that node
-
-------------------------------------------------------------------------------
- *NERDTree-J*
-Default key: J
-Map option: NERDTreeMapJumpLastChild
-Applies to: files and directories.
-
-Jump to the last child of the current nodes parent.
-
-If the cursor is already on the last node then do the following:
- * loop forward thru the siblings of the current nodes parent until we find
- an open dir with children
- * go to the last child of that node
-
-------------------------------------------------------------------------------
- *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>
-Map option: NERDTreeMapJumpPrevSibling
-Applies to: files and directories.
-
-Jump to the previous sibling of the selected node.
-
-------------------------------------------------------------------------------
- *NERDTree-C*
-Default key: C
-Map option: NERDTreeMapChangeRoot
-Applies to: files and directories.
-
-Make the selected directory node the new tree root. If a file is selected, its
-parent is used.
-
-------------------------------------------------------------------------------
- *NERDTree-u*
-Default key: u
-Map option: NERDTreeMapUpdir
-Applies to: no restrictions.
-
-Move the tree root up a dir (like doing a "cd ..").
-
-------------------------------------------------------------------------------
- *NERDTree-U*
-Default key: U
-Map option: NERDTreeMapUpdirKeepOpen
-Applies to: no restrictions.
-
-Like |NERDTree-u| except that the old tree root is kept open.
-
-------------------------------------------------------------------------------
- *NERDTree-r*
-Default key: r
-Map option: NERDTreeMapRefresh
-Applies to: files and directories.
-
-If a dir is selected, recursively refresh that dir, i.e. scan the filesystem
-for changes and represent them in the tree.
-
-If a file node is selected then the above is done on it's parent.
-
-------------------------------------------------------------------------------
- *NERDTree-R*
-Default key: R
-Map option: NERDTreeMapRefreshRoot
-Applies to: no restrictions.
-
-Recursively refresh the tree root.
-
-------------------------------------------------------------------------------
- *NERDTree-m*
-Default key: m
-Map option: NERDTreeMapMenu
-Applies to: files and directories.
-
-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-CD*
-Default key: CD
-Map option: NERDTreeMapCWD
-Applies to: no restrictions.
-
-Change tree root to vims current working directory.
-
-------------------------------------------------------------------------------
- *NERDTree-I*
-Default key: I
-Map option: NERDTreeMapToggleHidden
-Applies to: no restrictions.
-
-Toggles whether hidden files (i.e. "dot files") are displayed.
-
-------------------------------------------------------------------------------
- *NERDTree-f*
-Default key: f
-Map option: NERDTreeMapToggleFilters
-Applies to: no restrictions.
-
-Toggles whether file filters are used. See |'NERDTreeIgnore'| for details.
-
-------------------------------------------------------------------------------
- *NERDTree-F*
-Default key: F
-Map option: NERDTreeMapToggleFiles
-Applies to: no restrictions.
-
-Toggles whether file nodes are displayed.
-
-------------------------------------------------------------------------------
- *NERDTree-B*
-Default key: B
-Map option: NERDTreeMapToggleBookmarks
-Applies to: no restrictions.
-
-Toggles whether the bookmarks table is displayed.
-
-------------------------------------------------------------------------------
- *NERDTree-q*
-Default key: q
-Map option: NERDTreeMapQuit
-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: ?
-Map option: NERDTreeMapHelp
-Applies to: no restrictions.
-
-Toggles whether the quickhelp is displayed.
-
-------------------------------------------------------------------------------
-2.3. The NERD tree menu *NERDTreeMenu*
-
-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 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.
-
-Related tags: |NERDTree-m| |NERDTreeApi|
-
-==============================================================================
-3. Customisation *NERDTreeOptions*
-
-
-------------------------------------------------------------------------------
-3.1. Customisation summary *NERDTreeOptionSummary*
-
-The script provides the following options that can customise the behaviour the
-NERD tree. These options should be set in your vimrc.
-
-|'loaded_nerd_tree'| Turns off the script.
-
-|'NERDTreeAutoCenter'| Controls whether the NERD tree window centers
- when the cursor moves within a specified
- distance to the top/bottom of the window.
-
-|'NERDTreeAutoCenterThreshold'| Controls the sensitivity of autocentering.
-
-|'NERDTreeCaseSensitiveSort'| Tells the NERD tree whether to be case
- sensitive or not when sorting nodes.
-
-|'NERDTreeNaturalSort'| Tells the NERD tree whether to use
- natural sort order or not when sorting nodes.
-
-|'NERDTreeSortHiddenFirst'| Tells the NERD tree whether to take the dot
- at the beginning of the hidden file names
- into account when sorting nodes.
-
-|'NERDTreeChDirMode'| Tells the NERD tree if/when it should change
- vim's current working directory.
-
-|'NERDTreeHighlightCursorline'| Tell the NERD tree whether to highlight the
- current cursor line.
-
-|'NERDTreeHijackNetrw'| Tell the NERD tree whether to replace the netrw
- autocommands for exploring local directories.
-
-|'NERDTreeIgnore'| Tells the NERD tree which files to ignore.
-
-|'NERDTreeRespectWildIgnore'| Tells the NERD tree to respect |'wildignore'|.
-
-|'NERDTreeBookmarksFile'| Where the bookmarks are stored.
-
-|'NERDTreeBookmarksSort'| Control how the Bookmark table is sorted.
-
-|'NERDTreeMarkBookmarks'| Render bookmarked nodes with markers.
-
-|'NERDTreeMouseMode'| Manage the interpretation of mouse clicks.
-
-|'NERDTreeQuitOnOpen'| Closes the tree window after opening a file.
-
-|'NERDTreeShowBookmarks'| Tells the NERD tree whether to display the
- bookmarks table on startup.
-
-|'NERDTreeShowFiles'| Tells the NERD tree whether to display files
- in the tree on startup.
-
-|'NERDTreeShowHidden'| Tells the NERD tree whether to display hidden
- files on startup.
-
-|'NERDTreeShowLineNumbers'| Tells the NERD tree whether to display line
- numbers in the tree window.
-
-|'NERDTreeSortOrder'| Tell the NERD tree how to sort the nodes in
- the tree.
-
-|'NERDTreeStatusline'| Set a statusline for NERD tree windows.
-
-|'NERDTreeWinPos'| Tells the script where to put the NERD tree
- window.
-
-|'NERDTreeWinSize'| Sets the window size when the NERD tree is
- opened.
-
-|'NERDTreeMinimalUI'| Disables display of the 'Bookmarks' label and
- 'Press ? for help' text.
-
-|'NERDTreeCascadeSingleChildDir'|
- Collapses on the same line directories that
- have only one child directory.
-
-|'NERDTreeCascadeOpenSingleChildDir'|
- Cascade open while selected directory has only
- one child that also is a directory.
-
-|'NERDTreeAutoDeleteBuffer'| Tells the NERD tree to automatically remove
- a buffer when a file is being deleted or renamed
- via a context menu command.
-
-|'NERDTreeCreatePrefix'| Specify a prefix to be used when creating the
- NERDTree window.
-
-------------------------------------------------------------------------------
-3.2. Customisation details *NERDTreeOptionDetails*
-
-To enable any of the below options you should put the given line in your
-~/.vimrc
-
- *'loaded_nerd_tree'*
-If this plugin is making you feel homicidal, it may be a good idea to turn it
-off with this line in your vimrc: >
- let loaded_nerd_tree=1
-<
-
-------------------------------------------------------------------------------
- *'NERDTreeAutoCenter'*
-Values: 0 or 1.
-Default: 1
-
-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|
-|NERDTree-P|
-
-The centering is done with a |zz| operation.
-
-------------------------------------------------------------------------------
- *'NERDTreeAutoCenterThreshold'*
-Values: Any natural number.
-Default: 3
-
-This option controls the "sensitivity" of the NERD tree auto centering. See
-|'NERDTreeAutoCenter'| for details.
-
-------------------------------------------------------------------------------
- *'NERDTreeCaseSensitiveSort'*
-Values: 0 or 1.
-Default: 0.
-
-By default the NERD tree does not sort nodes case sensitively, i.e. nodes
-could appear like this: >
- bar.c
- Baz.c
- blarg.c
- boner.c
- Foo.c
-<
-But, if you set this option to 1 then the case of the nodes will be taken into
-account. The above nodes would then be sorted like this: >
- Baz.c
- Foo.c
- bar.c
- blarg.c
- boner.c
-<
-------------------------------------------------------------------------------
- *'NERDTreeNaturalSort'*
-Values: 0 or 1.
-Default: 0.
-
-By default the NERD tree does not sort nodes in natural sort order, i.e. nodes
-could appear like this: >
- z1.txt
- z10.txt
- z100.txt
- z11.txt
- z110.txt
- z2.txt
- z20.txt
- z3.txt
-<
-But if you set this option to 1 then the natural sort order will be used. The
-above nodes would then be sorted like this: >
- z1.txt
- z2.txt
- z3.txt
- z10.txt
- z11.txt
- z20.txt
- z100.txt
- z110.txt
-<
-------------------------------------------------------------------------------
- *'NERDTreeChDirMode'*
-
-Values: 0, 1 or 2.
-Default: 0.
-
-Use this option to tell the script when (if at all) to change the current
-working directory (CWD) for vim.
-
-If it is set to 0 then the CWD is never changed by the NERD tree.
-
-If set to 1 then the CWD is changed when the NERD tree is first loaded to the
-directory it is initialized in. For example, if you start the NERD tree with >
- :NERDTree /home/marty/foobar
-<
-then the CWD will be changed to /home/marty/foobar and will not be changed
-again unless you init another NERD tree with a similar command.
-
-If the option is set to 2 then it behaves the same as if set to 1 except that
-the CWD is changed whenever the tree root is changed. For example, if the CWD
-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.
-
-------------------------------------------------------------------------------
- *'NERDTreeHighlightCursorline'*
-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.
-
-------------------------------------------------------------------------------
- *'NERDTreeHijackNetrw'*
-Values: 0 or 1.
-Default: 1.
-
-If set to 1, doing a >
- :edit <some directory>
-<
-will open up a window level NERD tree instead of a netrw in the target window.
-
-Window level trees behaves slightly different from a regular trees in the
-following respects:
- 1. 'o' will open the selected file in the same window as the tree,
- replacing it.
- 2. you can have one tree per window - instead of per tab.
-
-------------------------------------------------------------------------------
- *'NERDTreeIgnore'*
-Values: a list of regular expressions.
-Default: ['\~$'].
-
-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
-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: >
- let NERDTreeIgnore=['\.vim$', '\~$']
-<
-then all files ending in .vim or ~ will be ignored.
-
-There are 2 magic flags that can be appended to the end of each regular
-expression to specify that the regex should match only files or only dirs.
-These flags are "[[dir]]" and "[[file]]". Example: >
- let NERDTreeIgnore=['\.d$[[dir]]', '\.o$[[file]]']
-<
-This will cause all dirs ending in ".d" to be ignored and all files ending in
-".o" to be ignored.
-
-Note: to tell the NERD tree not to ignore any files you must use the following
-line: >
- let NERDTreeIgnore=[]
-<
-
-The file filters can be turned on and off dynamically with the |NERDTree-f|
-mapping.
-
-------------------------------------------------------------------------------
- *'NERDTreeRespectWildIgnore'*
-Values: 0 or 1.
-Default: 0.
-
-If set to 1, the |'wildignore'| setting is respected.
-
-------------------------------------------------------------------------------
- *'NERDTreeBookmarksFile'*
-Values: a path
-Default: $HOME/.NERDTreeBookmarks
-
-This is where bookmarks are saved. See |NERDTreeBookmarkCommands|.
-
-------------------------------------------------------------------------------
- *'NERDTreeBookmarksSort'*
-Values: 0, 1, or 2
-Default: 1
-
-This option controls the method by which the list of user bookmarks is
-sorted. When sorted, bookmarks will render in alphabetical order by name.
-
-If set to 0, the bookmarks list is not sorted.
-If set to 1, the bookmarks list is sorted in a case-insensitive manner.
-If set to 2, the bookmarks list is sorted in a case-sensitive manner.
-
-------------------------------------------------------------------------------
- *'NERDTreeMarkBookmarks'*
-Values: 0 or 1
-Default: 1
-
-If set to 1, Bookmarks will be specially marked whenever the NERDTree is
-rendered. Users of the |'NERDTreeMinimalUI'| setting may prefer to disable
-this setting for even less visual clutter.
-
-------------------------------------------------------------------------------
- *'NERDTreeMouseMode'*
-Values: 1, 2 or 3.
-Default: 1.
-
-If set to 1 then a double click on a node is required to open it.
-If set to 2 then a single click will open directory nodes, while a double
-click will still be required for file nodes.
-If set to 3 then a single click will open any node.
-
-Note: a double click anywhere on a line that a tree node is on will
-activate it, but all single-click activations must be done on name of the node
-itself. For example, if you have the following node: >
- | | |-application.rb
-<
-then (to single click activate it) you must click somewhere in
-'application.rb'.
-
-------------------------------------------------------------------------------
- *'NERDTreeQuitOnOpen'*
-
-Values: 0 or 1.
-Default: 0
-
-If set to 1, the NERD tree window will close after opening a file with the
-|NERDTree-o|, |NERDTree-i|, |NERDTree-t| and |NERDTree-T| mappings.
-
-------------------------------------------------------------------------------
- *'NERDTreeShowBookmarks'*
-Values: 0 or 1.
-Default: 0.
-
-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.
-
-------------------------------------------------------------------------------
- *'NERDTreeShowFiles'*
-Values: 0 or 1.
-Default: 1.
-
-If this option is set to 1 then files are displayed in the NERD tree. If it is
-set to 0 then only directories are displayed.
-
-This option can be toggled dynamically, per tree, with the |NERDTree-F|
-mapping and is useful for drastically shrinking the tree when you are
-navigating to a different part of the tree.
-
-------------------------------------------------------------------------------
- *'NERDTreeShowHidden'*
-Values: 0 or 1.
-Default: 0.
-
-This option tells vim whether to display hidden files by default. This option
-can be dynamically toggled, per tree, with the |NERDTree-I| mapping. Use one
-of the follow lines to set this option: >
- let NERDTreeShowHidden=0
- let NERDTreeShowHidden=1
-<
-
-------------------------------------------------------------------------------
- *'NERDTreeShowLineNumbers'*
-Values: 0 or 1.
-Default: 0.
-
-This option tells vim whether to display line numbers for the NERD tree
-window. Use one of the follow lines to set this option: >
- let NERDTreeShowLineNumbers=0
- let NERDTreeShowLineNumbers=1
-<
-
-------------------------------------------------------------------------------
- *'NERDTreeSortOrder'*
-Values: a list of regular expressions.
-Default: ['\/$', '*', '\.swp$', '\.bak$', '\~$']
-
-This option is set to a list of regular expressions which are used to
-specify the order of nodes under their parent.
-
-For example, if the option is set to: >
- ['\.vim$', '\.c$', '\.h$', '*', 'foobar']
-<
-then all .vim files will be placed at the top, followed by all .c files then
-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
-doesnt match any of the other regexps should be placed here.
-
-If no star is present in 'NERDTreeSortOrder' then one is automatically
-appended to the array.
-
-The regex '\/$' should be used to match directory nodes.
-
-After this sorting is done, the files in each group are sorted alphabetically.
-
-Other examples: >
- (1) ['*', '\/$']
- (2) []
- (3) ['\/$', '\.rb$', '\.php$', '*', '\.swp$', '\.bak$', '\~$']
-<
-1. Directories will appear last, everything else will appear above.
-2. Everything will simply appear in alphabetical order.
-3. Dirs will appear first, then ruby and php. Swap files, bak files and vim
- backup files will appear last with everything else preceding them.
-
-------------------------------------------------------------------------------
- *'NERDTreeStatusline'*
-Values: Any valid statusline setting.
-Default: %{b:NERDTree.root.path.strForOS(0)}
-
-Tells the script what to use as the |'statusline'| setting for NERD tree
-windows.
-
-Note that the statusline is set using |:let-&| not |:set| so escaping spaces
-isn't necessary.
-
-Setting this option to -1 will will deactivate it so that your global
-statusline setting is used instead.
-
-------------------------------------------------------------------------------
- *'NERDTreeWinPos'*
-Values: "left" or "right"
-Default: "left".
-
-This option is used to determine where NERD tree window is placed on the
-screen.
-
-This option makes it possible to use two different explorer plugins
-simultaneously. For example, you could have the taglist plugin on the left of
-the window and the NERD tree on the right.
-
-------------------------------------------------------------------------------
- *'NERDTreeWinSize'*
-Values: a positive integer.
-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
-<
-
-------------------------------------------------------------------------------
- *'NERDTreeCascadeSingleChildDir'*
-Values: 0 or 1
-Default: 1.
-
-When displaying dir nodes, this option tells NERDTree to collapse dirs that
-have only one child. Use one of the follow lines to set this option: >
- let NERDTreeCascadeSingleChildDir=0
- let NERDTreeCascadeSingleChildDir=1
-<
-
-------------------------------------------------------------------------------
- *'NERDTreeCascadeOpenSingleChildDir'*
-Values: 0 or 1
-Default: 1.
-
-When opening dir nodes, this option tells NERDTree to recursively open dirs
-that have only one child which is also a dir. NERDTree will stop when it finds
-a dir that contains anything but another single dir. This option also causes
-the |NERDTree-x| mapping to close dirs in the same manner. This option may be
-useful for Java projects. Use one of the follow lines to set this option: >
- let NERDTreeCascadeOpenSingleChildDir=0
- let NERDTreeCascadeOpenSingleChildDir=1
-<
-
-------------------------------------------------------------------------------
- *'NERDTreeAutoDeleteBuffer'*
-Values: 0 or 1
-Default: 0.
-
-When using a context menu to delete or rename a file you may also want to delete
-the buffer which is no more valid. If the option is not set you will see a
-confirmation if you really want to delete an old buffer. If you always press 'y'
-then it worths to set this option to 1. Use one of the follow lines to set this
-option: >
- let NERDTreeAutoDeleteBuffer=0
- let NERDTreeAutoDeleteBuffer=1
-<
-------------------------------------------------------------------------------
- *'NERDTreeCreatePrefix'*
-Values: Any valid command prefix.
-Default: "silent".
-
-Internally, NERDTree uses the |:edit| command to create a buffer in which to
-display its tree view. You can augment this behavior by specifying a prefix
-string such as "keepalt" or similar. For example, to have NERDTree create its
-tree window using `silent keepalt keepjumps edit`:
- let NERDTreeCreatePrefix='silent keepalt keepjumps'
-<
-
-==============================================================================
-4. The NERD tree API *NERDTreeAPI*
-
-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 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
-<
-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
-
-See this blog post for more details:
- http://got-ravings.blogspot.com/2008/09/vim-pr0n-prototype-based-objects.html
-
-------------------------------------------------------------------------------
-4.1. Key map API *NERDTreeKeymapAPI*
-
-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-?|)
- "override" - if 1 then this new mapping will override whatever previous
- mapping was defined for the key/scope combo. Useful for overriding the
- default mappings.
-
- Additionally, a "scope" argument may be supplied. This constrains the
- mapping so that it is only activated if the cursor is on a certain object.
- That object is then passed into the handling method. Possible values are:
- "FileNode" - a file node
- "DirNode" - a directory node
- "Node" - a file or directory node
- "Bookmark" - A bookmark
- "all" - the keymap is not constrained to any scope (default). When
- thei is used, the handling function is not passed any arguments.
-
-
- Example: >
- call NERDTreeAddKeyMap({
- \ 'key': 'foo',
- \ 'callback': 'NERDTreeCDHandler',
- \ 'quickhelpText': 'echo full path of current node',
- \ 'scope': 'DirNode' })
-
- function! NERDTreeCDHandler(dirnode)
- call a:dirnode.changeToDir()
- endfunction
-<
- This code should sit in a file like ~/.vim/nerdtree_plugin/mymapping.vim.
- It adds a (redundant) mapping on 'foo' which changes vim's CWD to that of
- the current dir node. Note this mapping will only fire when the cursor is
- on a directory 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.
-
-------------------------------------------------------------------------------
-4.3 NERDTreeAddPathFilter(callback) *NERDTreeAddPathFilter()*
-
-Path filters are essentially a more powerful version of |NERDTreeIgnore|.
-If the simple regex matching in |NERDTreeIgnore| is not enough then use
-|NERDTreeAddPathFilter()| to add a callback function that paths will be
-checked against when the decision to ignore them is made. Example >
-
- call NERDTreeAddPathFilter('MyFilter')
-
- function! MyFilter(params)
- "params is a dict containing keys: 'nerdtree' and 'path' which are
- "g:NERDTree and g:NERDTreePath objects
-
- "return 1 to ignore params['path'] or 0 otherwise
- endfunction
-<
-------------------------------------------------------------------------------
-4.4 Path Listener API *NERDTreePathListenerAPI*
-
-Use this API if you want to run a callback for events on Path objects. E.G >
-
- call g:NERDTreePathNotifier.AddListener("init", "MyListener")
-
- "....
-
- function! MyListener(event)
- "This function will be called whenever a Path object is created.
-
- "a:event is an object that contains a bunch of relevant info -
- "including the path in question. See lib/nerdtree/event.vim for details.
- endfunction
-<
-Current events supported:
- init ~
- refresh ~
- refreshFlags ~
-
-------------------------------------------------------------------------------
-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*
-
-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 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
-
-The latest dev versions are on github
- http://github.com/scrooloose/nerdtree
-
-==============================================================================
-6. License *NERDTreeLicense*
-
-The NERD tree is released under the wtfpl.
-See http://sam.zoy.org/wtfpl/COPYING.
diff --git a/lib/nerdtree/tree_dir_node.vim b/lib/nerdtree/tree_dir_node.vim
@@ -45,9 +45,14 @@ function! s:TreeDirNode.addChild(treenode, inOrder)
endfunction
" FUNCTION: TreeDirNode.close() {{{1
-" Closes this directory
+" Mark this TreeDirNode as closed.
function! s:TreeDirNode.close()
- let self.isOpen = 0
+
+ " Close all directories in this directory node's cascade. This is
+ " necessary to ensure consistency when cascades are rendered.
+ for l:dirNode in self.getCascade()
+ let l:dirNode.isOpen = 0
+ endfor
endfunction
" FUNCTION: TreeDirNode.closeChildren() {{{1
@@ -78,19 +83,29 @@ function! s:TreeDirNode.createChild(path, inOrder)
endfunction
" FUNCTION: TreeDirNode.displayString() {{{1
-unlet s:TreeDirNode.displayString
+" Assemble and return a string that can represent this TreeDirNode object in
+" the NERDTree window.
function! s:TreeDirNode.displayString()
- let cascade = self.getCascade()
- let rv = ""
- for node in cascade
- let rv = rv . node.path.displayString()
+ let l:result = ''
+
+ " Build a label that identifies this TreeDirNode.
+ let l:label = ''
+ let l:cascade = self.getCascade()
+ for l:dirNode in l:cascade
+ let l:label .= l:dirNode.path.displayString()
endfor
- let sym = cascade[-1].isOpen ? g:NERDTreeDirArrowCollapsible : g:NERDTreeDirArrowExpandable
+ " Select the appropriate open/closed status indicator symbol.
+ if l:cascade[-1].isOpen
+ let l:symbol = g:NERDTreeDirArrowCollapsible
+ else
+ let l:symbol = g:NERDTreeDirArrowExpandable
+ endif
- let flags = cascade[-1].path.flagSet.renderToString()
+ let l:flags = l:cascade[-1].path.flagSet.renderToString()
- return sym . ' ' . flags . rv
+ let l:result = l:symbol . ' ' . l:flags . l:label
+ return l:result
endfunction
" FUNCTION: TreeDirNode.findNode(path) {{{1
@@ -400,25 +415,39 @@ function! s:TreeDirNode.New(path, nerdtree)
return newTreeNode
endfunction
-" FUNCTION: TreeDirNode.open([opts]) {{{1
-" Open the dir in the current tree or in a new tree elsewhere.
-"
-" If opening in the current tree, return the number of cached nodes.
-unlet s:TreeDirNode.open
+" FUNCTION: TreeDirNode.open([options]) {{{1
+" Open this directory node in the current tree or elsewhere if special options
+" are provided. Return 0 if options were processed. Otherwise, return the
+" number of new cached nodes.
function! s:TreeDirNode.open(...)
- let opts = a:0 ? a:1 : {}
+ let l:options = a:0 ? a:1 : {}
- if has_key(opts, 'where') && !empty(opts['where'])
- let opener = g:NERDTreeOpener.New(self.path, opts)
- call opener.open(self)
- else
- let self.isOpen = 1
- if self.children ==# []
- return self._initChildren(0)
+ " If special options were specified, process them and return.
+ if has_key(l:options, 'where') && !empty(l:options['where'])
+ let l:opener = g:NERDTreeOpener.New(self.path, l:options)
+ call l:opener.open(self)
+ return 0
+ endif
+
+ " Open any ancestors of this node that render within the same cascade.
+ let l:parent = self.parent
+ while !empty(l:parent) && !l:parent.isRoot()
+ if index(l:parent.getCascade(), self) >= 0
+ let l:parent.isOpen = 1
+ let l:parent = l:parent.parent
else
- return 0
+ break
endif
+ endwhile
+
+ let self.isOpen = 1
+
+ let l:numChildrenCached = 0
+ if empty(self.children)
+ let l:numChildrenCached = self._initChildren(0)
endif
+
+ return l:numChildrenCached
endfunction
" FUNCTION: TreeDirNode.openAlong([opts]) {{{1
@@ -463,35 +492,16 @@ function! s:TreeDirNode._openInNewTab()
endfunction
" FUNCTION: TreeDirNode.openRecursively() {{{1
-" Opens this treenode and all of its children whose paths arent 'ignored'
-" because of the file filters.
-"
-" This method is actually a wrapper for the OpenRecursively2 method which does
-" the work.
+" Open this directory node and any descendant directory nodes whose pathnames
+" are not ignored.
function! s:TreeDirNode.openRecursively()
- call self._openRecursively2(1)
-endfunction
+ silent call self.open()
-" FUNCTION: TreeDirNode._openRecursively2() {{{1
-" Opens this all children of this treenode recursively if either:
-" *they arent filtered by file filters
-" *a:forceOpen is 1
-"
-" Args:
-" forceOpen: 1 if this node should be opened regardless of file filters
-function! s:TreeDirNode._openRecursively2(forceOpen)
- if self.path.ignore(self.getNerdtree()) ==# 0 || a:forceOpen
- let self.isOpen = 1
- if self.children ==# []
- call self._initChildren(1)
+ for l:child in self.children
+ if l:child.path.isDirectory && !l:child.path.ignore(l:child.getNerdtree())
+ call l:child.openRecursively()
endif
-
- for i in self.children
- if i.path.isDirectory ==# 1
- call i._openRecursively2(0)
- endif
- endfor
- endif
+ endfor
endfunction
" FUNCTION: TreeDirNode.refresh() {{{1