mirror of
https://github.com/VectorKappa/dotfiles.git
synced 2025-12-20 00:36:09 +01:00
1.0.0 - Remade structure for GNU Stow
This commit is contained in:
27
vim/.vim_runtime/sources_non_forked/nerdtree/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
27
vim/.vim_runtime/sources_non_forked/nerdtree/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
File diff suppressed because one or more lines are too long
3
vim/.vim_runtime/sources_non_forked/nerdtree/.gitignore
vendored
Normal file
3
vim/.vim_runtime/sources_non_forked/nerdtree/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
*~
|
||||
*.swp
|
||||
tags
|
||||
@@ -0,0 +1,5 @@
|
||||
cmdargs:
|
||||
severity: style_problem
|
||||
color: true
|
||||
env:
|
||||
neovim: false
|
||||
389
vim/.vim_runtime/sources_non_forked/nerdtree/CHANGELOG.md
Normal file
389
vim/.vim_runtime/sources_non_forked/nerdtree/CHANGELOG.md
Normal file
File diff suppressed because one or more lines are too long
13
vim/.vim_runtime/sources_non_forked/nerdtree/LICENCE
Normal file
13
vim/.vim_runtime/sources_non_forked/nerdtree/LICENCE
Normal file
@@ -0,0 +1,13 @@
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified
|
||||
copies of this license document, and changing it is allowed as long
|
||||
as the name is changed.
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
150
vim/.vim_runtime/sources_non_forked/nerdtree/README.markdown
Normal file
150
vim/.vim_runtime/sources_non_forked/nerdtree/README.markdown
Normal file
File diff suppressed because one or more lines are too long
1
vim/.vim_runtime/sources_non_forked/nerdtree/_config.yml
Normal file
1
vim/.vim_runtime/sources_non_forked/nerdtree/_config.yml
Normal file
@@ -0,0 +1 @@
|
||||
theme: jekyll-theme-cayman
|
||||
@@ -0,0 +1,259 @@
|
||||
if exists('g:loaded_nerdtree_autoload')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_nerdtree_autoload = 1
|
||||
|
||||
let s:rootNERDTreePath = resolve(expand('<sfile>:p:h:h'))
|
||||
|
||||
"FUNCTION: nerdtree#version(...) {{{1
|
||||
" If any value is given as an argument, the entire line of text from the
|
||||
" change log is shown for the current version; otherwise, only the version
|
||||
" number is shown.
|
||||
function! nerdtree#version(...) abort
|
||||
let l:text = 'Unknown'
|
||||
try
|
||||
let l:changelog = readfile(join([s:rootNERDTreePath, 'CHANGELOG.md'], nerdtree#slash()))
|
||||
let l:line = 0
|
||||
while l:line <= len(l:changelog)
|
||||
if l:changelog[l:line] =~# '\d\+\.\d\+'
|
||||
let l:text = substitute(l:changelog[l:line], '.*\(\d\+.\d\+\).*', '\1', '')
|
||||
let l:text .= substitute(l:changelog[l:line+1], '^.\{-}\(\.\d\+\).\{-}:\(.*\)', a:0>0 ? '\1:\2' : '\1', '')
|
||||
break
|
||||
endif
|
||||
let l:line += 1
|
||||
endwhile
|
||||
catch
|
||||
endtry
|
||||
return l:text
|
||||
endfunction
|
||||
|
||||
" SECTION: General Functions {{{1
|
||||
"============================================================
|
||||
|
||||
"FUNCTION: nerdtree#slash() {{{2
|
||||
function! nerdtree#slash() abort
|
||||
|
||||
if nerdtree#runningWindows()
|
||||
if exists('+shellslash') && &shellslash
|
||||
return '/'
|
||||
endif
|
||||
|
||||
return '\'
|
||||
endif
|
||||
|
||||
return '/'
|
||||
endfunction
|
||||
|
||||
"FUNCTION: nerdtree#and(x,y) {{{2
|
||||
" Implements and() function for Vim <= 7.4
|
||||
function! nerdtree#and(x,y) abort
|
||||
if exists('*and')
|
||||
return and(a:x, a:y)
|
||||
else
|
||||
let l:x = a:x
|
||||
let l:y = a:y
|
||||
let l:n = 0
|
||||
let l:result = 0
|
||||
while l:x > 0 && l:y > 0
|
||||
if (l:x % 2) && (l:y % 2)
|
||||
let l:result += float2nr(pow(2, l:n))
|
||||
endif
|
||||
let l:x = float2nr(l:x / 2)
|
||||
let l:y = float2nr(l:y / 2)
|
||||
let l:n += 1
|
||||
endwhile
|
||||
return l:result
|
||||
endif
|
||||
endfunction
|
||||
|
||||
"FUNCTION: nerdtree#checkForBrowse(dir) {{{2
|
||||
"inits a window tree in the current buffer if appropriate
|
||||
function! nerdtree#checkForBrowse(dir) abort
|
||||
if !isdirectory(a:dir)
|
||||
return
|
||||
endif
|
||||
|
||||
if s:reuseWin(a:dir)
|
||||
return
|
||||
endif
|
||||
|
||||
call g:NERDTreeCreator.CreateWindowTree(a:dir)
|
||||
endfunction
|
||||
|
||||
"FUNCTION: s:reuseWin(dir) {{{2
|
||||
"finds a NERDTree buffer with root of dir, and opens it.
|
||||
function! s:reuseWin(dir) abort
|
||||
let path = g:NERDTreePath.New(fnamemodify(a:dir, ':p'))
|
||||
|
||||
for i in range(1, bufnr('$'))
|
||||
unlet! nt
|
||||
let nt = getbufvar(i, 'NERDTree')
|
||||
if empty(nt)
|
||||
continue
|
||||
endif
|
||||
|
||||
if nt.isWinTree() && nt.root.path.equals(path)
|
||||
call nt.setPreviousBuf(bufnr('#'))
|
||||
exec 'buffer ' . i
|
||||
return 1
|
||||
endif
|
||||
endfor
|
||||
|
||||
return 0
|
||||
endfunction
|
||||
|
||||
" FUNCTION: nerdtree#completeBookmarks(A,L,P) {{{2
|
||||
" completion function for the bookmark commands
|
||||
function! nerdtree#completeBookmarks(A,L,P) abort
|
||||
return filter(g:NERDTreeBookmark.BookmarkNames(), 'v:val =~# "^' . a:A . '"')
|
||||
endfunction
|
||||
|
||||
"FUNCTION: nerdtree#compareNodes(dir) {{{2
|
||||
function! nerdtree#compareNodes(n1, n2) abort
|
||||
return a:n1.path.compareTo(a:n2.path)
|
||||
endfunction
|
||||
|
||||
"FUNCTION: nerdtree#compareNodesBySortKey(n1, n2) {{{2
|
||||
function! nerdtree#compareNodesBySortKey(n1, n2) abort
|
||||
let sortKey1 = a:n1.path.getSortKey()
|
||||
let sortKey2 = a:n2.path.getSortKey()
|
||||
let i = 0
|
||||
while i < min([len(sortKey1), len(sortKey2)])
|
||||
" Compare chunks upto common length.
|
||||
" If chunks have different type, the one which has
|
||||
" integer type is the lesser.
|
||||
if type(sortKey1[i]) ==# type(sortKey2[i])
|
||||
if sortKey1[i] <# sortKey2[i]
|
||||
return - 1
|
||||
elseif sortKey1[i] ># sortKey2[i]
|
||||
return 1
|
||||
endif
|
||||
elseif type(sortKey1[i]) ==# v:t_number
|
||||
return -1
|
||||
elseif type(sortKey2[i]) ==# v:t_number
|
||||
return 1
|
||||
endif
|
||||
let i = i + 1
|
||||
endwhile
|
||||
|
||||
" Keys are identical upto common length.
|
||||
" The key which has smaller chunks is the lesser one.
|
||||
if len(sortKey1) < len(sortKey2)
|
||||
return -1
|
||||
elseif len(sortKey1) > len(sortKey2)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" FUNCTION: nerdtree#deprecated(func, [msg]) {{{2
|
||||
" Issue a deprecation warning for a:func. If a second arg is given, use this
|
||||
" as the deprecation message
|
||||
function! nerdtree#deprecated(func, ...) abort
|
||||
let msg = a:0 ? a:func . ' ' . a:1 : a:func . ' is deprecated'
|
||||
|
||||
if !exists('s:deprecationWarnings')
|
||||
let s:deprecationWarnings = {}
|
||||
endif
|
||||
if !has_key(s:deprecationWarnings, a:func)
|
||||
let s:deprecationWarnings[a:func] = 1
|
||||
echomsg msg
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" FUNCTION: nerdtree#exec(cmd, ignoreAll) {{{2
|
||||
" Same as :exec cmd but, if ignoreAll is TRUE, set eventignore=all for the duration
|
||||
function! nerdtree#exec(cmd, ignoreAll) abort
|
||||
let old_ei = &eventignore
|
||||
if a:ignoreAll
|
||||
set eventignore=all
|
||||
endif
|
||||
try
|
||||
exec a:cmd
|
||||
finally
|
||||
let &eventignore = old_ei
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" FUNCTION: nerdtree#has_opt(options, name) {{{2
|
||||
function! nerdtree#has_opt(options, name) abort
|
||||
return has_key(a:options, a:name) && a:options[a:name] ==# 1
|
||||
endfunction
|
||||
|
||||
" FUNCTION: nerdtree#loadClassFiles() {{{2
|
||||
function! nerdtree#loadClassFiles() abort
|
||||
runtime lib/nerdtree/path.vim
|
||||
runtime lib/nerdtree/menu_controller.vim
|
||||
runtime lib/nerdtree/menu_item.vim
|
||||
runtime lib/nerdtree/key_map.vim
|
||||
runtime lib/nerdtree/bookmark.vim
|
||||
runtime lib/nerdtree/tree_file_node.vim
|
||||
runtime lib/nerdtree/tree_dir_node.vim
|
||||
runtime lib/nerdtree/opener.vim
|
||||
runtime lib/nerdtree/creator.vim
|
||||
runtime lib/nerdtree/flag_set.vim
|
||||
runtime lib/nerdtree/nerdtree.vim
|
||||
runtime lib/nerdtree/ui.vim
|
||||
runtime lib/nerdtree/event.vim
|
||||
runtime lib/nerdtree/notifier.vim
|
||||
endfunction
|
||||
|
||||
" FUNCTION: nerdtree#postSourceActions() {{{2
|
||||
function! nerdtree#postSourceActions() abort
|
||||
call g:NERDTreeBookmark.CacheBookmarks(1)
|
||||
call nerdtree#ui_glue#createDefaultBindings()
|
||||
|
||||
"load all nerdtree plugins
|
||||
runtime! nerdtree_plugin/**/*.vim
|
||||
endfunction
|
||||
|
||||
"FUNCTION: nerdtree#runningWindows(dir) {{{2
|
||||
function! nerdtree#runningWindows() abort
|
||||
return has('win16') || has('win32') || has('win64')
|
||||
endfunction
|
||||
|
||||
"FUNCTION: nerdtree#runningCygwin(dir) {{{2
|
||||
function! nerdtree#runningCygwin() abort
|
||||
return has('win32unix')
|
||||
endfunction
|
||||
|
||||
" SECTION: View Functions {{{1
|
||||
"============================================================
|
||||
|
||||
"FUNCTION: nerdtree#echo {{{2
|
||||
"A wrapper for :echo. Appends 'NERDTree:' on the front of all messages
|
||||
"
|
||||
"Args:
|
||||
"msg: the message to echo
|
||||
function! nerdtree#echo(msg) abort
|
||||
redraw
|
||||
echomsg empty(a:msg) ? '' : ('NERDTree: ' . a:msg)
|
||||
endfunction
|
||||
|
||||
"FUNCTION: nerdtree#echoError {{{2
|
||||
"Wrapper for nerdtree#echo, sets the message type to errormsg for this message
|
||||
"Args:
|
||||
"msg: the message to echo
|
||||
function! nerdtree#echoError(msg) abort
|
||||
echohl errormsg
|
||||
call nerdtree#echo(a:msg)
|
||||
echohl normal
|
||||
endfunction
|
||||
|
||||
"FUNCTION: nerdtree#echoWarning {{{2
|
||||
"Wrapper for nerdtree#echo, sets the message type to warningmsg for this message
|
||||
"Args:
|
||||
"msg: the message to echo
|
||||
function! nerdtree#echoWarning(msg) abort
|
||||
echohl warningmsg
|
||||
call nerdtree#echo(a:msg)
|
||||
echohl normal
|
||||
endfunction
|
||||
|
||||
"FUNCTION: nerdtree#renderView {{{2
|
||||
function! nerdtree#renderView() abort
|
||||
call b:NERDTree.render()
|
||||
endfunction
|
||||
|
||||
" vim: set sw=4 sts=4 et fdm=marker:
|
||||
1528
vim/.vim_runtime/sources_non_forked/nerdtree/doc/NERDTree.txt
Normal file
1528
vim/.vim_runtime/sources_non_forked/nerdtree/doc/NERDTree.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,40 @@
|
||||
" ============================================================================
|
||||
" File: exec_menuitem.vim
|
||||
" Description: plugin for NERD Tree that provides an execute file menu item
|
||||
" Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
|
||||
" License: This program is free software. It comes without any warranty,
|
||||
" to the extent permitted by applicable law. You can redistribute
|
||||
" it and/or modify it under the terms of the Do What The Fuck You
|
||||
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
"
|
||||
" ============================================================================
|
||||
if exists('g:loaded_nerdtree_exec_menuitem')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_nerdtree_exec_menuitem = 1
|
||||
|
||||
call NERDTreeAddMenuItem({
|
||||
\ 'text': '(!)Execute file',
|
||||
\ 'shortcut': '!',
|
||||
\ 'callback': 'NERDTreeExecFile',
|
||||
\ 'isActiveCallback': 'NERDTreeExecFileActive' })
|
||||
|
||||
function! NERDTreeExecFileActive()
|
||||
let node = g:NERDTreeFileNode.GetSelected()
|
||||
return !node.path.isDirectory && node.path.isExecutable
|
||||
endfunction
|
||||
|
||||
function! NERDTreeExecFile()
|
||||
let treenode = g:NERDTreeFileNode.GetSelected()
|
||||
echo "==========================================================\n"
|
||||
echo "Complete the command to execute (add arguments etc):\n"
|
||||
let cmd = treenode.path.str({'escape': 1})
|
||||
let cmd = input(':!', cmd . ' ')
|
||||
|
||||
if cmd !=# ''
|
||||
exec ':!' . cmd
|
||||
else
|
||||
echo 'Aborted'
|
||||
endif
|
||||
endfunction
|
||||
@@ -0,0 +1,469 @@
|
||||
" ============================================================================
|
||||
" File: fs_menu.vim
|
||||
" Description: plugin for the NERD Tree that provides a file system menu
|
||||
" Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
|
||||
" License: This program is free software. It comes without any warranty,
|
||||
" to the extent permitted by applicable law. You can redistribute
|
||||
" it and/or modify it under the terms of the Do What The Fuck You
|
||||
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
"
|
||||
" ============================================================================
|
||||
if exists('g:loaded_nerdtree_fs_menu')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_nerdtree_fs_menu = 1
|
||||
|
||||
"Automatically delete the buffer after deleting or renaming a file
|
||||
if !exists('g:NERDTreeAutoDeleteBuffer')
|
||||
let g:NERDTreeAutoDeleteBuffer = 0
|
||||
endif
|
||||
|
||||
call NERDTreeAddMenuItem({'text': '(a)dd a childnode', 'shortcut': 'a', 'callback': 'NERDTreeAddNode'})
|
||||
call NERDTreeAddMenuItem({'text': '(m)ove the current node', 'shortcut': 'm', 'callback': 'NERDTreeMoveNode'})
|
||||
call NERDTreeAddMenuItem({'text': '(d)elete the current node', 'shortcut': 'd', 'callback': 'NERDTreeDeleteNode'})
|
||||
|
||||
if has('gui_mac') || has('gui_macvim') || has('mac')
|
||||
call NERDTreeAddMenuItem({'text': '(r)eveal in Finder the current node', 'shortcut': 'r', 'callback': 'NERDTreeRevealInFinder'})
|
||||
call NERDTreeAddMenuItem({'text': '(o)pen the current node with system editor', 'shortcut': 'o', 'callback': 'NERDTreeExecuteFile'})
|
||||
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 nerdtree#runningWindows()
|
||||
call NERDTreeAddMenuItem({'text': '(o)pen the current node with system editor', 'shortcut': 'o', 'callback': 'NERDTreeExecuteFileWindows'})
|
||||
endif
|
||||
|
||||
if g:NERDTreePath.CopyingSupported()
|
||||
call NERDTreeAddMenuItem({'text': '(c)opy the current node', 'shortcut': 'c', 'callback': 'NERDTreeCopyNode'})
|
||||
endif
|
||||
call NERDTreeAddMenuItem({'text': (has('clipboard')?'copy (p)ath to clipboard':'print (p)ath to screen'), 'shortcut': 'p', 'callback': 'NERDTreeCopyPath'})
|
||||
|
||||
if has('unix') || has('osx')
|
||||
call NERDTreeAddMenuItem({'text': '(l)ist the current node', 'shortcut': 'l', 'callback': 'NERDTreeListNode'})
|
||||
else
|
||||
call NERDTreeAddMenuItem({'text': '(l)ist the current node', 'shortcut': 'l', 'callback': 'NERDTreeListNodeWin32'})
|
||||
endif
|
||||
|
||||
"FUNCTION: s:inputPrompt(action){{{1
|
||||
"returns the string that should be prompted to the user for the given action
|
||||
"
|
||||
"Args:
|
||||
"action: the action that is being performed, e.g. 'delete'
|
||||
function! s:inputPrompt(action)
|
||||
if a:action ==# 'add'
|
||||
let title = 'Add a childnode'
|
||||
let info = "Enter the dir/file name to be created. Dirs end with a '/'"
|
||||
let minimal = 'Add node:'
|
||||
|
||||
elseif a:action ==# 'copy'
|
||||
let title = 'Copy the current node'
|
||||
let info = 'Enter the new path to copy the node to:'
|
||||
let minimal = 'Copy to:'
|
||||
|
||||
elseif a:action ==# 'delete'
|
||||
let title = 'Delete the current node'
|
||||
let info = 'Are you sure you wish to delete the node:'
|
||||
let minimal = 'Delete?'
|
||||
|
||||
elseif a:action ==# 'deleteNonEmpty'
|
||||
let title = 'Delete the current node'
|
||||
let info = "STOP! Directory is not empty! To delete, type 'yes'"
|
||||
let minimal = 'Delete directory?'
|
||||
|
||||
elseif a:action ==# 'move'
|
||||
let title = 'Rename the current node'
|
||||
let info = 'Enter the new path for the node:'
|
||||
let minimal = 'Move to:'
|
||||
endif
|
||||
|
||||
if g:NERDTreeMenuController.isMinimal()
|
||||
redraw! " Clear the menu
|
||||
return minimal . ' '
|
||||
else
|
||||
let divider = '=========================================================='
|
||||
return title . "\n" . divider . "\n" . info . "\n"
|
||||
end
|
||||
endfunction
|
||||
|
||||
"FUNCTION: s:promptToDelBuffer(bufnum, msg){{{1
|
||||
"prints out the given msg and, if the user responds by pushing 'y' then the
|
||||
"buffer with the given bufnum is deleted
|
||||
"
|
||||
"Args:
|
||||
"bufnum: the buffer that may be deleted
|
||||
"msg: a message that will be echoed to the user asking them if they wish to
|
||||
" del the buffer
|
||||
function! s:promptToDelBuffer(bufnum, msg)
|
||||
echo a:msg
|
||||
if g:NERDTreeAutoDeleteBuffer || nr2char(getchar()) ==# 'y'
|
||||
" 1. ensure that all windows which display the just deleted filename
|
||||
" now display an empty buffer (so a layout is preserved).
|
||||
" Is not it better to close single tabs with this file only ?
|
||||
let s:originalTabNumber = tabpagenr()
|
||||
let s:originalWindowNumber = winnr()
|
||||
" Go to the next buffer in buffer list if at least one extra buffer is listed
|
||||
" Otherwise open a new empty buffer
|
||||
if v:version >= 800
|
||||
let l:listedBufferCount = len(getbufinfo({'buflisted':1}))
|
||||
elseif v:version >= 702
|
||||
let l:listedBufferCount = len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
|
||||
else
|
||||
" Ignore buffer count in this case to make sure we keep the old
|
||||
" behavior
|
||||
let l:listedBufferCount = 0
|
||||
endif
|
||||
if l:listedBufferCount > 1
|
||||
call nerdtree#exec('tabdo windo if winbufnr(0) ==# ' . a:bufnum . " | exec ':bnext! ' | endif", 1)
|
||||
else
|
||||
call nerdtree#exec('tabdo windo if winbufnr(0) ==# ' . a:bufnum . " | exec ':enew! ' | endif", 1)
|
||||
endif
|
||||
call nerdtree#exec('tabnext ' . s:originalTabNumber, 1)
|
||||
call nerdtree#exec(s:originalWindowNumber . 'wincmd w', 1)
|
||||
" 3. We don't need a previous buffer anymore
|
||||
call nerdtree#exec('bwipeout! ' . a:bufnum, 0)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
"FUNCTION: s:renameBuffer(bufNum, newNodeName, isDirectory){{{1
|
||||
"The buffer with the given bufNum is replaced with a new one
|
||||
"
|
||||
"Args:
|
||||
"bufNum: the buffer that may be deleted
|
||||
"newNodeName: the name given to the renamed node
|
||||
"isDirectory: determines how to do the create the new filenames
|
||||
function! s:renameBuffer(bufNum, newNodeName, isDirectory)
|
||||
if a:isDirectory
|
||||
let quotedFileName = fnameescape(a:newNodeName . '/' . fnamemodify(bufname(a:bufNum),':t'))
|
||||
let editStr = g:NERDTreePath.New(a:newNodeName . '/' . fnamemodify(bufname(a:bufNum),':t')).str({'format': 'Edit'})
|
||||
else
|
||||
let quotedFileName = fnameescape(a:newNodeName)
|
||||
let editStr = g:NERDTreePath.New(a:newNodeName).str({'format': 'Edit'})
|
||||
endif
|
||||
" 1. ensure that a new buffer is loaded
|
||||
call nerdtree#exec('badd ' . quotedFileName, 0)
|
||||
" 2. ensure that all windows which display the just deleted filename
|
||||
" display a buffer for a new filename.
|
||||
let s:originalTabNumber = tabpagenr()
|
||||
let s:originalWindowNumber = winnr()
|
||||
call nerdtree#exec('tabdo windo if winbufnr(0) ==# ' . a:bufNum . " | exec ':e! " . editStr . "' | endif", 0)
|
||||
call nerdtree#exec('tabnext ' . s:originalTabNumber, 1)
|
||||
call nerdtree#exec(s:originalWindowNumber . 'wincmd w', 1)
|
||||
" 3. We don't need a previous buffer anymore
|
||||
try
|
||||
call nerdtree#exec('confirm bwipeout ' . a:bufNum, 0)
|
||||
catch
|
||||
" This happens when answering Cancel if confirmation is needed. Do nothing.
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
"FUNCTION: NERDTreeAddNode(){{{1
|
||||
function! NERDTreeAddNode()
|
||||
let curDirNode = g:NERDTreeDirNode.GetSelected()
|
||||
let prompt = s:inputPrompt('add')
|
||||
let newNodeName = input(prompt, curDirNode.path.str() . g:NERDTreePath.Slash(), 'file')
|
||||
|
||||
if newNodeName ==# ''
|
||||
call nerdtree#echo('Node Creation Aborted.')
|
||||
return
|
||||
endif
|
||||
|
||||
try
|
||||
let newPath = g:NERDTreePath.Create(newNodeName)
|
||||
let parentNode = b:NERDTree.root.findNode(newPath.getParent())
|
||||
|
||||
let newTreeNode = g:NERDTreeFileNode.New(newPath, b:NERDTree)
|
||||
" Emptying g:NERDTreeOldSortOrder forces the sort to
|
||||
" recalculate the cached sortKey so nodes sort correctly.
|
||||
let g:NERDTreeOldSortOrder = []
|
||||
if empty(parentNode)
|
||||
call b:NERDTree.root.refresh()
|
||||
call b:NERDTree.render()
|
||||
elseif parentNode.isOpen || !empty(parentNode.children)
|
||||
call parentNode.addChild(newTreeNode, 1)
|
||||
call NERDTreeRender()
|
||||
call newTreeNode.putCursorHere(1, 0)
|
||||
endif
|
||||
|
||||
redraw!
|
||||
catch /^NERDTree/
|
||||
call nerdtree#echoWarning('Node Not Created.')
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
"FUNCTION: NERDTreeMoveNode(){{{1
|
||||
function! NERDTreeMoveNode()
|
||||
let curNode = g:NERDTreeFileNode.GetSelected()
|
||||
let prompt = s:inputPrompt('move')
|
||||
let newNodePath = input(prompt, curNode.path.str(), 'file')
|
||||
while filereadable(newNodePath)
|
||||
call nerdtree#echoWarning('This destination already exists. Try again.')
|
||||
let newNodePath = input(prompt, curNode.path.str(), 'file')
|
||||
endwhile
|
||||
|
||||
|
||||
if newNodePath ==# ''
|
||||
call nerdtree#echo('Node Renaming Aborted.')
|
||||
return
|
||||
endif
|
||||
|
||||
try
|
||||
if curNode.path.isDirectory
|
||||
let l:curPath = escape(curNode.path.str(),'\') . (nerdtree#runningWindows()?'\\':'/') . '.*'
|
||||
let l:openBuffers = filter(range(1,bufnr('$')),'bufexists(v:val) && fnamemodify(bufname(v:val),":p") =~# "'.escape(l:curPath,'\').'"')
|
||||
else
|
||||
let l:openBuffers = filter(range(1,bufnr('$')),'bufexists(v:val) && fnamemodify(bufname(v:val),":p") ==# curNode.path.str()')
|
||||
endif
|
||||
|
||||
call curNode.rename(newNodePath)
|
||||
" Emptying g:NERDTreeOldSortOrder forces the sort to
|
||||
" recalculate the cached sortKey so nodes sort correctly.
|
||||
let g:NERDTreeOldSortOrder = []
|
||||
call b:NERDTree.root.refresh()
|
||||
call NERDTreeRender()
|
||||
|
||||
" If the file node is open, or files under the directory node are
|
||||
" open, ask the user if they want to replace the file(s) with the
|
||||
" renamed files.
|
||||
if !empty(l:openBuffers)
|
||||
if curNode.path.isDirectory
|
||||
echo "\nDirectory renamed.\n\nFiles with the old directory name are open in buffers " . join(l:openBuffers, ', ') . '. Replace these buffers with the new files? (yN)'
|
||||
else
|
||||
echo "\nFile renamed.\n\nThe old file is open in buffer " . l:openBuffers[0] . '. Replace this buffer with the new file? (yN)'
|
||||
endif
|
||||
if g:NERDTreeAutoDeleteBuffer || nr2char(getchar()) ==# 'y'
|
||||
for bufNum in l:openBuffers
|
||||
call s:renameBuffer(bufNum, newNodePath, curNode.path.isDirectory)
|
||||
endfor
|
||||
endif
|
||||
endif
|
||||
|
||||
call curNode.putCursorHere(1, 0)
|
||||
|
||||
redraw!
|
||||
catch /^NERDTree/
|
||||
call nerdtree#echoWarning('Node Not Renamed.')
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" FUNCTION: NERDTreeDeleteNode() {{{1
|
||||
function! NERDTreeDeleteNode()
|
||||
let l:shellslash = &shellslash
|
||||
let &shellslash = 0
|
||||
let currentNode = g:NERDTreeFileNode.GetSelected()
|
||||
let confirmed = 0
|
||||
|
||||
if currentNode.path.isDirectory && ((currentNode.isOpen && currentNode.getChildCount() > 0) ||
|
||||
\ (len(currentNode._glob('*', 1)) > 0))
|
||||
let prompt = s:inputPrompt('deleteNonEmpty') . currentNode.path.str() . ': '
|
||||
let choice = input(prompt)
|
||||
let confirmed = choice ==# 'yes'
|
||||
else
|
||||
let prompt = s:inputPrompt('delete') . currentNode.path.str() . ' (yN): '
|
||||
echo prompt
|
||||
let choice = nr2char(getchar())
|
||||
let confirmed = choice ==# 'y'
|
||||
endif
|
||||
|
||||
if confirmed
|
||||
try
|
||||
call currentNode.delete()
|
||||
call NERDTreeRender()
|
||||
|
||||
"if the node is open in a buffer, ask the user if they want to
|
||||
"close that buffer
|
||||
let bufnum = bufnr('^'.currentNode.path.str().'$')
|
||||
if buflisted(bufnum)
|
||||
let prompt = "\nNode deleted.\n\nThe file is open in buffer ". bufnum . (bufwinnr(bufnum) ==# -1 ? ' (hidden)' : '') .'. Delete this buffer? (yN)'
|
||||
call s:promptToDelBuffer(bufnum, prompt)
|
||||
endif
|
||||
|
||||
redraw!
|
||||
catch /^NERDTree/
|
||||
call nerdtree#echoWarning('Could not remove node')
|
||||
endtry
|
||||
else
|
||||
call nerdtree#echo('delete aborted')
|
||||
endif
|
||||
let &shellslash = l:shellslash
|
||||
endfunction
|
||||
|
||||
" FUNCTION: NERDTreeListNode() {{{1
|
||||
function! NERDTreeListNode()
|
||||
let treenode = g:NERDTreeFileNode.GetSelected()
|
||||
if !empty(treenode)
|
||||
let s:uname = system('uname')
|
||||
let stat_cmd = 'stat -c "%s" '
|
||||
|
||||
if s:uname =~? 'Darwin'
|
||||
let stat_cmd = 'stat -f "%z" '
|
||||
endif
|
||||
|
||||
let cmd = 'size=$(' . stat_cmd . shellescape(treenode.path.str()) . ') && ' .
|
||||
\ 'size_with_commas=$(echo $size | sed -e :a -e "s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta") && ' .
|
||||
\ 'ls -ld ' . shellescape(treenode.path.str()) . ' | sed -e "s/ $size / $size_with_commas /"'
|
||||
|
||||
let metadata = split(system(cmd),'\n')
|
||||
call nerdtree#echo(metadata[0])
|
||||
else
|
||||
call nerdtree#echo('No information available')
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" FUNCTION: NERDTreeListNodeWin32() {{{1
|
||||
function! NERDTreeListNodeWin32()
|
||||
let l:node = g:NERDTreeFileNode.GetSelected()
|
||||
|
||||
if !empty(l:node)
|
||||
let l:path = l:node.path.str()
|
||||
call nerdtree#echo(printf('%s:%s MOD:%s BYTES:%d PERMISSIONS:%s',
|
||||
\ toupper(getftype(l:path)),
|
||||
\ fnamemodify(l:path, ':t'),
|
||||
\ strftime('%c', getftime(l:path)),
|
||||
\ getfsize(l:path),
|
||||
\ getfperm(l:path)))
|
||||
return
|
||||
endif
|
||||
|
||||
call nerdtree#echo('node not recognized')
|
||||
endfunction
|
||||
|
||||
" FUNCTION: NERDTreeCopyNode() {{{1
|
||||
function! NERDTreeCopyNode()
|
||||
let l:shellslash = &shellslash
|
||||
let &shellslash = 0
|
||||
let currentNode = g:NERDTreeFileNode.GetSelected()
|
||||
let prompt = s:inputPrompt('copy')
|
||||
let newNodePath = input(prompt, currentNode.path.str(), 'file')
|
||||
|
||||
if newNodePath !=# ''
|
||||
"strip trailing slash
|
||||
let newNodePath = substitute(newNodePath, '\/$', '', '')
|
||||
|
||||
let confirmed = 1
|
||||
if currentNode.path.copyingWillOverwrite(newNodePath)
|
||||
call nerdtree#echo('Warning: copying may overwrite files! Continue? (yN)')
|
||||
let choice = nr2char(getchar())
|
||||
let confirmed = choice ==# 'y'
|
||||
endif
|
||||
|
||||
if confirmed
|
||||
try
|
||||
let newNode = currentNode.copy(newNodePath)
|
||||
" Emptying g:NERDTreeOldSortOrder forces the sort to
|
||||
" recalculate the cached sortKey so nodes sort correctly.
|
||||
let g:NERDTreeOldSortOrder = []
|
||||
if empty(newNode)
|
||||
call b:NERDTree.root.refresh()
|
||||
call b:NERDTree.render()
|
||||
else
|
||||
call NERDTreeRender()
|
||||
call newNode.putCursorHere(0, 0)
|
||||
endif
|
||||
catch /^NERDTree/
|
||||
call nerdtree#echoWarning('Could not copy node')
|
||||
endtry
|
||||
endif
|
||||
else
|
||||
call nerdtree#echo('Copy aborted.')
|
||||
endif
|
||||
let &shellslash = l:shellslash
|
||||
redraw!
|
||||
endfunction
|
||||
|
||||
" FUNCTION: NERDTreeCopyPath() {{{1
|
||||
function! NERDTreeCopyPath()
|
||||
let l:nodePath = g:NERDTreeFileNode.GetSelected().path.str()
|
||||
if has('clipboard')
|
||||
if &clipboard ==# 'unnamedplus'
|
||||
let @+ = l:nodePath
|
||||
else
|
||||
let @* = l:nodePath
|
||||
endif
|
||||
call nerdtree#echo('The path [' . l:nodePath . '] was copied to your clipboard.')
|
||||
else
|
||||
call nerdtree#echo('The full path is: ' . l:nodePath)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" FUNCTION: NERDTreeQuickLook() {{{1
|
||||
function! NERDTreeQuickLook()
|
||||
let l:node = g:NERDTreeFileNode.GetSelected()
|
||||
|
||||
if empty(l:node)
|
||||
return
|
||||
endif
|
||||
|
||||
call system('qlmanage -p 2>/dev/null ' . shellescape(l:node.path.str()))
|
||||
endfunction
|
||||
|
||||
" FUNCTION: NERDTreeRevealInFinder() {{{1
|
||||
function! NERDTreeRevealInFinder()
|
||||
let l:node = g:NERDTreeFileNode.GetSelected()
|
||||
|
||||
if empty(l:node)
|
||||
return
|
||||
endif
|
||||
|
||||
call system('open -R ' . shellescape(l:node.path.str()))
|
||||
endfunction
|
||||
|
||||
" FUNCTION: NERDTreeExecuteFile() {{{1
|
||||
function! NERDTreeExecuteFile()
|
||||
let l:node = g:NERDTreeFileNode.GetSelected()
|
||||
|
||||
if empty(l:node)
|
||||
return
|
||||
endif
|
||||
|
||||
call system('open ' . shellescape(l:node.path.str()))
|
||||
endfunction
|
||||
|
||||
" FUNCTION: NERDTreeRevealFileLinux() {{{1
|
||||
function! NERDTreeRevealFileLinux()
|
||||
let l:node = g:NERDTreeFileNode.GetSelected()
|
||||
|
||||
if empty(l:node)
|
||||
return
|
||||
endif
|
||||
|
||||
" Handle the edge case of "/", which has no parent.
|
||||
if l:node.path.str() ==# '/'
|
||||
call system('xdg-open /')
|
||||
return
|
||||
endif
|
||||
|
||||
if empty(l:node.parent)
|
||||
return
|
||||
endif
|
||||
|
||||
call system('xdg-open ' . shellescape(l:node.parent.path.str()))
|
||||
endfunction
|
||||
|
||||
" FUNCTION: NERDTreeExecuteFileLinux() {{{1
|
||||
function! NERDTreeExecuteFileLinux()
|
||||
let l:node = g:NERDTreeFileNode.GetSelected()
|
||||
|
||||
if empty(l:node)
|
||||
return
|
||||
endif
|
||||
|
||||
call system('xdg-open ' . shellescape(l:node.path.str()))
|
||||
endfunction
|
||||
|
||||
" FUNCTION: NERDTreeExecuteFileWindows() {{{1
|
||||
function! NERDTreeExecuteFileWindows()
|
||||
let l:node = g:NERDTreeFileNode.GetSelected()
|
||||
|
||||
if empty(l:node)
|
||||
return
|
||||
endif
|
||||
|
||||
call system('cmd.exe /c start "" ' . shellescape(l:node.path.str()))
|
||||
endfunction
|
||||
|
||||
" vim: set sw=4 sts=4 et fdm=marker:
|
||||
@@ -0,0 +1,47 @@
|
||||
" ============================================================================
|
||||
" File: vcs.vim
|
||||
" Description: NERDTree plugin that provides a command to open on the root of
|
||||
" a version control system repository.
|
||||
" Maintainer: Phil Runninger
|
||||
" License: This program is free software. It comes without any warranty,
|
||||
" to the extent permitted by applicable law. You can redistribute
|
||||
" it and/or modify it under the terms of the Do What The Fuck You
|
||||
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
"
|
||||
" ============================================================================
|
||||
command! -n=? -complete=dir -bar NERDTreeVCS :call <SID>CreateTabTreeVCS('<args>')
|
||||
command! -n=? -complete=dir -bar NERDTreeToggleVCS :call <SID>ToggleTabTreeVCS('<args>')
|
||||
|
||||
" FUNCTION: s:CreateTabTreeVCS(a:name) {{{1
|
||||
function! s:CreateTabTreeVCS(name)
|
||||
let l:path = g:NERDTreeCreator._pathForString(a:name)
|
||||
let l:path = s:FindParentVCSRoot(l:path)
|
||||
call g:NERDTreeCreator.createTabTree(empty(l:path) ? '' : l:path._str())
|
||||
endfunction
|
||||
|
||||
" FUNCTION: s:ToggleTabTreeVCS(a:name) {{{1
|
||||
" Behaves the same as ToggleTabTree except roots directory at VCS root
|
||||
function! s:ToggleTabTreeVCS(name)
|
||||
let l:path = g:NERDTreeCreator._pathForString(a:name)
|
||||
let l:path = s:FindParentVCSRoot(l:path)
|
||||
call g:NERDTreeCreator.toggleTabTree(empty(l:path) ? '' : l:path._str())
|
||||
endfunction
|
||||
|
||||
" FUNCTION: s:FindParentVCSRoot(a:path) {{{1
|
||||
" Finds the root version control system folder of the given path. If a:path is
|
||||
" not part of a repository, return the original path.
|
||||
function! s:FindParentVCSRoot(path)
|
||||
let l:path = a:path
|
||||
while !empty(l:path) &&
|
||||
\ l:path._str() !~# '^\(\a:[\\\/]\|\/\)$' &&
|
||||
\ !isdirectory(l:path._str() . '/.git') &&
|
||||
\ !isdirectory(l:path._str() . '/.svn') &&
|
||||
\ !isdirectory(l:path._str() . '/.hg') &&
|
||||
\ !isdirectory(l:path._str() . '/.bzr') &&
|
||||
\ !isdirectory(l:path._str() . '/_darcs')
|
||||
let l:path = l:path.getParent()
|
||||
endwhile
|
||||
return (empty(l:path) || l:path._str() =~# '^\(\a:[\\\/]\|\/\)$') ? a:path : l:path
|
||||
endfunction
|
||||
|
||||
@@ -0,0 +1,261 @@
|
||||
" ============================================================================
|
||||
" File: NERD_tree.vim
|
||||
" Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
|
||||
" License: This program is free software. It comes without any warranty,
|
||||
" to the extent permitted by applicable law. You can redistribute
|
||||
" it and/or modify it under the terms of the Do What The Fuck You
|
||||
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
"
|
||||
" ============================================================================
|
||||
"
|
||||
" SECTION: Script init stuff {{{1
|
||||
"============================================================
|
||||
scriptencoding utf-8
|
||||
|
||||
if exists('loaded_nerd_tree')
|
||||
finish
|
||||
endif
|
||||
if v:version < 703
|
||||
echoerr "NERDTree: this plugin requires vim >= 7.3. DOWNLOAD IT! You'll thank me later!"
|
||||
finish
|
||||
endif
|
||||
let loaded_nerd_tree = 1
|
||||
|
||||
"for line continuation - i.e dont want C in &cpoptions
|
||||
let s:old_cpo = &cpoptions
|
||||
set cpoptions&vim
|
||||
|
||||
"Function: s:initVariable() function {{{2
|
||||
"This function is used to initialise a given variable to a given value. The
|
||||
"variable is only initialised if it does not exist prior
|
||||
"
|
||||
"Args:
|
||||
"var: the name of the var to be initialised
|
||||
"value: the value to initialise var to
|
||||
"
|
||||
"Returns:
|
||||
"1 if the var is set, 0 otherwise
|
||||
function! s:initVariable(var, value)
|
||||
if !exists(a:var)
|
||||
exec 'let ' . a:var . ' = ' . "'" . substitute(a:value, "'", "''", 'g') . "'"
|
||||
return 1
|
||||
endif
|
||||
return 0
|
||||
endfunction
|
||||
|
||||
"SECTION: Init variable calls and other random constants {{{2
|
||||
call s:initVariable('g:NERDTreeAutoCenter', 1)
|
||||
call s:initVariable('g:NERDTreeAutoCenterThreshold', 3)
|
||||
call s:initVariable('g:NERDTreeCaseSensitiveSort', 0)
|
||||
call s:initVariable('g:NERDTreeNaturalSort', 0)
|
||||
call s:initVariable('g:NERDTreeSortHiddenFirst', 1)
|
||||
call s:initVariable('g:NERDTreeUseTCD', 0)
|
||||
call s:initVariable('g:NERDTreeChDirMode', 0)
|
||||
call s:initVariable('g:NERDTreeCreatePrefix', 'silent')
|
||||
call s:initVariable('g:NERDTreeMinimalUI', 0)
|
||||
call s:initVariable('g:NERDTreeMinimalMenu', 0)
|
||||
if !exists('g:NERDTreeIgnore')
|
||||
let g:NERDTreeIgnore = ['\~$']
|
||||
endif
|
||||
call s:initVariable('g:NERDTreeBookmarksFile', expand('$HOME') . '/.NERDTreeBookmarks')
|
||||
call s:initVariable('g:NERDTreeBookmarksSort', 1)
|
||||
call s:initVariable('g:NERDTreeHighlightCursorline', 1)
|
||||
call s:initVariable('g:NERDTreeHijackNetrw', 1)
|
||||
call s:initVariable('g:NERDTreeMarkBookmarks', 1)
|
||||
call s:initVariable('g:NERDTreeMouseMode', 1)
|
||||
call s:initVariable('g:NERDTreeNotificationThreshold', 100)
|
||||
call s:initVariable('g:NERDTreeQuitOnOpen', 0)
|
||||
call s:initVariable('g:NERDTreeRespectWildIgnore', 0)
|
||||
call s:initVariable('g:NERDTreeShowBookmarks', 0)
|
||||
call s:initVariable('g:NERDTreeShowFiles', 1)
|
||||
call s:initVariable('g:NERDTreeShowHidden', 0)
|
||||
call s:initVariable('g:NERDTreeShowLineNumbers', 0)
|
||||
call s:initVariable('g:NERDTreeSortDirs', 1)
|
||||
|
||||
if !nerdtree#runningWindows() && !nerdtree#runningCygwin()
|
||||
call s:initVariable('g:NERDTreeDirArrowExpandable', '▸')
|
||||
call s:initVariable('g:NERDTreeDirArrowCollapsible', '▾')
|
||||
else
|
||||
call s:initVariable('g:NERDTreeDirArrowExpandable', '+')
|
||||
call s:initVariable('g:NERDTreeDirArrowCollapsible', '~')
|
||||
endif
|
||||
|
||||
call s:initVariable('g:NERDTreeCascadeOpenSingleChildDir', 1)
|
||||
call s:initVariable('g:NERDTreeCascadeSingleChildDir', 1)
|
||||
|
||||
if !exists('g:NERDTreeSortOrder')
|
||||
let g:NERDTreeSortOrder = ['\/$', '*', '\.swp$', '\.bak$', '\~$']
|
||||
endif
|
||||
let g:NERDTreeOldSortOrder = []
|
||||
|
||||
call s:initVariable('g:NERDTreeGlyphReadOnly', 'RO')
|
||||
|
||||
if has('conceal')
|
||||
call s:initVariable('g:NERDTreeNodeDelimiter', "\x07")
|
||||
elseif (g:NERDTreeDirArrowExpandable ==# "\u00a0" || g:NERDTreeDirArrowCollapsible ==# "\u00a0")
|
||||
call s:initVariable('g:NERDTreeNodeDelimiter', "\u00b7")
|
||||
else
|
||||
call s:initVariable('g:NERDTreeNodeDelimiter', "\u00a0")
|
||||
endif
|
||||
|
||||
if !exists('g:NERDTreeStatusline')
|
||||
|
||||
"the exists() crap here is a hack to stop vim spazzing out when
|
||||
"loading a session that was created with an open nerd tree. It spazzes
|
||||
"because it doesnt store b:NERDTree(its a b: var, and its a hash)
|
||||
let g:NERDTreeStatusline = "%{exists('b:NERDTree')?b:NERDTree.root.path.str():''}"
|
||||
|
||||
endif
|
||||
call s:initVariable('g:NERDTreeWinPos', 'left')
|
||||
call s:initVariable('g:NERDTreeWinSize', 31)
|
||||
|
||||
"init the shell commands that will be used to copy nodes, and remove dir trees
|
||||
"
|
||||
"Note: the space after the command is important
|
||||
if nerdtree#runningWindows()
|
||||
call s:initVariable('g:NERDTreeRemoveDirCmd', 'rmdir /s /q ')
|
||||
call s:initVariable('g:NERDTreeCopyDirCmd', 'xcopy /s /e /i /y /q ')
|
||||
call s:initVariable('g:NERDTreeCopyFileCmd', 'copy /y ')
|
||||
else
|
||||
call s:initVariable('g:NERDTreeRemoveDirCmd', 'rm -rf ')
|
||||
call s:initVariable('g:NERDTreeCopyCmd', 'cp -r ')
|
||||
endif
|
||||
|
||||
|
||||
"SECTION: Init variable calls for key mappings {{{2
|
||||
call s:initVariable('g:NERDTreeMapCustomOpen', '<CR>')
|
||||
call s:initVariable('g:NERDTreeMapActivateNode', 'o')
|
||||
call s:initVariable('g:NERDTreeMapChangeRoot', 'C')
|
||||
call s:initVariable('g:NERDTreeMapChdir', 'cd')
|
||||
call s:initVariable('g:NERDTreeMapCloseChildren', 'X')
|
||||
call s:initVariable('g:NERDTreeMapCloseDir', 'x')
|
||||
call s:initVariable('g:NERDTreeMapDeleteBookmark', 'D')
|
||||
call s:initVariable('g:NERDTreeMapMenu', 'm')
|
||||
call s:initVariable('g:NERDTreeMapHelp', '?')
|
||||
call s:initVariable('g:NERDTreeMapJumpFirstChild', 'K')
|
||||
call s:initVariable('g:NERDTreeMapJumpLastChild', 'J')
|
||||
call s:initVariable('g:NERDTreeMapJumpNextSibling', '<C-j>')
|
||||
call s:initVariable('g:NERDTreeMapJumpParent', 'p')
|
||||
call s:initVariable('g:NERDTreeMapJumpPrevSibling', '<C-k>')
|
||||
call s:initVariable('g:NERDTreeMapJumpRoot', 'P')
|
||||
call s:initVariable('g:NERDTreeMapOpenExpl', 'e')
|
||||
call s:initVariable('g:NERDTreeMapOpenInTab', 't')
|
||||
call s:initVariable('g:NERDTreeMapOpenInTabSilent', 'T')
|
||||
call s:initVariable('g:NERDTreeMapOpenRecursively', 'O')
|
||||
call s:initVariable('g:NERDTreeMapOpenSplit', 'i')
|
||||
call s:initVariable('g:NERDTreeMapOpenVSplit', 's')
|
||||
call s:initVariable('g:NERDTreeMapPreview', 'g' . NERDTreeMapActivateNode)
|
||||
call s:initVariable('g:NERDTreeMapPreviewSplit', 'g' . NERDTreeMapOpenSplit)
|
||||
call s:initVariable('g:NERDTreeMapPreviewVSplit', 'g' . NERDTreeMapOpenVSplit)
|
||||
call s:initVariable('g:NERDTreeMapQuit', 'q')
|
||||
call s:initVariable('g:NERDTreeMapRefresh', 'r')
|
||||
call s:initVariable('g:NERDTreeMapRefreshRoot', 'R')
|
||||
call s:initVariable('g:NERDTreeMapToggleBookmarks', 'B')
|
||||
call s:initVariable('g:NERDTreeMapToggleFiles', 'F')
|
||||
call s:initVariable('g:NERDTreeMapToggleFilters', 'f')
|
||||
call s:initVariable('g:NERDTreeMapToggleHidden', 'I')
|
||||
call s:initVariable('g:NERDTreeMapToggleZoom', 'A')
|
||||
call s:initVariable('g:NERDTreeMapUpdir', 'u')
|
||||
call s:initVariable('g:NERDTreeMapUpdirKeepOpen', 'U')
|
||||
call s:initVariable('g:NERDTreeMapCWD', 'CD')
|
||||
call s:initVariable('g:NERDTreeMenuDown', 'j')
|
||||
call s:initVariable('g:NERDTreeMenuUp', 'k')
|
||||
|
||||
"SECTION: Load class files{{{2
|
||||
call nerdtree#loadClassFiles()
|
||||
|
||||
" SECTION: Commands {{{1
|
||||
"============================================================
|
||||
call nerdtree#ui_glue#setupCommands()
|
||||
|
||||
" SECTION: Auto commands {{{1
|
||||
"============================================================
|
||||
augroup NERDTree
|
||||
"Save the cursor position whenever we close the nerd tree
|
||||
exec 'autocmd BufLeave,WinLeave '. g:NERDTreeCreator.BufNamePrefix() .'* if g:NERDTree.IsOpen() | call b:NERDTree.ui.saveScreenState() | endif'
|
||||
|
||||
"disallow insert mode in the NERDTree
|
||||
exec 'autocmd BufEnter,WinEnter '. g:NERDTreeCreator.BufNamePrefix() .'* stopinsert'
|
||||
augroup END
|
||||
|
||||
if g:NERDTreeHijackNetrw
|
||||
augroup NERDTreeHijackNetrw
|
||||
autocmd VimEnter * silent! autocmd! FileExplorer
|
||||
au BufEnter,VimEnter * call nerdtree#checkForBrowse(expand('<amatch>'))
|
||||
augroup END
|
||||
endif
|
||||
|
||||
if g:NERDTreeChDirMode ==# 3
|
||||
augroup NERDTreeChDirOnTabSwitch
|
||||
autocmd TabEnter * if g:NERDTree.ExistsForTab()|call g:NERDTree.ForCurrentTab().getRoot().path.changeToDir()|endif
|
||||
augroup END
|
||||
endif
|
||||
|
||||
" SECTION: Public API {{{1
|
||||
"============================================================
|
||||
function! NERDTreeAddMenuItem(options)
|
||||
call g:NERDTreeMenuItem.Create(a:options)
|
||||
endfunction
|
||||
|
||||
function! NERDTreeAddMenuSeparator(...)
|
||||
let opts = a:0 ? a:1 : {}
|
||||
call g:NERDTreeMenuItem.CreateSeparator(opts)
|
||||
endfunction
|
||||
|
||||
function! NERDTreeAddSubmenu(options)
|
||||
return g:NERDTreeMenuItem.Create(a:options)
|
||||
endfunction
|
||||
|
||||
function! NERDTreeAddKeyMap(options)
|
||||
call g:NERDTreeKeyMap.Create(a:options)
|
||||
endfunction
|
||||
|
||||
function! NERDTreeRender()
|
||||
call nerdtree#renderView()
|
||||
endfunction
|
||||
|
||||
function! NERDTreeFocus()
|
||||
if g:NERDTree.IsOpen()
|
||||
call g:NERDTree.CursorToTreeWin(0)
|
||||
else
|
||||
call g:NERDTreeCreator.ToggleTabTree('')
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! NERDTreeCWD()
|
||||
|
||||
if empty(getcwd())
|
||||
call nerdtree#echoWarning('current directory does not exist')
|
||||
return
|
||||
endif
|
||||
|
||||
try
|
||||
let l:cwdPath = g:NERDTreePath.New(getcwd())
|
||||
catch /^NERDTree.InvalidArgumentsError/
|
||||
call nerdtree#echoWarning('current directory does not exist')
|
||||
return
|
||||
endtry
|
||||
|
||||
call NERDTreeFocus()
|
||||
|
||||
if b:NERDTree.root.path.equals(l:cwdPath)
|
||||
return
|
||||
endif
|
||||
|
||||
let l:newRoot = g:NERDTreeFileNode.New(l:cwdPath, b:NERDTree)
|
||||
call b:NERDTree.changeRoot(l:newRoot)
|
||||
normal! ^
|
||||
endfunction
|
||||
|
||||
function! NERDTreeAddPathFilter(callback)
|
||||
call g:NERDTree.AddPathFilter(a:callback)
|
||||
endfunction
|
||||
|
||||
" SECTION: Post Source Actions {{{1
|
||||
call nerdtree#postSourceActions()
|
||||
|
||||
"reset &cpoptions back to users setting
|
||||
let &cpoptions = s:old_cpo
|
||||
|
||||
" vim: set sw=4 sts=4 et fdm=marker:
|
||||
BIN
vim/.vim_runtime/sources_non_forked/nerdtree/screenshot.png
Normal file
BIN
vim/.vim_runtime/sources_non_forked/nerdtree/screenshot.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 86 KiB |
@@ -0,0 +1,95 @@
|
||||
let s:tree_up_dir_line = '.. (up a dir)'
|
||||
syn match NERDTreeIgnore #\~#
|
||||
exec 'syn match NERDTreeIgnore #\['.g:NERDTreeGlyphReadOnly.'\]#'
|
||||
|
||||
"highlighting for the .. (up dir) line at the top of the tree
|
||||
execute "syn match NERDTreeUp #\\V". s:tree_up_dir_line .'#'
|
||||
|
||||
"quickhelp syntax elements
|
||||
syn match NERDTreeHelpKey #" \{1,2\}[^ ]*:#ms=s+2,me=e-1
|
||||
syn match NERDTreeHelpKey #" \{1,2\}[^ ]*,#ms=s+2,me=e-1
|
||||
syn match NERDTreeHelpTitle #" .*\~$#ms=s+2,me=e-1
|
||||
syn match NERDTreeToggleOn #(on)#ms=s+1,he=e-1
|
||||
syn match NERDTreeToggleOff #(off)#ms=e-3,me=e-1
|
||||
syn match NERDTreeHelpCommand #" :.\{-}\>#hs=s+3
|
||||
syn match NERDTreeHelp #^".*# contains=NERDTreeHelpKey,NERDTreeHelpTitle,NERDTreeIgnore,NERDTreeToggleOff,NERDTreeToggleOn,NERDTreeHelpCommand
|
||||
|
||||
"highlighting for sym links
|
||||
syn match NERDTreeLinkTarget #->.*# containedin=NERDTreeDir,NERDTreeFile
|
||||
syn match NERDTreeLinkFile #.* ->#me=e-3 containedin=NERDTreeFile
|
||||
syn match NERDTreeLinkDir #.*/ ->#me=e-3 containedin=NERDTreeDir
|
||||
|
||||
"highlighting to conceal the delimiter around the file/dir name
|
||||
if has('conceal')
|
||||
exec 'syn match NERDTreeNodeDelimiters #\%d' . char2nr(g:NERDTreeNodeDelimiter) . '# conceal containedin=ALL'
|
||||
setlocal conceallevel=2 concealcursor=nvic
|
||||
else
|
||||
exec 'syn match NERDTreeNodeDelimiters #\%d' . char2nr(g:NERDTreeNodeDelimiter) . '# containedin=ALL'
|
||||
hi! link NERDTreeNodeDelimiters Ignore
|
||||
endif
|
||||
|
||||
"highlighing for directory nodes and file nodes
|
||||
syn match NERDTreeDirSlash #/# containedin=NERDTreeDir
|
||||
|
||||
if g:NERDTreeDirArrowExpandable !=# ''
|
||||
exec 'syn match NERDTreeClosable #' . escape(g:NERDTreeDirArrowCollapsible, '~') . '\ze .*/# containedin=NERDTreeDir,NERDTreeFile'
|
||||
exec 'syn match NERDTreeOpenable #' . escape(g:NERDTreeDirArrowExpandable, '~') . '\ze .*/# containedin=NERDTreeDir,NERDTreeFile'
|
||||
let s:dirArrows = escape(g:NERDTreeDirArrowCollapsible, '~]\-').escape(g:NERDTreeDirArrowExpandable, '~]\-')
|
||||
exec 'syn match NERDTreeDir #[^'.s:dirArrows.' ].*/#'
|
||||
exec 'syn match NERDTreeExecFile #^.*'.g:NERDTreeNodeDelimiter.'\*\($\| \)# contains=NERDTreeRO,NERDTreeBookmark'
|
||||
exec 'syn match NERDTreeFile #^[^"\.'.s:dirArrows.'] *[^'.s:dirArrows.']*# contains=NERDTreeLink,NERDTreeRO,NERDTreeBookmark,NERDTreeExecFile'
|
||||
else
|
||||
exec 'syn match NERDTreeDir #[^'.g:NERDTreeNodeDelimiter.']\{-}/\ze\($\|'.g:NERDTreeNodeDelimiter.'\)#'
|
||||
exec 'syn match NERDTreeExecFile #[^'.g:NERDTreeNodeDelimiter.']\{-}'.g:NERDTreeNodeDelimiter.'\*\($\| \)# contains=NERDTreeRO,NERDTreeBookmark'
|
||||
exec 'syn match NERDTreeFile #^.*'.g:NERDTreeNodeDelimiter.'.*[^\/]\($\|'.g:NERDTreeNodeDelimiter.'.*\)# contains=NERDTreeLink,NERDTreeRO,NERDTreeBookmark,NERDTreeExecFile'
|
||||
endif
|
||||
|
||||
"highlighting for readonly files
|
||||
exec 'syn match NERDTreeRO #.*'.g:NERDTreeNodeDelimiter.'\zs.*\ze'.g:NERDTreeNodeDelimiter.'.*\['.g:NERDTreeGlyphReadOnly.'\]# contains=NERDTreeIgnore,NERDTreeBookmark,NERDTreeFile'
|
||||
|
||||
exec 'syn match NERDTreeFlags #\[[^\]]*\]\ze'.g:NERDTreeNodeDelimiter.'# containedin=NERDTreeFile,NERDTreeExecFile,NERDTreeDir'
|
||||
|
||||
syn match NERDTreeCWD #^[</].*$#
|
||||
|
||||
"highlighting for bookmarks
|
||||
syn match NERDTreeBookmark # {.*}#hs=s+1
|
||||
|
||||
"highlighting for the bookmarks table
|
||||
syn match NERDTreeBookmarksLeader #^>#
|
||||
syn match NERDTreeBookmarksHeader #^>-\+Bookmarks-\+$# contains=NERDTreeBookmarksLeader
|
||||
syn match NERDTreeBookmarkName #^>.\{-} #he=e-1 contains=NERDTreeBookmarksLeader
|
||||
syn match NERDTreeBookmark #^>.*$# contains=NERDTreeBookmarksLeader,NERDTreeBookmarkName,NERDTreeBookmarksHeader
|
||||
|
||||
hi def link NERDTreePart Special
|
||||
hi def link NERDTreePartFile Type
|
||||
hi def link NERDTreeExecFile Title
|
||||
hi def link NERDTreeDirSlash Identifier
|
||||
|
||||
hi def link NERDTreeBookmarksHeader statement
|
||||
hi def link NERDTreeBookmarksLeader ignore
|
||||
hi def link NERDTreeBookmarkName Identifier
|
||||
hi def link NERDTreeBookmark normal
|
||||
|
||||
hi def link NERDTreeHelp String
|
||||
hi def link NERDTreeHelpKey Identifier
|
||||
hi def link NERDTreeHelpCommand Identifier
|
||||
hi def link NERDTreeHelpTitle Macro
|
||||
hi def link NERDTreeToggleOn Question
|
||||
hi def link NERDTreeToggleOff WarningMsg
|
||||
|
||||
hi def link NERDTreeLinkTarget Type
|
||||
hi def link NERDTreeLinkFile Macro
|
||||
hi def link NERDTreeLinkDir Macro
|
||||
|
||||
hi def link NERDTreeDir Directory
|
||||
hi def link NERDTreeUp Directory
|
||||
hi def link NERDTreeFile Normal
|
||||
hi def link NERDTreeCWD Statement
|
||||
hi def link NERDTreeOpenable Directory
|
||||
hi def link NERDTreeClosable Directory
|
||||
hi def link NERDTreeIgnore ignore
|
||||
hi def link NERDTreeRO WarningMsg
|
||||
hi def link NERDTreeBookmark Statement
|
||||
hi def link NERDTreeFlags Number
|
||||
|
||||
hi def link NERDTreeCurrentNode Search
|
||||
Reference in New Issue
Block a user