diff --git a/autoload/nerdtree/ui_glue.vim b/autoload/nerdtree/ui_glue.vim index fc22f216..845eb5ff 100644 --- a/autoload/nerdtree/ui_glue.vim +++ b/autoload/nerdtree/ui_glue.vim @@ -54,6 +54,7 @@ function! nerdtree#ui_glue#createDefaultBindings() abort call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapHelp, 'scope': 'all', 'callback': s.'displayHelp' }) call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleZoom, 'scope': 'all', 'callback': s.'toggleZoom' }) call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleHidden, 'scope': 'all', 'callback': s.'toggleShowHidden' }) + call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleSymlink, 'scope': 'all', 'callback': s.'toggleShowSymlink' }) call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleFilters, 'scope': 'all', 'callback': s.'toggleIgnoreFilter' }) call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleFiles, 'scope': 'all', 'callback': s.'toggleShowFiles' }) call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleBookmarks, 'scope': 'all', 'callback': s.'toggleShowBookmarks' }) @@ -685,6 +686,12 @@ function! s:toggleShowHidden() abort call b:NERDTree.ui.toggleShowHidden() endfunction +" FUNCTION: s:toggleShowSymlink() {{{1 +" toggles the display of symlinks +function! s:toggleShowSymlink() abort + call b:NERDTree.ui.toggleShowSymlink() +endfunction + " FUNCTION: s:toggleZoom() {{{1 function! s:toggleZoom() abort call b:NERDTree.ui.toggleZoom() diff --git a/doc/NERDTree.txt b/doc/NERDTree.txt index 55c25cd1..ea9c5d1b 100644 --- a/doc/NERDTree.txt +++ b/doc/NERDTree.txt @@ -403,9 +403,10 @@ Applies to: directories. Recursively opens the selected directory. All files and directories are cached, but if a directory would not be -displayed due to file filters (see |NERDTreeIgnore| |NERDTree-f|) or the -hidden file filter (see |NERDTreeShowHidden|) then its contents are not -cached. This is handy, especially if you have .svn directories. +displayed due to file filters (see |NERDTreeIgnore| |NERDTree-f|), the +hidden file filter (see |NERDTreeShowHidden|) and the symlinks filter +(see |NERDTreeShowSymlink|) then its contents are not cached. +This is handy, especially if you have .svn directories. ------------------------------------------------------------------------------ *NERDTree-x* @@ -716,6 +717,9 @@ the NERDTree. These settings should be set in your vimrc, using `:let`. |NERDTreeShowHidden| Tells the NERDTree whether to display hidden files on startup. +|NERDTreeShowSymlink| Tells the NERDTree whether to display symlinks + on startup. + |NERDTreeShowLineNumbers| Tells the NERDTree whether to display line numbers in the tree window. @@ -1051,6 +1055,17 @@ Use one of the follow lines for this setting: > let NERDTreeShowHidden=0 let NERDTreeShowHidden=1 < +------------------------------------------------------------------------------ + *NERDTreeShowSymlink* +Values: 0 or 1. +Default: 1. + +This setting tells vim whether to display symlinks by default. This +setting can be dynamically toggled, per tree, with the |NERDTree-S| mapping. +Use one of the follow lines for this setting: > + let NERDTreeShowSymlink=0 + let NERDTreeShowSymlink=1 +< ------------------------------------------------------------------------------ *NERDTreeShowLineNumbers* Values: 0 or 1. diff --git a/lib/nerdtree/path.vim b/lib/nerdtree/path.vim index 997abf37..52cf6755 100644 --- a/lib/nerdtree/path.vim +++ b/lib/nerdtree/path.vim @@ -472,6 +472,11 @@ function! s:Path.ignore(nerdtree) return 1 endif + "dont show symlinks unless instructed to + if !a:nerdtree.ui.getShowSymlink() && self.isSymLink + return 1 + endif + if a:nerdtree.ui.getShowFiles() ==# 0 && self.isDirectory ==# 0 return 1 endif diff --git a/lib/nerdtree/ui.vim b/lib/nerdtree/ui.vim index a481ba47..0de9cc6f 100644 --- a/lib/nerdtree/ui.vim +++ b/lib/nerdtree/ui.vim @@ -100,6 +100,7 @@ function! s:UI._dumpHelp() let help .= "\"\n\" ----------------------------\n" let help .= "\" Tree filtering mappings~\n" let help .= '" '. g:NERDTreeMapToggleHidden .': hidden files (' . (self.getShowHidden() ? 'on' : 'off') . ")\n" + let help .= '" '. g:NERDTreeMapToggleSymlink .': symlinks (' . (self.getShowSymlink() ? 'on' : 'off') . ")\n" let help .= '" '. g:NERDTreeMapToggleFilters .': file filters (' . (self.isIgnoreFilterEnabled() ? 'on' : 'off') . ")\n" let help .= '" '. g:NERDTreeMapToggleFiles .': files (' . (self.getShowFiles() ? 'on' : 'off') . ")\n" let help .= '" '. g:NERDTreeMapToggleBookmarks .': bookmarks (' . (self.getShowBookmarks() ? 'on' : 'off') . ")\n" @@ -146,6 +147,7 @@ function! s:UI.New(nerdtree) let newObj._ignoreEnabled = 1 let newObj._showFiles = g:NERDTreeShowFiles let newObj._showHidden = g:NERDTreeShowHidden + let newObj._showSymlink = g:NERDTreeShowSymlink let newObj._showBookmarks = g:NERDTreeShowBookmarks return newObj @@ -284,6 +286,11 @@ function! s:UI.getShowHidden() return self._showHidden endfunction +" FUNCTION: s:UI.getShowSymlink() {{{1 +function! s:UI.getShowSymlink() + return self._showSymlink +endfunction + " FUNCTION: s:UI._indentLevelFor(line) {{{1 function! s:UI._indentLevelFor(line) " Replace multi-character DirArrows with a single space so the @@ -379,6 +386,11 @@ function! s:UI.setShowHidden(val) let self._showHidden = a:val endfunction +" FUNCTION: s:UI.setShowSymlink(val) {{{1 +function! s:UI.setShowSymlink(val) + let self._showSymlink = a:val +endfunction + " FUNCTION: s:UI._stripMarkup(line){{{1 " find the filename in the given line, and return it. " @@ -512,6 +524,14 @@ function! s:UI.toggleShowHidden() call self.centerView() endfunction +" FUNCTION: s:UI.toggleShowSymlink() {{{1 +" toggles the display of symlink files and directories +function! s:UI.toggleShowSymlink() + let self._showSymlink = !self._showSymlink + call self.renderViewSavingPosition() + call self.centerView() +endfunction + " FUNCTION: s:UI.toggleZoom() {{{1 " zoom (maximize/minimize) the NERDTree window function! s:UI.toggleZoom() diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim index ef60cca1..e2fc48b4 100644 --- a/plugin/NERD_tree.vim +++ b/plugin/NERD_tree.vim @@ -50,6 +50,7 @@ let g:NERDTreeRespectWildIgnore = get(g:, 'NERDTreeRespectWildIgnore', 0 let g:NERDTreeShowBookmarks = get(g:, 'NERDTreeShowBookmarks', 0) let g:NERDTreeShowFiles = get(g:, 'NERDTreeShowFiles', 1) let g:NERDTreeShowHidden = get(g:, 'NERDTreeShowHidden', 0) +let g:NERDTreeShowSymlink = get(g:, 'NERDTreeShowSymlink', 1) let g:NERDTreeShowLineNumbers = get(g:, 'NERDTreeShowLineNumbers', 0) let g:NERDTreeSortDirs = get(g:, 'NERDTreeSortDirs', 1) @@ -128,6 +129,7 @@ let g:NERDTreeMapToggleBookmarks = get(g:, 'NERDTreeMapToggleBookmarks', 'B') let g:NERDTreeMapToggleFiles = get(g:, 'NERDTreeMapToggleFiles', 'F') let g:NERDTreeMapToggleFilters = get(g:, 'NERDTreeMapToggleFilters', 'f') let g:NERDTreeMapToggleHidden = get(g:, 'NERDTreeMapToggleHidden', 'I') +let g:NERDTreeMapToggleSymlink = get(g:, 'NERDTreeMapToggleSymlink', 'S') let g:NERDTreeMapToggleZoom = get(g:, 'NERDTreeMapToggleZoom', 'A') let g:NERDTreeMapUpdir = get(g:, 'NERDTreeMapUpdir', 'u') let g:NERDTreeMapUpdirKeepOpen = get(g:, 'NERDTreeMapUpdirKeepOpen', 'U')