Make tree style (|+~ or arrows) configurable

This commit is contained in:
Marcin Kulik 2011-02-23 18:30:42 +01:00
parent 867de91643
commit 8accb0978e
2 changed files with 58 additions and 9 deletions

View File

@ -642,6 +642,9 @@ NERD tree. These options should be set in your vimrc.
|'NERDTreeWinSize'| Sets the window size when the NERD tree is |'NERDTreeWinSize'| Sets the window size when the NERD tree is
opened. opened.
|'NERDTreeDirArrows'| Tells the NERD tree to use arrows instead of
+ ~ chars when displaying directories.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2. Customisation details *NERDTreeOptionDetails* 3.2. Customisation details *NERDTreeOptionDetails*
@ -921,6 +924,19 @@ Default: 31.
This option is used to change the size of the NERD tree when it is loaded. This option is used to change the size of the NERD tree when it is loaded.
------------------------------------------------------------------------------
*'NERDTreeDirArrows'*
Values: 0 or 1
Default: 0.
This option is used to change the default look of directory nodes displayed in
the tree. When set to 0 it shows old-school bars (|), + and ~ chars. If set to
1 it shows right and down arrows. Use one of the follow lines to set this
option: >
let NERDTreeDirArrows=0
let NERDTreeDirArrows=1
<
============================================================================== ==============================================================================
4. The NERD tree API *NERDTreeAPI* 4. The NERD tree API *NERDTreeAPI*

View File

@ -65,6 +65,7 @@ call s:initVariable("g:NERDTreeShowFiles", 1)
call s:initVariable("g:NERDTreeShowHidden", 0) call s:initVariable("g:NERDTreeShowHidden", 0)
call s:initVariable("g:NERDTreeShowLineNumbers", 0) call s:initVariable("g:NERDTreeShowLineNumbers", 0)
call s:initVariable("g:NERDTreeSortDirs", 1) call s:initVariable("g:NERDTreeSortDirs", 1)
call s:initVariable("g:NERDTreeDirArrows", 0)
if !exists("g:NERDTreeSortOrder") if !exists("g:NERDTreeSortOrder")
let g:NERDTreeSortOrder = ['\/$', '*', '\.swp$', '\.bak$', '\~$'] let g:NERDTreeSortOrder = ['\/$', '*', '\.swp$', '\.bak$', '\~$']
@ -147,7 +148,7 @@ endif
let s:NERDTreeBufName = 'NERD_tree_' let s:NERDTreeBufName = 'NERD_tree_'
let s:tree_wid = 2 let s:tree_wid = 2
let s:tree_markup_reg = '^[ `|▾▸]*[\-+~ ]*' let s:tree_markup_reg = '^[ `|]*[\-+~▾▸ ]*'
let s:tree_up_dir_line = '.. (up a dir)' let s:tree_up_dir_line = '.. (up a dir)'
"the number to add to the nerd tree buffer name to make the buf name unique "the number to add to the nerd tree buffer name to make the buf name unique
@ -1313,20 +1314,50 @@ function! s:TreeFileNode._renderToString(depth, drawText, vertMap, isLastChild)
"get all the leading spaces and vertical tree parts for this line "get all the leading spaces and vertical tree parts for this line
if a:depth > 1 if a:depth > 1
for j in a:vertMap[0:-2] for j in a:vertMap[0:-2]
let treeParts = treeParts . ' ' if g:NERDTreeDirArrows
let treeParts = treeParts . ' '
else
if j ==# 1
let treeParts = treeParts . '| '
else
let treeParts = treeParts . ' '
endif
endif
endfor endfor
endif endif
"get the last vertical tree part for this line which will be different
"if this node is the last child of its parent
if !g:NERDTreeDirArrows
if a:isLastChild
let treeParts = treeParts . '`'
else
let treeParts = treeParts . '|'
endif
endif
"smack the appropriate dir/file symbol on the line before the file/dir "smack the appropriate dir/file symbol on the line before the file/dir
"name itself "name itself
if self.path.isDirectory if self.path.isDirectory
if self.isOpen if self.isOpen
let treeParts = treeParts . '▾ ' if g:NERDTreeDirArrows
let treeParts = treeParts . '▾ '
else
let treeParts = treeParts . '~'
endif
else else
let treeParts = treeParts . '▸ ' if g:NERDTreeDirArrows
let treeParts = treeParts . '▸ '
else
let treeParts = treeParts . '+'
endif
endif endif
else else
let treeParts = treeParts . ' ' if g:NERDTreeDirArrows
let treeParts = treeParts . ' '
else
let treeParts = treeParts . '-'
endif
endif endif
let line = treeParts . self.displayString() let line = treeParts . self.displayString()
@ -3054,10 +3085,12 @@ function! s:getPath(ln)
return b:NERDTreeRoot.path return b:NERDTreeRoot.path
endif endif
" in case called from outside the tree if !g:NERDTreeDirArrows
" if line !~# '^ *[|`▸▾ ]' || line =~# '^$' " in case called from outside the tree
" return {} if line !~# '^ *[|`▸▾ ]' || line =~# '^$'
" endif return {}
endif
endif
if line ==# s:tree_up_dir_line if line ==# s:tree_up_dir_line
return b:NERDTreeRoot.path.getParent() return b:NERDTreeRoot.path.getParent()