diff --git a/autoload/nerdtree.vim b/autoload/nerdtree.vim index 3a2d71a..c440bf8 100644 --- 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 index dda2b75..b262131 100644 --- a/doc/NERD_tree.txt +++ b/doc/NERD_tree.txt @@ -993,8 +993,9 @@ 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: > +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 <