From eac32148a435157ee911361082d78789b1ea7364 Mon Sep 17 00:00:00 2001 From: Marcin Kulik Date: Sat, 19 Feb 2011 12:36:14 +0100 Subject: [PATCH 1/4] Use small triangles for directories and get rid of ascii bars --- plugin/NERD_tree.vim | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim index 1d481acc..4a09df35 100644 --- a/plugin/NERD_tree.vim +++ b/plugin/NERD_tree.vim @@ -147,7 +147,7 @@ endif let s:NERDTreeBufName = 'NERD_tree_' let s:tree_wid = 2 -let s:tree_markup_reg = '^[ `|]*[\-+~]' +let s:tree_markup_reg = '^[ `|▾▸]*[\-+~ ]*' 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 @@ -1313,33 +1313,20 @@ function! s:TreeFileNode._renderToString(depth, drawText, vertMap, isLastChild) "get all the leading spaces and vertical tree parts for this line if a:depth > 1 for j in a:vertMap[0:-2] - if j ==# 1 - let treeParts = treeParts . '| ' - else - let treeParts = treeParts . ' ' - endif + let treeParts = treeParts . ' ' endfor 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 a:isLastChild - let treeParts = treeParts . '`' - else - let treeParts = treeParts . '|' - endif - - "smack the appropriate dir/file symbol on the line before the file/dir "name itself if self.path.isDirectory if self.isOpen - let treeParts = treeParts . '~' + let treeParts = treeParts . '▾ ' else - let treeParts = treeParts . '+' + let treeParts = treeParts . '▸ ' endif else - let treeParts = treeParts . '-' + let treeParts = treeParts . '' endif let line = treeParts . self.displayString() @@ -3068,9 +3055,9 @@ function! s:getPath(ln) endif " in case called from outside the tree - if line !~# '^ *[|`]' || line =~# '^$' - return {} - endif + " if line !~# '^ *[|`▸▾ ]' || line =~# '^$' + " return {} + " endif if line ==# s:tree_up_dir_line return b:NERDTreeRoot.path.getParent() From 867de9164322ac363baa5ef8bded68a95e7979ad Mon Sep 17 00:00:00 2001 From: Marcin Kulik Date: Sun, 20 Feb 2011 20:42:03 +0100 Subject: [PATCH 2/4] Make indentation of file nodes more intuitive --- plugin/NERD_tree.vim | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim index 4a09df35..42f64457 100644 --- a/plugin/NERD_tree.vim +++ b/plugin/NERD_tree.vim @@ -1326,7 +1326,7 @@ function! s:TreeFileNode._renderToString(depth, drawText, vertMap, isLastChild) let treeParts = treeParts . '▸ ' endif else - let treeParts = treeParts . '' + let treeParts = treeParts . ' ' endif let line = treeParts . self.displayString() @@ -3112,7 +3112,13 @@ function! s:getTreeWinNum() endfunction "FUNCTION: s:indentLevelFor(line) {{{2 function! s:indentLevelFor(line) - return match(a:line, '[^ \-+~`|]') / s:tree_wid + let level = match(a:line, '[^ \-+~▸▾`|]') / s:tree_wid + " check if line includes arrows + if match(a:line, '[▸▾]') > -1 + " decrement level as arrow uses 3 ascii chars + let level = level - 1 + endif + return level endfunction "FUNCTION: s:isTreeOpen() {{{2 function! s:isTreeOpen() From 8accb0978e1b7dd7a1dde62fb76fd8445ace3b9a Mon Sep 17 00:00:00 2001 From: Marcin Kulik Date: Wed, 23 Feb 2011 18:30:42 +0100 Subject: [PATCH 3/4] Make tree style (|+~ or arrows) configurable --- doc/NERD_tree.txt | 16 ++++++++++++++ plugin/NERD_tree.vim | 51 ++++++++++++++++++++++++++++++++++++-------- 2 files changed, 58 insertions(+), 9 deletions(-) diff --git a/doc/NERD_tree.txt b/doc/NERD_tree.txt index 5ff0651d..757b20ad 100644 --- a/doc/NERD_tree.txt +++ b/doc/NERD_tree.txt @@ -642,6 +642,9 @@ NERD tree. These options should be set in your vimrc. |'NERDTreeWinSize'| Sets the window size when the NERD tree is opened. +|'NERDTreeDirArrows'| Tells the NERD tree to use arrows instead of + + ~ chars when displaying directories. + ------------------------------------------------------------------------------ 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. +------------------------------------------------------------------------------ + *'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* diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim index 42f64457..064b3f1a 100644 --- a/plugin/NERD_tree.vim +++ b/plugin/NERD_tree.vim @@ -65,6 +65,7 @@ call s:initVariable("g:NERDTreeShowFiles", 1) call s:initVariable("g:NERDTreeShowHidden", 0) call s:initVariable("g:NERDTreeShowLineNumbers", 0) call s:initVariable("g:NERDTreeSortDirs", 1) +call s:initVariable("g:NERDTreeDirArrows", 0) if !exists("g:NERDTreeSortOrder") let g:NERDTreeSortOrder = ['\/$', '*', '\.swp$', '\.bak$', '\~$'] @@ -147,7 +148,7 @@ endif let s:NERDTreeBufName = 'NERD_tree_' let s:tree_wid = 2 -let s:tree_markup_reg = '^[ `|▾▸]*[\-+~ ]*' +let s:tree_markup_reg = '^[ `|]*[\-+~▾▸ ]*' 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 @@ -1313,20 +1314,50 @@ function! s:TreeFileNode._renderToString(depth, drawText, vertMap, isLastChild) "get all the leading spaces and vertical tree parts for this line if a:depth > 1 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 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 "name itself if self.path.isDirectory if self.isOpen - let treeParts = treeParts . '▾ ' + if g:NERDTreeDirArrows + let treeParts = treeParts . '▾ ' + else + let treeParts = treeParts . '~' + endif else - let treeParts = treeParts . '▸ ' + if g:NERDTreeDirArrows + let treeParts = treeParts . '▸ ' + else + let treeParts = treeParts . '+' + endif endif else - let treeParts = treeParts . ' ' + if g:NERDTreeDirArrows + let treeParts = treeParts . ' ' + else + let treeParts = treeParts . '-' + endif endif let line = treeParts . self.displayString() @@ -3054,10 +3085,12 @@ function! s:getPath(ln) return b:NERDTreeRoot.path endif - " in case called from outside the tree - " if line !~# '^ *[|`▸▾ ]' || line =~# '^$' - " return {} - " endif + if !g:NERDTreeDirArrows + " in case called from outside the tree + if line !~# '^ *[|`▸▾ ]' || line =~# '^$' + return {} + endif + endif if line ==# s:tree_up_dir_line return b:NERDTreeRoot.path.getParent() From 21bd1418667e2ae31c44400b0d51902eb27fb0dd Mon Sep 17 00:00:00 2001 From: Martin Grenfell Date: Mon, 28 Feb 2011 10:55:15 +1300 Subject: [PATCH 4/4] fix highlighting of executable files with NERDTreeDirArrows --- plugin/NERD_tree.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim index 064b3f1a..5248d5bd 100644 --- a/plugin/NERD_tree.vim +++ b/plugin/NERD_tree.vim @@ -3428,7 +3428,7 @@ function! s:setupSyntaxHighlighting() "highlighing for directory nodes and file nodes syn match NERDTreeDirSlash #/# syn match NERDTreeDir #[^-| `].*/# contains=NERDTreeLink,NERDTreeDirSlash,NERDTreeOpenable,NERDTreeClosable - syn match NERDTreeExecFile #[|`]-.*\*\($\| \)# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark + syn match NERDTreeExecFile #[|` ].*\*\($\| \)# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark syn match NERDTreeFile #|-.*# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark,NERDTreeExecFile syn match NERDTreeFile #`-.*# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark,NERDTreeExecFile syn match NERDTreeCWD #^/.*$#