Skip to content

Commit

Permalink
feat: support for unresolved symlinks.
Browse files Browse the repository at this point in the history
  • Loading branch information
rzvxa committed May 13, 2024
1 parent 6ad85ec commit 9eeacfd
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 5 deletions.
21 changes: 17 additions & 4 deletions lib/nerdtree/path.vim
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,11 @@ function! s:Path.cacheDisplayString() abort
endif

if self.isSymLink
let self.cachedDisplayString = self.addDelimiter(self.cachedDisplayString) . ' -> ' . self.symLinkDest
let self.cachedDisplayString = self.addDelimiter(self.cachedDisplayString) . ' -> '
let self.cachedDisplayString = self.addDelimiter(self.cachedDisplayString) . self.symLinkDest
if self.isUnresolved
let self.cachedDisplayString = self.addDelimiter(self.cachedDisplayString) . g:NERDTreeGlyphBroken
endif
endif

if !self.isDirectory && b:NERDTree.ui.getShowFileLines() != 0
Expand Down Expand Up @@ -607,24 +611,33 @@ function! s:Path.readInfoFromDisk(fullpath)

let fullpath = s:Path.WinToUnixPath(a:fullpath)

if getftype(fullpath) ==# 'fifo'
let ftype = getftype(fullpath)

if ftype ==# 'fifo'
throw 'NERDTree.InvalidFiletypeError: Cant handle FIFO files: ' . a:fullpath
endif

let self.pathSegments = filter(split(fullpath, '/'), '!empty(v:val)')

let self.isReadOnly = 0
if isdirectory(a:fullpath)
let self.isDirectory = 1
let self.isReadOnly = 0
let self.isUnresolved = 0
elseif filereadable(a:fullpath)
let self.isDirectory = 0
let self.isReadOnly = filewritable(a:fullpath) ==# 0
let self.isUnresolved = 0
elseif ftype ==# 'link'
let self.isDirectory = 0
let self.isReadOnly = 0
let self.isUnresolved = 1
else
call nerdtree#echoWarning('invalid ' . a:fullpath . 'file type: ' . ftype)
throw 'NERDTree.InvalidArgumentsError: Invalid path = ' . a:fullpath
endif

let self.isExecutable = 0
if !self.isDirectory
if !self.isDirectory && !self.isUnresolved
let self.isExecutable = getfperm(a:fullpath) =~# 'x'
endif

Expand Down
2 changes: 1 addition & 1 deletion lib/nerdtree/tree_dir_node.vim
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ function! s:TreeDirNode._glob(pattern, all)
" See ':h version7.txt' and ':h version8.txt' for details on the
" development of the glob() and globpath() functions.
if v:version > 704 || (v:version ==# 704 && has('patch654'))
let l:globList = globpath(l:pathSpec, a:pattern, !g:NERDTreeRespectWildIgnore, 1, 0)
let l:globList = globpath(l:pathSpec, a:pattern, !g:NERDTreeRespectWildIgnore, 1, 1)
elseif v:version ==# 704 && has('patch279')
let l:globList = globpath(l:pathSpec, a:pattern, !g:NERDTreeRespectWildIgnore, 1)
elseif v:version > 702 || (v:version ==# 702 && has('patch051'))
Expand Down
1 change: 1 addition & 0 deletions plugin/NERD_tree.vim
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ let g:NERDTreeSortOrder = get(g:, 'NERDTreeSortOrder', ['\/$', '*', '\.swp$',
let g:NERDTreeOldSortOrder = []

let g:NERDTreeGlyphReadOnly = get(g:, 'NERDTreeGlyphReadOnly', 'RO')
let g:NERDTreeGlyphBroken = get(g:, 'NERDTreeGlyphBroken', ' [*broken]')

if has('conceal')
let g:NERDTreeNodeDelimiter = get(g:, 'NERDTreeNodeDelimiter', "\x07")
Expand Down

0 comments on commit 9eeacfd

Please sign in to comment.