Move CommonDir() from autoload to plugin

This commit is contained in:
Tim Pope
2021-12-12 13:29:58 -05:00
parent bb4f9e660b
commit f4d94c5985
2 changed files with 18 additions and 22 deletions

View File

@@ -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 =~# '^\.\.\%(/\|$\)'

View File

@@ -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