Updated plugins
This commit is contained in:
@@ -38,6 +38,29 @@ function! s:Creator.BufNamePrefix()
|
||||
return 'NERD_tree_'
|
||||
endfunction
|
||||
|
||||
" FUNCTION: s:Creator.CreateExploreTree(dir) {{{1
|
||||
function! s:Creator.CreateExploreTree(dir)
|
||||
try
|
||||
let path = g:NERDTreePath.New(a:dir)
|
||||
catch /^NERDTree.InvalidArgumentsError/
|
||||
call nerdtree#echo('Invalid directory name:' . a:dir)
|
||||
return
|
||||
endtry
|
||||
|
||||
let creator = s:Creator.New()
|
||||
if getbufinfo('%')[0].changed && !&hidden && !&autowriteall
|
||||
let l:splitLocation = g:NERDTreeWinPos ==# 'left' || g:NERDTreeWinPos ==# 'top' ? 'topleft ' : 'botright '
|
||||
let l:splitDirection = g:NERDTreeWinPos ==# 'left' || g:NERDTreeWinPos ==# 'right' ? 'vertical' : ''
|
||||
silent! execute l:splitLocation . l:splitDirection . ' new'
|
||||
else
|
||||
silent! execute 'enew'
|
||||
endif
|
||||
|
||||
call creator.createWindowTree(a:dir)
|
||||
"we want windowTree buffer to disappear after moving to any other buffer
|
||||
setlocal bufhidden=wipe
|
||||
endfunction
|
||||
|
||||
" FUNCTION: s:Creator.CreateTabTree(a:name) {{{1
|
||||
function! s:Creator.CreateTabTree(name)
|
||||
let creator = s:Creator.New()
|
||||
@@ -182,16 +205,17 @@ endfunction
|
||||
" Initialize the NERDTree window. Open the window, size it properly, set all
|
||||
" local options, etc.
|
||||
function! s:Creator._createTreeWin()
|
||||
let l:splitLocation = g:NERDTreeWinPos ==# 'left' ? 'topleft ' : 'botright '
|
||||
let l:splitLocation = g:NERDTreeWinPos ==# 'left' || g:NERDTreeWinPos ==# 'top' ? 'topleft ' : 'botright '
|
||||
let l:splitDirection = g:NERDTreeWinPos ==# 'left' || g:NERDTreeWinPos ==# 'right' ? 'vertical' : ''
|
||||
let l:splitSize = g:NERDTreeWinSize
|
||||
|
||||
if !g:NERDTree.ExistsForTab()
|
||||
let t:NERDTreeBufName = self._nextBufferName()
|
||||
silent! execute l:splitLocation . 'vertical ' . l:splitSize . ' new'
|
||||
silent! execute l:splitLocation . l:splitDirection . ' ' . l:splitSize . ' new'
|
||||
silent! execute 'edit ' . t:NERDTreeBufName
|
||||
silent! execute 'vertical resize '. l:splitSize
|
||||
silent! execute l:splitDirection . ' resize '. l:splitSize
|
||||
else
|
||||
silent! execute l:splitLocation . 'vertical ' . l:splitSize . ' split'
|
||||
silent! execute l:splitLocation . l:splitDirection . ' ' . l:splitSize . ' split'
|
||||
silent! execute 'buffer ' . t:NERDTreeBufName
|
||||
endif
|
||||
|
||||
|
||||
@@ -65,6 +65,25 @@ function! s:Path.cacheDisplayString() abort
|
||||
let self.cachedDisplayString = self.addDelimiter(self.cachedDisplayString) . ' -> ' . self.symLinkDest
|
||||
endif
|
||||
|
||||
if !self.isDirectory && b:NERDTree.ui.getShowFileLines() != 0
|
||||
let l:bufname = self.str({'format': 'Edit'})
|
||||
let l:lines = 0
|
||||
if executable('wc')
|
||||
let l:lines = split(system('wc -l "'.l:bufname.'"'))[0]
|
||||
elseif nerdtree#runningWindows()
|
||||
let l:lines = substitute(system('type "'.l:bufname.'" | find /c /v ""'), '\n', '', 'g')
|
||||
else
|
||||
let s:lines = readfile(l:bufname)
|
||||
let l:lines = 0
|
||||
for s:line in s:lines
|
||||
let l:lines += 1
|
||||
if l:lines >= 20000
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
let self.cachedDisplayString = self.addDelimiter(self.cachedDisplayString) . ' ('.l:lines.')'
|
||||
endif
|
||||
if self.isReadOnly
|
||||
let self.cachedDisplayString = self.addDelimiter(self.cachedDisplayString) . ' ['.g:NERDTreeGlyphReadOnly.']'
|
||||
endif
|
||||
@@ -530,7 +549,7 @@ function! s:Path.isUnder(parent)
|
||||
return 0
|
||||
endif
|
||||
for i in range(0, l:that_count-1)
|
||||
if self.pathSegments[i] !=# a:parent.pathSegments[i]
|
||||
if !nerdtree#pathEquals(self.pathSegments[i], a:parent.pathSegments[i])
|
||||
return 0
|
||||
endif
|
||||
endfor
|
||||
@@ -554,11 +573,7 @@ endfunction
|
||||
" Args:
|
||||
" path: the other path obj to compare this with
|
||||
function! s:Path.equals(path)
|
||||
if nerdtree#runningWindows()
|
||||
return self.str() ==? a:path.str()
|
||||
else
|
||||
return self.str() ==# a:path.str()
|
||||
endif
|
||||
return nerdtree#pathEquals(self.str(), a:path.str())
|
||||
endfunction
|
||||
|
||||
" FUNCTION: Path.New(pathStr) {{{1
|
||||
|
||||
@@ -121,8 +121,14 @@ function! s:TreeDirNode.findNode(path)
|
||||
if a:path.equals(self.path)
|
||||
return self
|
||||
endif
|
||||
if stridx(a:path.str(), self.path.str(), 0) ==# -1
|
||||
return {}
|
||||
if nerdtree#caseSensitiveFS()
|
||||
if stridx(a:path.str(), self.path.str(), 0) ==# -1
|
||||
return {}
|
||||
endif
|
||||
else
|
||||
if stridx(tolower(a:path.str()), tolower(self.path.str()), 0) ==# -1
|
||||
return {}
|
||||
endif
|
||||
endif
|
||||
|
||||
if self.path.isDirectory
|
||||
@@ -278,6 +284,10 @@ function! s:TreeDirNode._glob(pattern, all)
|
||||
else
|
||||
let l:pathSpec = escape(fnamemodify(self.path.str({'format': 'Glob'}), ':.'), ',')
|
||||
|
||||
if nerdtree#runningWindows()
|
||||
let l:pathSpec = substitute(l:pathSpec, "\\[\\(.*\\]\\)", "[[]\\1", "g")
|
||||
endif
|
||||
|
||||
" On Windows, the drive letter may be removed by "fnamemodify()".
|
||||
if nerdtree#runningWindows() && l:pathSpec[0] == nerdtree#slash()
|
||||
let l:pathSpec = self.path.drive . l:pathSpec
|
||||
@@ -421,6 +431,7 @@ function! s:TreeDirNode._initChildren(silent)
|
||||
endif
|
||||
|
||||
let invalidFilesFound = 0
|
||||
let invalidFiles = []
|
||||
for i in files
|
||||
try
|
||||
let path = g:NERDTreePath.New(i)
|
||||
@@ -428,6 +439,7 @@ function! s:TreeDirNode._initChildren(silent)
|
||||
call g:NERDTreePathNotifier.NotifyListeners('init', path, self.getNerdtree(), {})
|
||||
catch /^NERDTree.\(InvalidArguments\|InvalidFiletype\)Error/
|
||||
let invalidFilesFound += 1
|
||||
let invalidFiles += [i]
|
||||
endtry
|
||||
endfor
|
||||
|
||||
@@ -437,7 +449,7 @@ function! s:TreeDirNode._initChildren(silent)
|
||||
call nerdtree#echo('')
|
||||
|
||||
if invalidFilesFound
|
||||
call nerdtree#echoWarning(invalidFilesFound . ' file(s) could not be loaded into the NERD tree')
|
||||
call nerdtree#echoWarning(invalidFilesFound . ' Invalid file(s): ' . join(invalidFiles, ', '))
|
||||
endif
|
||||
return self.getChildCount()
|
||||
endfunction
|
||||
@@ -564,12 +576,13 @@ function! s:TreeDirNode.refresh()
|
||||
let files = self._glob('*', 1) + self._glob('.*', 0)
|
||||
let newChildNodes = []
|
||||
let invalidFilesFound = 0
|
||||
let invalidFiles = []
|
||||
for i in files
|
||||
try
|
||||
"create a new path and see if it exists in this nodes children
|
||||
let path = g:NERDTreePath.New(i)
|
||||
let newNode = self.getChild(path)
|
||||
if newNode !=# {}
|
||||
if newNode !=# {} && path.str() ==# newNode.path.str()
|
||||
call newNode.refresh()
|
||||
call add(newChildNodes, newNode)
|
||||
|
||||
@@ -580,7 +593,8 @@ function! s:TreeDirNode.refresh()
|
||||
call add(newChildNodes, newNode)
|
||||
endif
|
||||
catch /^NERDTree.\(InvalidArguments\|InvalidFiletype\)Error/
|
||||
let invalidFilesFound = 1
|
||||
let invalidFilesFound += 1
|
||||
let invalidFiles += [i]
|
||||
endtry
|
||||
endfor
|
||||
|
||||
@@ -589,7 +603,7 @@ function! s:TreeDirNode.refresh()
|
||||
call self.sortChildren()
|
||||
|
||||
if invalidFilesFound
|
||||
call nerdtree#echoWarning('some files could not be loaded into the NERD tree')
|
||||
call nerdtree#echoWarning(invalidFilesFound . ' Invalid file(s): ' . join(invalidFiles, ', '))
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
@@ -103,6 +103,7 @@ function! s:UI._dumpHelp()
|
||||
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"
|
||||
let help .= '" '. g:NERDTreeMapToggleFileLines .': files lines (' . (self.getShowFileLines() ? 'on' : 'off') . ")\n"
|
||||
|
||||
" add quickhelp entries for each custom key map
|
||||
let help .= "\"\n\" ----------------------------\n"
|
||||
@@ -147,6 +148,7 @@ function! s:UI.New(nerdtree)
|
||||
let newObj._showFiles = g:NERDTreeShowFiles
|
||||
let newObj._showHidden = g:NERDTreeShowHidden
|
||||
let newObj._showBookmarks = g:NERDTreeShowBookmarks
|
||||
let newObj._showFileLines = g:NERDTreeFileLines
|
||||
|
||||
return newObj
|
||||
endfunction
|
||||
@@ -284,6 +286,11 @@ function! s:UI.getShowHidden()
|
||||
return self._showHidden
|
||||
endfunction
|
||||
|
||||
" FUNCTION: s:UI.getShowFileLines() {{{1
|
||||
function! s:UI.getShowFileLines()
|
||||
return self._showFileLines
|
||||
endfunction
|
||||
|
||||
" FUNCTION: s:UI._indentLevelFor(line) {{{1
|
||||
function! s:UI._indentLevelFor(line)
|
||||
" Replace multi-character DirArrows with a single space so the
|
||||
@@ -512,10 +519,22 @@ function! s:UI.toggleShowHidden()
|
||||
call self.centerView()
|
||||
endfunction
|
||||
|
||||
" FUNCTION: s:UI.toggleShowFileLines() {{{1
|
||||
" toggles the display of file lines
|
||||
function! s:UI.toggleShowFileLines()
|
||||
let self._showFileLines = !self._showFileLines
|
||||
call self.nerdtree.root.refresh()
|
||||
call self.renderViewSavingPosition()
|
||||
call self.centerView()
|
||||
endfunction
|
||||
|
||||
" FUNCTION: s:UI.toggleZoom() {{{1
|
||||
" zoom (maximize/minimize) the NERDTree window
|
||||
function! s:UI.toggleZoom()
|
||||
if exists('b:NERDTreeZoomed') && b:NERDTreeZoomed
|
||||
setlocal nowinfixwidth
|
||||
wincmd =
|
||||
setlocal winfixwidth
|
||||
call nerdtree#exec('silent vertical resize '. g:NERDTreeWinSize, 1)
|
||||
let b:NERDTreeZoomed = 0
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user