commit af39458989358d7dbf8e77a298883c17dc3f238d
parent 2cef8bb6022b9e450cdee23d03024822e1dbeeea
Author: Martin Grenfell <martin.grenfell@gmail.com>
Date: Tue, 24 Nov 2015 22:06:04 +0000
rework the cascading slightly to correctly show open/closed dir arrows
Diffstat:
2 files changed, 35 insertions(+), 15 deletions(-)
diff --git a/lib/nerdtree/tree_dir_node.vim b/lib/nerdtree/tree_dir_node.vim
@@ -76,19 +76,15 @@ endfunction
"FUNCTION: TreeDirNode.displayString() {{{1
unlet s:TreeDirNode.displayString
function! s:TreeDirNode.displayString()
- let vc = self.getVisibleChildren()
- if len(vc) != 1
- return self.path.displayString()
- endif
+ let cascade = self.getCascade()
+ let rv = ""
+ for node in cascade
+ let rv = rv . node.path.displayString()
+ endfor
- let visChild = vc[0]
+ let sym = cascade[-1].isOpen ? g:NERDTreeDirArrowCollapsible : g:NERDTreeDirArrowExpandable
- "TODO: optimize
- if !visChild.path.isDirectory
- return self.path.displayString()
- endif
-
- return self.path.getLastPathComponent(1) . visChild.displayString()
+ return sym . ' ' . rv
endfunction
"FUNCTION: TreeDirNode.findNode(path) {{{1
@@ -116,6 +112,33 @@ function! s:TreeDirNode.findNode(path)
return {}
endfunction
+"FUNCTION: TreeDirNode.getCascade() {{{1
+"Return an array of dir nodes (starting from self) that can be cascade opened.
+function! s:TreeDirNode.getCascade()
+
+ let rv = [self]
+ let node = self
+
+ while 1
+ let vc = node.getVisibleChildren()
+ if len(vc) != 1
+ break
+ endif
+
+ let visChild = vc[0]
+
+ "TODO: optimize
+ if !visChild.path.isDirectory
+ break
+ endif
+
+ call add(rv, visChild)
+ let node = visChild
+ endwhile
+
+ return rv
+endfunction
+
"FUNCTION: TreeDirNode.getChildCount() {{{1
"Returns the number of children this node has
function! s:TreeDirNode.getChildCount()
diff --git a/lib/nerdtree/tree_file_node.vim b/lib/nerdtree/tree_file_node.vim
@@ -337,10 +337,7 @@ function! s:TreeFileNode._renderToString(depth, drawText)
let treeParts = repeat(' ', a:depth - 1)
- if self.path.isDirectory
- let sym = self.isOpen ? g:NERDTreeDirArrowCollapsible : g:NERDTreeDirArrowExpandable
- let treeParts = treeParts . sym . ' '
- else
+ if !self.path.isDirectory
let treeParts = treeParts . ' '
endif