mirror of
https://github.com/tpope/vim-fugitive.git
synced 2025-11-14 14:23:51 -05:00
Match Git semantics for GIT_CEILING_DIRECTORIES symlink resolution
Also support a generic g:ceiling_directories that can be shared with other plugins that do this sort of detection. References https://github.com/tpope/vim-fugitive/issues/1412
This commit is contained in:
@@ -177,6 +177,23 @@ function! s:Tree(path) abort
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:CeilingDirectories() abort
|
||||||
|
if !exists('s:ceiling_directories')
|
||||||
|
let s:ceiling_directories = []
|
||||||
|
let resolve = 1
|
||||||
|
for dir in split($GIT_CEILING_DIRECTORIES, has('win32') ? ';' : ':', 1)
|
||||||
|
if empty(dir)
|
||||||
|
let resolve = 0
|
||||||
|
elseif resolve
|
||||||
|
call add(s:ceiling_directories, resolve(dir))
|
||||||
|
else
|
||||||
|
call add(s:ceiling_directories, dir)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
return s:ceiling_directories + get(g:, 'ceiling_directories', [])
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! FugitiveExtractGitDir(path) abort
|
function! FugitiveExtractGitDir(path) abort
|
||||||
let path = s:Slash(a:path)
|
let path = s:Slash(a:path)
|
||||||
if path =~# '^fugitive:'
|
if path =~# '^fugitive:'
|
||||||
@@ -203,7 +220,7 @@ function! FugitiveExtractGitDir(path) abort
|
|||||||
if root =~# '\v^//%([^/]+/?)?$'
|
if root =~# '\v^//%([^/]+/?)?$'
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
if index(split($GIT_CEILING_DIRECTORIES, ':'), root) >= 0
|
if index(s:CeilingDirectories(), root) >= 0
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
if root ==# $GIT_WORK_TREE && FugitiveIsGitDir(env_git_dir)
|
if root ==# $GIT_WORK_TREE && FugitiveIsGitDir(env_git_dir)
|
||||||
|
|||||||
Reference in New Issue
Block a user