D in :Gstatus not on a file invokes :Git diff

This commit is contained in:
Tim Pope
2010-03-19 21:48:41 -04:00
parent 4975e76935
commit 57393e7956

View File

@@ -539,13 +539,14 @@ function! fugitive#reload_status() abort
endfunction endfunction
function! s:StageDiff() abort function! s:StageDiff() abort
let section = getline(search('^# .*:$','bnW'))
let line = getline('.') let line = getline('.')
let filename = matchstr(line,'^#\t\%([[:alpha:] ]\+: *\)\=\zs.*') let filename = matchstr(line,'^#\t\%([[:alpha:] ]\+: *\)\=\zs.*')
if filename ==# '' if filename ==# '' && section == '# Changes to be committed:'
return '' return 'Git diff --cached'
endif elseif filename ==# ''
let section = getline(search('^# .*:$','bnW')) return 'Git diff'
if line =~# '^#\trenamed:' && filename =~ ' -> ' elseif line =~# '^#\trenamed:' && filename =~ ' -> '
let [old, new] = split(filename,' -> ') let [old, new] = split(filename,' -> ')
execute 'Gedit '.s:fnameescape(':0:'.new) execute 'Gedit '.s:fnameescape(':0:'.new)
return 'Gdiff HEAD:'.s:fnameescape(old) return 'Gdiff HEAD:'.s:fnameescape(old)