Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added visibility toggle for symlinks #1364

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions autoload/nerdtree/ui_glue.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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' })
Expand Down Expand Up @@ -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()
Expand Down
21 changes: 18 additions & 3 deletions doc/NERDTree.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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*
Expand Down Expand Up @@ -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.

Expand Down Expand Up @@ -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.
Expand Down
5 changes: 5 additions & 0 deletions lib/nerdtree/path.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
20 changes: 20 additions & 0 deletions lib/nerdtree/ui.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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.
"
Expand Down Expand Up @@ -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()
Expand Down
2 changes: 2 additions & 0 deletions plugin/NERD_tree.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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')
Expand Down