123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- " ============================================================================
- " File: NERD_tree.vim
- " Description: vim global plugin that provides a nice tree explorer
- " Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
- " Last Change: 28 December, 2011
- " 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
- "============================================================
- if exists("loaded_nerd_tree")
- finish
- endif
- if v:version < 700
- echoerr "NERDTree: this plugin requires vim >= 7. DOWNLOAD IT! You'll thank me later!"
- finish
- endif
- let loaded_nerd_tree = 1
- "for line continuation - i.e dont want C in &cpo
- let s:old_cpo = &cpo
- set cpo&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:NERDTreeSortHiddenFirst", 1)
- call s:initVariable("g:NERDTreeChDirMode", 0)
- call s:initVariable("g:NERDTreeMinimalUI", 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: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)
- call s:initVariable("g:NERDTreeDirArrows", !nerdtree#runningWindows())
- call s:initVariable("g:NERDTreeCascadeOpenSingleChildDir", 1)
- if !exists("g:NERDTreeSortOrder")
- let g:NERDTreeSortOrder = ['\/$', '*', '\.swp$', '\.bak$', '\~$']
- else
- "if there isnt a * in the sort sequence then add one
- if count(g:NERDTreeSortOrder, '*') < 1
- call add(g:NERDTreeSortOrder, '*')
- endif
- 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:NERDTreeRoot (its a b: var, and its a hash)
- let g:NERDTreeStatusline = "%{exists('b:NERDTreeRoot')?b:NERDTreeRoot.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 ')
- 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: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")
- "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 ". g:NERDTreeCreator.BufNamePrefix() ."* call b:NERDTree.ui.saveScreenState()"
- "disallow insert mode in the NERDTree
- exec "autocmd BufEnter ". 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
- " 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 nerdtree#isTreeOpen()
- call nerdtree#putCursorInTreeWin()
- else
- call g:NERDTreeCreator.TogglePrimary("")
- endif
- endfunction
- function! NERDTreeCWD()
- call NERDTreeFocus()
- call nerdtree#ui_glue#chRootCwd()
- endfunction
- " SECTION: Post Source Actions {{{1
- call nerdtree#postSourceActions()
- "reset &cpo back to users setting
- let &cpo = s:old_cpo
- " vim: set sw=4 sts=4 et fdm=marker:
|