From 370eb5bcb44d7df6cd4512e05d4511fd479497d7 Mon Sep 17 00:00:00 2001 From: Phil Runninger Date: Tue, 20 Nov 2018 13:33:23 -0500 Subject: [PATCH] Add two more disqualifications for isCascadable(). (#914) * Add two more disqualifications for isCascadable(). A directory that is bookmarked or that is a symlink to another location has trailing text indicating so. This extra text causes problem when cascading with a directory underneath it, so disable it in this case. * Add comments to explain the new exclusions for bookmarks and symlinks. --- lib/nerdtree/tree_dir_node.vim | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/nerdtree/tree_dir_node.vim b/lib/nerdtree/tree_dir_node.vim index b7b7d8f..dd818a5 100644 --- a/lib/nerdtree/tree_dir_node.vim +++ b/lib/nerdtree/tree_dir_node.vim @@ -370,12 +370,26 @@ function! s:TreeDirNode.hasVisibleChildren() endfunction " FUNCTION: TreeDirNode.isCascadable() {{{1 -" true if this dir has only one visible child - which is also a dir +" true if this dir has only one visible child that is also a dir +" false if this dir is bookmarked or symlinked. Why? Two reasons: +" 1. If cascaded, we don't know which dir is bookmarked or is a symlink. +" 2. If the parent is a symlink or is bookmarked, you end up with unparsable +" text, and NERDTree cannot get the path of any child node. function! s:TreeDirNode.isCascadable() if g:NERDTreeCascadeSingleChildDir == 0 return 0 endif + if self.path.isSymLink + return 0 + endif + + for i in g:NERDTreeBookmark.Bookmarks() + if i.path.equals(self.path) + return 0 + endif + endfor + let c = self.getVisibleChildren() return len(c) == 1 && c[0].path.isDirectory endfunction