mirror of
https://github.com/tpope/vim-fugitive.git
synced 2025-11-10 12:33:46 -05:00
Move CommonDir() from autoload to plugin
This commit is contained in:
@@ -474,26 +474,6 @@ function! fugitive#GitVersion(...) abort
|
|||||||
return a:000[i] ==# get(components, i)
|
return a:000[i] ==# get(components, i)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let s:commondirs = {}
|
|
||||||
function! fugitive#CommonDir(dir) abort
|
|
||||||
if empty(a:dir)
|
|
||||||
return ''
|
|
||||||
endif
|
|
||||||
if !has_key(s:commondirs, a:dir)
|
|
||||||
if filereadable(a:dir . '/commondir') && getfsize(a:dir . '/HEAD') >= 10
|
|
||||||
let cdir = get(readfile(a:dir . '/commondir', '', 1), 0, '')
|
|
||||||
if cdir =~# '^/\|^\a:/'
|
|
||||||
let s:commondirs[a:dir] = s:Slash(FugitiveVimPath(cdir))
|
|
||||||
else
|
|
||||||
let s:commondirs[a:dir] = simplify(a:dir . '/' . cdir)
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
let s:commondirs[a:dir] = a:dir
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
return s:commondirs[a:dir]
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:Dir(...) abort
|
function! s:Dir(...) abort
|
||||||
return a:0 ? FugitiveGitDir(a:1) : FugitiveGitDir()
|
return a:0 ? FugitiveGitDir(a:1) : FugitiveGitDir()
|
||||||
endfunction
|
endfunction
|
||||||
@@ -1748,7 +1728,7 @@ function! fugitive#Find(object, ...) abort
|
|||||||
elseif rev =~# '^\.git/'
|
elseif rev =~# '^\.git/'
|
||||||
let f = strpart(rev, 5)
|
let f = strpart(rev, 5)
|
||||||
let fdir = dir . '/'
|
let fdir = dir . '/'
|
||||||
let cdir = fugitive#CommonDir(dir) . '/'
|
let cdir = FugitiveCommonDir(dir) . '/'
|
||||||
if f =~# '^\.\./\.\.\%(/\|$\)'
|
if f =~# '^\.\./\.\.\%(/\|$\)'
|
||||||
let f = simplify(len(tree) ? tree . f[2:-1] : fdir . f)
|
let f = simplify(len(tree) ? tree . f[2:-1] : fdir . f)
|
||||||
elseif f =~# '^\.\.\%(/\|$\)'
|
elseif f =~# '^\.\.\%(/\|$\)'
|
||||||
|
|||||||
@@ -282,12 +282,28 @@ function! FugitiveStatusline(...) abort
|
|||||||
return fugitive#Statusline()
|
return fugitive#Statusline()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
let s:commondirs = {}
|
||||||
function! FugitiveCommonDir(...) abort
|
function! FugitiveCommonDir(...) abort
|
||||||
let dir = FugitiveGitDir(a:0 ? a:1 : -1)
|
let dir = FugitiveGitDir(a:0 ? a:1 : -1)
|
||||||
if empty(dir)
|
if empty(dir)
|
||||||
return ''
|
return ''
|
||||||
endif
|
endif
|
||||||
return fugitive#Find('.git/refs/..', dir)
|
if has_key(s:commondirs, dir)
|
||||||
|
return s:commondirs[dir]
|
||||||
|
endif
|
||||||
|
if getfsize(dir . '/HEAD') >= 10
|
||||||
|
let cdir = get(s:ReadFile(dir . '/commondir', 1), 0, '')
|
||||||
|
if cdir =~# '^/\|^\a:/'
|
||||||
|
let s:commondirs[dir] = s:Slash(FugitiveVimPath(cdir))
|
||||||
|
elseif len(cdir)
|
||||||
|
let s:commondirs[dir] = simplify(dir . '/' . cdir)
|
||||||
|
else
|
||||||
|
let s:commondirs[dir] = dir
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let s:commondirs[dir] = dir
|
||||||
|
endif
|
||||||
|
return s:commondirs[dir]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! FugitiveWorkTree(...) abort
|
function! FugitiveWorkTree(...) abort
|
||||||
|
|||||||
Reference in New Issue
Block a user