nerdtree

Форк
0
46 строк · 2.2 Кб
1
" ============================================================================
2
" File:        vcs.vim
3
" Description: NERDTree plugin that provides a command to open on the root of
4
"              a version control system repository.
5
" Maintainer:  Phil Runninger
6
" License:     This program is free software. It comes without any warranty,
7
"              to the extent permitted by applicable law. You can redistribute
8
"              it and/or modify it under the terms of the Do What The Fuck You
9
"              Want To Public License, Version 2, as published by Sam Hocevar.
10
"              See http://sam.zoy.org/wtfpl/COPYING for more details.
11
"
12
" ============================================================================
13
command! -n=? -complete=dir -bar NERDTreeVCS :call <SID>CreateTabTreeVCS('<args>')
14
command! -n=? -complete=dir -bar NERDTreeToggleVCS :call <SID>ToggleTabTreeVCS('<args>')
15

16
" FUNCTION: s:CreateTabTreeVCS(a:name) {{{1
17
function! s:CreateTabTreeVCS(name)
18
    let l:path = g:NERDTreeCreator._pathForString(a:name)
19
    let l:path = s:FindParentVCSRoot(l:path)
20
    call g:NERDTreeCreator.createTabTree(empty(l:path) ? '' : l:path._str())
21
endfunction
22

23
" FUNCTION: s:ToggleTabTreeVCS(a:name) {{{1
24
" Behaves the same as ToggleTabTree except roots directory at VCS root
25
function! s:ToggleTabTreeVCS(name)
26
    let l:path = g:NERDTreeCreator._pathForString(a:name)
27
    let l:path = s:FindParentVCSRoot(l:path)
28
    call g:NERDTreeCreator.toggleTabTree(empty(l:path) ? '' : l:path._str())
29
endfunction
30

31
" FUNCTION: s:FindParentVCSRoot(a:path) {{{1
32
" Finds the root version control system folder of the given path. If a:path is
33
" not part of a repository, return the original path.
34
function! s:FindParentVCSRoot(path)
35
    let l:path = a:path
36
    while !empty(l:path) &&
37
        \ l:path._str() !~# '^\(\a:[\\\/]\|\/\)$' &&
38
        \ !isdirectory(l:path._str() . '/.git') &&
39
        \ !isdirectory(l:path._str() . '/.svn') &&
40
        \ !isdirectory(l:path._str() . '/.hg') &&
41
        \ !isdirectory(l:path._str() . '/.bzr') &&
42
        \ !isdirectory(l:path._str() . '/_darcs')
43
        let l:path = l:path.getParent()
44
    endwhile
45
    return (empty(l:path) || l:path._str() =~# '^\(\a:[\\\/]\|\/\)$') ? a:path : l:path
46
endfunction
47

48

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.