aboutsummaryrefslogtreecommitdiff
path: root/vim/.vim/plugged/nerdtree/nerdtree_plugin/vcs.vim
diff options
context:
space:
mode:
authorKumar Damani <damani.kumar@gmail.com>2019-04-26 18:49:26 +0000
committerKumar Damani <damani.kumar@gmail.com>2019-04-26 18:49:26 +0000
commit5a6ed5fcb3b89d0c2b4e8ba2953c4ba806d4b171 (patch)
tree5be0c043b0c8d632e35a8b4ef7e23452b103b94d /vim/.vim/plugged/nerdtree/nerdtree_plugin/vcs.vim
parentaf821092fe78ef159d7cb6536bb006712dc01b9d (diff)
added vim dir
Diffstat (limited to 'vim/.vim/plugged/nerdtree/nerdtree_plugin/vcs.vim')
-rw-r--r--vim/.vim/plugged/nerdtree/nerdtree_plugin/vcs.vim38
1 files changed, 38 insertions, 0 deletions
diff --git a/vim/.vim/plugged/nerdtree/nerdtree_plugin/vcs.vim b/vim/.vim/plugged/nerdtree/nerdtree_plugin/vcs.vim
new file mode 100644
index 0000000..c30579a
--- /dev/null
+++ b/vim/.vim/plugged/nerdtree/nerdtree_plugin/vcs.vim
@@ -0,0 +1,38 @@
+" ============================================================================
+" 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>')
+
+" 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: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
+