mirror of
				https://github.com/amix/vimrc
				synced 2025-10-31 06:33:35 +08:00 
			
		
		
		
	Updated plugins
This commit is contained in:
		| @ -23,22 +23,15 @@ function! nerdtree#ui_glue#createDefaultBindings() | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenSplit, 'scope': "Node", 'callback': s."openHSplit" }) | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenVSplit, 'scope': "Node", 'callback': s."openVSplit" }) | ||||
|  | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenSplit, 'scope': "Bookmark", 'callback': s."openHSplit" }) | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenVSplit, 'scope': "Bookmark", 'callback': s."openVSplit" }) | ||||
|  | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreview, 'scope': "Node", 'callback': s."previewNodeCurrent" }) | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewVSplit, 'scope': "Node", 'callback': s."previewNodeVSplit" }) | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewSplit, 'scope': "Node", 'callback': s."previewNodeHSplit" }) | ||||
|  | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreview, 'scope': "Bookmark", 'callback': s."previewNodeCurrent" }) | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewVSplit, 'scope': "Bookmark", 'callback': s."previewNodeVSplit" }) | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewSplit, 'scope': "Bookmark", 'callback': s."previewNodeHSplit" }) | ||||
|  | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenRecursively, 'scope': "DirNode", 'callback': s."openNodeRecursively" }) | ||||
|  | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapUpdir, 'scope': "all", 'callback': s."upDirCurrentRootClosed" }) | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapUpdirKeepOpen, 'scope': "all", 'callback': s."upDirCurrentRootOpen" }) | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapChangeRoot, 'scope': "Node", 'callback': s."chRoot" }) | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapUpdir, 'scope': 'all', 'callback': s . 'upDirCurrentRootClosed' }) | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapUpdirKeepOpen, 'scope': 'all', 'callback': s . 'upDirCurrentRootOpen' }) | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapChangeRoot, 'scope': 'Node', 'callback': s . 'chRoot' }) | ||||
|  | ||||
|     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapChdir, 'scope': "Node", 'callback': s."chCwd" }) | ||||
|  | ||||
| @ -626,40 +619,33 @@ function! s:toggleZoom() | ||||
|     call b:NERDTree.ui.toggleZoom() | ||||
| endfunction | ||||
|  | ||||
| "FUNCTION: nerdtree#ui_glue#upDir(keepState) {{{1 | ||||
| "moves the tree up a level | ||||
| " FUNCTION: nerdtree#ui_glue#upDir(preserveState) {{{1 | ||||
| " Move the NERDTree up one level. | ||||
| " | ||||
| "Args: | ||||
| "keepState: 1 if the current root should be left open when the tree is | ||||
| "re-rendered | ||||
| function! nerdtree#ui_glue#upDir(keepState) | ||||
|     let cwd = b:NERDTree.root.path.str({'format': 'UI'}) | ||||
|     if cwd ==# "/" || cwd =~# '^[^/]..$' | ||||
|         call nerdtree#echo("already at top dir") | ||||
|     else | ||||
|         if !a:keepState | ||||
|             call b:NERDTree.root.close() | ||||
|         endif | ||||
| " Args: | ||||
| " preserveState: if 1, the current root is left open when the new tree is | ||||
| " rendered; if 0, the current root node is closed | ||||
| function! nerdtree#ui_glue#upDir(preserveState) | ||||
|  | ||||
|         let oldRoot = b:NERDTree.root | ||||
|     try | ||||
|         call b:NERDTree.root.cacheParent() | ||||
|     catch /^NERDTree.CannotCacheParentError/ | ||||
|         call nerdtree#echo('already at root directory') | ||||
|         return | ||||
|     endtry | ||||
|  | ||||
|         if empty(b:NERDTree.root.parent) | ||||
|             let path = b:NERDTree.root.path.getParent() | ||||
|             let newRoot = g:NERDTreeDirNode.New(path, b:NERDTree) | ||||
|             call newRoot.open() | ||||
|             call newRoot.transplantChild(b:NERDTree.root) | ||||
|             let b:NERDTree.root = newRoot | ||||
|         else | ||||
|             let b:NERDTree.root = b:NERDTree.root.parent | ||||
|         endif | ||||
|     let l:oldRoot = b:NERDTree.root | ||||
|     let l:newRoot = b:NERDTree.root.parent | ||||
|  | ||||
|         if g:NERDTreeChDirMode ==# 2 | ||||
|             call b:NERDTree.root.path.changeToDir() | ||||
|         endif | ||||
|     call l:newRoot.open() | ||||
|     call l:newRoot.transplantChild(l:oldRoot) | ||||
|  | ||||
|         call b:NERDTree.render() | ||||
|         call oldRoot.putCursorHere(0, 0) | ||||
|     if !a:preserveState | ||||
|         call l:oldRoot.close() | ||||
|     endif | ||||
|  | ||||
|     call b:NERDTree.changeRoot(l:newRoot) | ||||
|     call l:oldRoot.putCursorHere(0, 0) | ||||
| endfunction | ||||
|  | ||||
| " FUNCTION: s:upDirCurrentRootOpen() {{{1 | ||||
|  | ||||
| @ -280,14 +280,17 @@ endfunction | ||||
| " FUNCTION: Bookmark.str() {{{1 | ||||
| " Get the string that should be rendered in the view for this bookmark | ||||
| function! s:Bookmark.str() | ||||
|     let pathStrMaxLen = winwidth(g:NERDTree.GetWinNum()) - 4 - len(self.name) | ||||
|     let pathStrMaxLen = winwidth(g:NERDTree.GetWinNum()) - 4 - strdisplaywidth(self.name) | ||||
|     if &nu | ||||
|         let pathStrMaxLen = pathStrMaxLen - &numberwidth | ||||
|     endif | ||||
|  | ||||
|     let pathStr = self.path.str({'format': 'UI'}) | ||||
|     if len(pathStr) > pathStrMaxLen | ||||
|         let pathStr = '<' . strpart(pathStr, len(pathStr) - pathStrMaxLen) | ||||
|     if strdisplaywidth(pathStr) > pathStrMaxLen | ||||
|         while strdisplaywidth(pathStr) > pathStrMaxLen && strchars(pathStr) > 0 | ||||
|             let pathStr = substitute(pathStr, '^.', '', '') | ||||
|         endwhile | ||||
|         let pathStr = '<' . pathStr | ||||
|     endif | ||||
|     return '>' . self.name . ' ' . pathStr | ||||
| endfunction | ||||
|  | ||||
| @ -178,24 +178,28 @@ function! s:Creator.createMirror() | ||||
| endfunction | ||||
|  | ||||
| " FUNCTION: s:Creator._createTreeWin() {{{1 | ||||
| " Inits the NERD tree window. ie. opens it, sizes it, sets all the local | ||||
| " options etc | ||||
| " Initialize the NERDTree window.  Open the window, size it properly, set all | ||||
| " local options, etc. | ||||
| function! s:Creator._createTreeWin() | ||||
|     "create the nerd tree window | ||||
|     let splitLocation = g:NERDTreeWinPos ==# "left" ? "topleft " : "botright " | ||||
|     let splitSize = g:NERDTreeWinSize | ||||
|     let l:splitLocation = g:NERDTreeWinPos ==# 'left' ? 'topleft ' : 'botright ' | ||||
|     let l:splitSize = g:NERDTreeWinSize | ||||
|  | ||||
|     if !g:NERDTree.ExistsForTab() | ||||
|         let t:NERDTreeBufName = self._nextBufferName() | ||||
|         silent! exec splitLocation . 'vertical ' . splitSize . ' new' | ||||
|         silent! exec "edit " . t:NERDTreeBufName | ||||
|         silent! execute l:splitLocation . 'vertical ' . l:splitSize . ' new' | ||||
|         silent! execute 'edit ' . t:NERDTreeBufName | ||||
|     else | ||||
|         silent! exec splitLocation . 'vertical ' . splitSize . ' split' | ||||
|         silent! exec "buffer " . t:NERDTreeBufName | ||||
|         silent! execute l:splitLocation . 'vertical ' . l:splitSize . ' split' | ||||
|         silent! execute 'buffer ' . t:NERDTreeBufName | ||||
|     endif | ||||
|  | ||||
|     call self._setCommonBufOptions() | ||||
|  | ||||
|     if has('patch-7.4.1925') | ||||
|         clearjumps | ||||
|     endif | ||||
|  | ||||
|     setlocal winfixwidth | ||||
|     call self._setCommonBufOptions() | ||||
| endfunction | ||||
|  | ||||
| " FUNCTION: s:Creator._isBufHidden(nr) {{{1 | ||||
|  | ||||
| @ -2,28 +2,38 @@ | ||||
| "============================================================ | ||||
| let s:KeyMap = {} | ||||
| let g:NERDTreeKeyMap = s:KeyMap | ||||
| let s:keyMaps = {} | ||||
|  | ||||
| "FUNCTION: KeyMap.All() {{{1 | ||||
| function! s:KeyMap.All() | ||||
|     if !exists("s:keyMaps") | ||||
|         let s:keyMaps = [] | ||||
|     let sortedKeyMaps = values(s:keyMaps) | ||||
|     call sort(sortedKeyMaps, s:KeyMap.Compare, s:KeyMap) | ||||
|  | ||||
|     return sortedKeyMaps | ||||
| endfunction | ||||
|  | ||||
| "FUNCTION: KeyMap.Compare(keyMap1, keyMap2) {{{1 | ||||
| function! s:KeyMap.Compare(keyMap1, keyMap2) | ||||
|  | ||||
|     if a:keyMap1.key >? a:keyMap2.key | ||||
|         return 1 | ||||
|     endif | ||||
|     return s:keyMaps | ||||
|  | ||||
|     if a:keyMap1.key <? a:keyMap2.key | ||||
|         return -1 | ||||
|     endif | ||||
|  | ||||
|     return 0 | ||||
| endfunction | ||||
|  | ||||
| "FUNCTION: KeyMap.FindFor(key, scope) {{{1 | ||||
| function! s:KeyMap.FindFor(key, scope) | ||||
|     for i in s:KeyMap.All() | ||||
|          if i.key ==# a:key && i.scope ==# a:scope | ||||
|             return i | ||||
|         endif | ||||
|     endfor | ||||
|     return {} | ||||
|     return get(s:keyMaps, a:key . a:scope, {}) | ||||
| endfunction | ||||
|  | ||||
| "FUNCTION: KeyMap.BindAll() {{{1 | ||||
| function! s:KeyMap.BindAll() | ||||
|     for i in s:KeyMap.All() | ||||
|     for i in values(s:keyMaps) | ||||
|         call i.bind() | ||||
|     endfor | ||||
| endfunction | ||||
| @ -49,12 +59,7 @@ endfunction | ||||
|  | ||||
| "FUNCTION: KeyMap.Remove(key, scope) {{{1 | ||||
| function! s:KeyMap.Remove(key, scope) | ||||
|     let maps = s:KeyMap.All() | ||||
|     for i in range(len(maps)) | ||||
|          if maps[i].key ==# a:key && maps[i].scope ==# a:scope | ||||
|             return remove(maps, i) | ||||
|         endif | ||||
|     endfor | ||||
|     return remove(s:keyMaps, a:key . a:scope) | ||||
| endfunction | ||||
|  | ||||
| "FUNCTION: KeyMap.invoke() {{{1 | ||||
| @ -152,8 +157,7 @@ endfunction | ||||
|  | ||||
| "FUNCTION: KeyMap.Add(keymap) {{{1 | ||||
| function! s:KeyMap.Add(keymap) | ||||
|     call s:KeyMap.Remove(a:keymap.key, a:keymap.scope) | ||||
|     call add(s:KeyMap.All(), a:keymap) | ||||
|     let s:keyMaps[a:keymap.key . a:keymap.scope] = a:keymap | ||||
| endfunction | ||||
|  | ||||
| " vim: set sw=4 sts=4 et fdm=marker: | ||||
|  | ||||
| @ -15,29 +15,35 @@ function! s:MenuController.New(menuItems) | ||||
|     return newMenuController | ||||
| endfunction | ||||
|  | ||||
| "FUNCTION: MenuController.showMenu() {{{1 | ||||
| "start the main loop of the menu and get the user to choose/execute a menu | ||||
| "item | ||||
| " FUNCTION: MenuController.showMenu() {{{1 | ||||
| " Enter the main loop of the NERDTree menu, prompting the user to select | ||||
| " a menu item. | ||||
| function! s:MenuController.showMenu() | ||||
|     call self._saveOptions() | ||||
|  | ||||
|     try | ||||
|         let self.selection = 0 | ||||
|         let l:done = 0 | ||||
|  | ||||
|         let done = 0 | ||||
|         while !done | ||||
|         while !l:done | ||||
|             redraw! | ||||
|             call self._echoPrompt() | ||||
|             let key = nr2char(getchar()) | ||||
|             let done = self._handleKeypress(key) | ||||
|  | ||||
|             let l:key = nr2char(getchar()) | ||||
|             let l:done = self._handleKeypress(l:key) | ||||
|         endwhile | ||||
|     finally | ||||
|         call self._restoreOptions() | ||||
|  | ||||
|         " Redraw when "Ctrl-C" or "Esc" is received. | ||||
|         if !l:done || self.selection == -1 | ||||
|             redraw! | ||||
|         endif | ||||
|     endtry | ||||
|  | ||||
|     if self.selection != -1 | ||||
|         let m = self._current() | ||||
|         call m.execute() | ||||
|         let l:m = self._current() | ||||
|         call l:m.execute() | ||||
|     endif | ||||
| endfunction | ||||
|  | ||||
|  | ||||
| @ -663,6 +663,8 @@ function! s:Path.rename(newPath) | ||||
|         throw "NERDTree.InvalidArgumentsError: Invalid newPath for renaming = ". a:newPath | ||||
|     endif | ||||
|  | ||||
|     call s:Path.createParentDirectories(a:newPath) | ||||
|  | ||||
|     let success =  rename(self.str(), a:newPath) | ||||
|     if success != 0 | ||||
|         throw "NERDTree.PathRenameError: Could not rename: '" . self.str() . "'" . 'to:' . a:newPath | ||||
| @ -719,8 +721,10 @@ function! s:Path.str(...) | ||||
|  | ||||
|     if has_key(options, 'truncateTo') | ||||
|         let limit = options['truncateTo'] | ||||
|         if len(toReturn) > limit-1 | ||||
|             let toReturn = toReturn[(len(toReturn)-limit+1):] | ||||
|         if strdisplaywidth(toReturn) > limit-1 | ||||
|             while strdisplaywidth(toReturn) > limit-1 && strchars(toReturn) > 0 | ||||
|                 let toReturn = substitute(toReturn, '^.', '', '') | ||||
|             endwhile | ||||
|             if len(split(toReturn, '/')) > 1 | ||||
|                 let toReturn = '</' . join(split(toReturn, '/')[1:], '/') . '/' | ||||
|             else | ||||
|  | ||||
| @ -390,7 +390,7 @@ endfunction | ||||
|  | ||||
| " FUNCTION: s:UI.render() {{{1 | ||||
| function! s:UI.render() | ||||
|     setlocal modifiable | ||||
|     setlocal noreadonly modifiable | ||||
|  | ||||
|     " remember the top line of the buffer and the current line so we can | ||||
|     " restore the view exactly how it was | ||||
| @ -438,7 +438,7 @@ function! s:UI.render() | ||||
|     call cursor(curLine, curCol) | ||||
|     let &scrolloff = old_scrolloff | ||||
|  | ||||
|     setlocal nomodifiable | ||||
|     setlocal readonly nomodifiable | ||||
| endfunction | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -29,6 +29,11 @@ if has("gui_mac") || has("gui_macvim") || has("mac") | ||||
|     call NERDTreeAddMenuItem({'text': '(q)uicklook the current node', 'shortcut': 'q', 'callback': 'NERDTreeQuickLook'}) | ||||
| endif | ||||
|  | ||||
| if executable("xdg-open") | ||||
|     call NERDTreeAddMenuItem({'text': '(r)eveal the current node in file manager', 'shortcut': 'r', 'callback': 'NERDTreeRevealFileLinux'}) | ||||
|     call NERDTreeAddMenuItem({'text': '(o)pen the current node with system editor', 'shortcut': 'o', 'callback': 'NERDTreeExecuteFileLinux'}) | ||||
| endif | ||||
|  | ||||
| if g:NERDTreePath.CopyingSupported() | ||||
|     call NERDTreeAddMenuItem({'text': '(c)opy the current node', 'shortcut': 'c', 'callback': 'NERDTreeCopyNode'}) | ||||
| endif | ||||
| @ -153,6 +158,7 @@ function! NERDTreeMoveNode() | ||||
|         let bufnum = bufnr("^".curNode.path.str()."$") | ||||
|  | ||||
|         call curNode.rename(newNodePath) | ||||
|         call b:NERDTree.root.refresh() | ||||
|         call NERDTreeRender() | ||||
|  | ||||
|         "if the node is open in a buffer, ask the user if they want to | ||||
| @ -175,7 +181,8 @@ function! NERDTreeDeleteNode() | ||||
|     let currentNode = g:NERDTreeFileNode.GetSelected() | ||||
|     let confirmed = 0 | ||||
|  | ||||
|     if currentNode.path.isDirectory && currentNode.getChildCount() > 0 | ||||
|     if currentNode.path.isDirectory && ((currentNode.isOpen && currentNode.getChildCount() > 0) || | ||||
|                                       \ (len(currentNode._glob('*', 1)) > 0)) | ||||
|         let choice =input("Delete the current node\n" . | ||||
|                          \ "==========================================================\n" . | ||||
|                          \ "STOP! Directory is not empty! To delete, type 'yes'\n" . | ||||
| @ -336,4 +343,22 @@ function! NERDTreeExecuteFile() | ||||
|     endif | ||||
| endfunction | ||||
|  | ||||
| " FUNCTION: NERDTreeRevealFileLinux() {{{1 | ||||
| function! NERDTreeRevealFileLinux() | ||||
|     let treenode = g:NERDTreeFileNode.GetSelected() | ||||
|     let parentnode = treenode.parent | ||||
|     if parentnode != {} | ||||
|         call system("xdg-open '" . parentnode.path.str() . "' &") | ||||
|     endif | ||||
| endfunction | ||||
|  | ||||
| " FUNCTION: NERDTreeExecuteFileLinux() {{{1 | ||||
| function! NERDTreeExecuteFileLinux() | ||||
|     let treenode = g:NERDTreeFileNode.GetSelected() | ||||
|     if treenode != {} | ||||
|         call system("xdg-open '" . treenode.path.str() . "' &") | ||||
|     endif | ||||
| endfunction | ||||
|  | ||||
| " vim: set sw=4 sts=4 et fdm=marker: | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Amir Salihefendic
					Amir Salihefendic