Remove indirection

This commit is contained in:
Tim Pope
2018-07-24 20:44:06 -04:00
parent e6e3f3f225
commit b78a8ab860

View File

@@ -1720,9 +1720,9 @@ function! s:Write(force,...) abort
silent write silent write
setlocal buftype=nowrite setlocal buftype=nowrite
if matchstr(getline(2),'index [[:xdigit:]]\+\.\.\zs[[:xdigit:]]\{7\}') ==# s:repo().rev_parse(':0:'.filename)[0:6] if matchstr(getline(2),'index [[:xdigit:]]\+\.\.\zs[[:xdigit:]]\{7\}') ==# s:repo().rev_parse(':0:'.filename)[0:6]
let err = s:TreeChomp('apply','--cached','--reverse',s:buffer().spec()) let err = s:TreeChomp('apply', '--cached', '--reverse', expand('%:p'))
else else
let err = s:TreeChomp('apply','--cached',s:buffer().spec()) let err = s:TreeChomp('apply', '--cached', expand('%:p'))
endif endif
if err !=# '' if err !=# ''
let v:errmsg = split(err,"\n")[0] let v:errmsg = split(err,"\n")[0]
@@ -2101,7 +2101,7 @@ function! s:Move(force, rename, destination) abort
else else
let destination = a:destination let destination = a:destination
endif endif
if isdirectory(s:buffer().spec()) if isdirectory(@%)
setlocal noswapfile setlocal noswapfile
endif endif
let message = call('s:TreeChomp', ['mv'] + (a:force ? ['-f'] : []) + ['--', s:Relative(''), destination]) let message = call('s:TreeChomp', ['mv'] + (a:force ? ['-f'] : []) + ['--', s:Relative(''), destination])
@@ -3001,30 +3001,28 @@ endfunction
function! s:cfile() abort function! s:cfile() abort
try try
let buffer = s:buffer() let myhash = s:DirRev(@%)[1]
if len(myhash)
if buffer.spec() =~? '^fugitive:' || buffer.spec() =~# '\.git/refs/\|\.git/.*HEAD$' try
let myhash = buffer.repo().rev_parse(buffer.rev()) let myhash = s:repo().rev_parse(myhash)
else catch /^fugitive:/
let myhash = '' let myhash = ''
endtry
endif endif
if myhash ==# '' && getline(1) =~# '^\%(commit\|tag\) \w' if empty(myhash) && getline(1) =~# '^\%(commit\|tag\) \w'
let myhash = matchstr(getline(1),'^\w\+ \zs\S\+') let myhash = matchstr(getline(1),'^\w\+ \zs\S\+')
endif endif
if buffer.type('tree') let treebase = s:DirCommitFile(@%)[1].':'.s:Relative('').(s:Relative('') =~# '^$\|/$' ? '' : '/')
let showtree = (getline(1) =~# '^tree ' && getline(2) == "") if treebase !~# '^\d\=:' && getline('.') =~# '^\d\{6\} \l\{3,8\} \x\{40\}\t'
let base = s:DirCommitFile(@%)[1].':'.s:Relative('').(s:Relative('') =~# '^$\|/$' ? '' : '/') return [treebase . s:sub(matchstr(getline('.'),'\t\zs.*'),'/$','')]
if showtree && line('.') > 2 elseif treebase !~# '^\d\=:' && getline(1) =~# '^tree ' && empty(getline(2)) && line('.') >= 2
return [base . s:sub(getline('.'),'/$','')] return [treebase . s:sub(getline('.'),'/$','')]
elseif getline('.') =~# '^\d\{6\} \l\{3,8\} \x\{40\}\t'
return [base . s:sub(matchstr(getline('.'),'\t\zs.*'),'/$','')]
endif
elseif buffer.type('blob') elseif get(b:, 'fugitive_type', '') ==# 'blob'
let ref = expand("<cfile>") let ref = expand("<cfile>")
try try
let sha1 = buffer.repo().rev_parse(ref) let sha1 = s:repo().rev_parse(ref)
catch /^fugitive:/ catch /^fugitive:/
endtry endtry
if exists('sha1') if exists('sha1')
@@ -3096,7 +3094,7 @@ function! s:cfile() abort
let type = matchstr(getline(line('.')+1),'type \zs.*') let type = matchstr(getline(line('.')+1),'type \zs.*')
elseif getline('.') =~# '^\l\{3,8\} '.myhash.'$' elseif getline('.') =~# '^\l\{3,8\} '.myhash.'$'
let ref = buffer.rev() let ref = s:buffer().rev()
elseif getline('.') =~# '^\l\{3,8\} \x\{40\}\>' elseif getline('.') =~# '^\l\{3,8\} \x\{40\}\>'
let ref = matchstr(getline('.'),'\x\{40\}') let ref = matchstr(getline('.'),'\x\{40\}')