nerdtree

A tree explorer plugin for vim.
Index Commits Files Refs
commit 0928b5b0269257245553a92199679d98d7f08b97
parent 8189597c0bf736f469ddab02104dd89610d28cc5
Author: Martin Grenfell <martin.grenfell@gmail.com>
Date:   Fri, 27 Jun 2014 19:25:48 +0100

Merge pull request #251 from pendulm/master

fix typo and smart close single child directory
Diffstat:
Mautoload/nerdtree.vim | 12++++++++++--
Mdoc/NERD_tree.txt | 15++++++++-------
Mlib/nerdtree/tree_dir_node.vim | 2+-
Mplugin/NERD_tree.vim | 2+-
4 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/autoload/nerdtree.vim b/autoload/nerdtree.vim
@@ -1068,9 +1068,17 @@ function! s:closeCurrentDir(node)
     if parent ==# {} || parent.isRoot()
         call nerdtree#echo("cannot close tree root")
     else
-        call a:node.parent.close()
+        while g:NERDTreeCascadeOpenSingleChildDir && !parent.parent.isRoot()
+            if parent.parent.getVisibleChildCount() == 1
+                call parent.close()
+                let parent = parent.parent
+            else
+                break
+            endif
+        endwhile
+        call parent.close()
         call nerdtree#renderView()
-        call a:node.parent.putCursorHere(0, 0)
+        call parent.putCursorHere(0, 0)
     endif
 endfunction
 
diff --git a/doc/NERD_tree.txt b/doc/NERD_tree.txt
@@ -676,8 +676,8 @@ NERD tree. These options should be set in your vimrc.
 |'NERDTreeDirArrows'|           Tells the NERD tree to use arrows instead of
                                 + ~ chars when displaying directories.
 
-|'NERDTreeCasadeOpenSingleChildDir'|
-                                Casade open while selected directory has only
+|'NERDTreeCascadeOpenSingleChildDir'|
+                                Cascade open while selected directory has only
                                 one child that also is a directory.
 
 |'NERDTreeAutoDeleteBuffer'|    Tells the NERD tree to automatically remove 
@@ -1011,16 +1011,17 @@ option: >
 <
 
 ------------------------------------------------------------------------------
-                                          *'NERDTreeCasadeOpenSingleChildDir'*
+                                          *'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 may be useful
-for Java projects.  Use one of the follow lines to set this option: >
-    let NERDTreeCasadeOpenSingleChildDir=0
-    let NERDTreeCasadeOpenSingleChildDir=1
+a dir that contains anything but another single dir. Set this option on also 
+cause NERDTree close parent dir intelligent. This option may be useful for Java 
+projects. Use one of the follow lines to set this option: >
+    let NERDTreeCascadeOpenSingleChildDir=0
+    let NERDTreeCascadeOpenSingleChildDir=1
 <
 
 ------------------------------------------------------------------------------
diff --git a/lib/nerdtree/tree_dir_node.vim b/lib/nerdtree/tree_dir_node.vim
@@ -500,7 +500,7 @@ function! s:TreeDirNode.toggleOpen(...)
     if self.isOpen ==# 1
         call self.close()
     else
-        if g:NERDTreeCasadeOpenSingleChildDir == 0
+        if g:NERDTreeCascadeOpenSingleChildDir == 0
             call self.open(opts)
         else
             call self.openAlong(opts)
diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim
@@ -69,7 +69,7 @@ call s:initVariable("g:NERDTreeShowHidden", 0)
 call s:initVariable("g:NERDTreeShowLineNumbers", 0)
 call s:initVariable("g:NERDTreeSortDirs", 1)
 call s:initVariable("g:NERDTreeDirArrows", !nerdtree#runningWindows())
-call s:initVariable("g:NERDTreeCasadeOpenSingleChildDir", 1)
+call s:initVariable("g:NERDTreeCascadeOpenSingleChildDir", 1)
 
 if !exists("g:NERDTreeSortOrder")
     let g:NERDTreeSortOrder = ['\/$', '*', '\.swp$',  '\.bak$', '\~$']