Change interface for jumping directly to blame commit

This commit is contained in:
Tim Pope 2019-07-08 09:55:25 -04:00
parent eaa0764940
commit 45fd3f4cb8

View File

@ -4097,7 +4097,7 @@ augroup fugitive_blame
autocmd FileType fugitiveblame setlocal nomodeline | if len(s:Dir()) | let &l:keywordprg = s:Keywordprg() | endif autocmd FileType fugitiveblame setlocal nomodeline | if len(s:Dir()) | let &l:keywordprg = s:Keywordprg() | endif
autocmd User Fugitive autocmd User Fugitive
\ if get(b:, 'fugitive_type') =~# '^\%(file\|blob\|blame\)$' || filereadable(@%) | \ if get(b:, 'fugitive_type') =~# '^\%(file\|blob\|blame\)$' || filereadable(@%) |
\ exe "command! -buffer -bar -bang -range=0 -nargs=* Gblame :execute s:BlameCommand(<line1>,<line2>,+'<range>',<count>,<bang>0,'<mods>',<q-reg>,<q-args>,[<f-args>])" | \ exe "command! -buffer -bar -bang -range=-1 -nargs=* Gblame :execute s:BlameCommand(<line1>,<line2>,+'<range>',<count>,<bang>0,'<mods>',<q-reg>,<q-args>,[<f-args>])" |
\ endif \ endif
autocmd ColorScheme,GUIEnter * call s:RehighlightBlame() autocmd ColorScheme,GUIEnter * call s:RehighlightBlame()
autocmd BufWinLeave * execute getwinvar(+bufwinnr(+expand('<abuf>')), 'fugitive_leave') autocmd BufWinLeave * execute getwinvar(+bufwinnr(+expand('<abuf>')), 'fugitive_leave')
@ -4127,8 +4127,8 @@ function! s:BlameCommand(line1, line2, range, count, bang, mods, reg, arg, args)
call s:throw('unsupported option') call s:throw('unsupported option')
endif endif
let cmd = ['--no-pager', 'blame', '--show-number'] let cmd = ['--no-pager', 'blame', '--show-number']
if a:count if a:count > 0
let cmd += ['-L', a:line1 . ',' . a:line1] let cmd += ['-L', (a:line1 ? a:line1 : line('.')) . ',' . (a:line1 ? a:line1 : line('.'))]
endif endif
let cmd += a:args let cmd += a:args
if s:DirCommitFile(@%)[1] =~# '\D\|..' if s:DirCommitFile(@%)[1] =~# '\D\|..'
@ -4154,8 +4154,8 @@ function! s:BlameCommand(line1, line2, range, count, bang, mods, reg, arg, args)
if v:shell_error if v:shell_error
call s:throw(join(readfile(error),"\n")) call s:throw(join(readfile(error),"\n"))
endif endif
if a:count if a:count > 0
let edit = s:Mods(a:mods) . get(['edit', 'split', 'pedit'], a:line2 - a:line1, ' split') let edit = s:Mods(a:mods) . get(['edit', 'split', 'pedit'], a:count - (a:line1 ? a:line1 : 1), 'split')
return s:BlameCommit(edit, get(readfile(temp), 0, '')) return s:BlameCommit(edit, get(readfile(temp), 0, ''))
else else
for winnr in range(winnr('$'),1,-1) for winnr in range(winnr('$'),1,-1)
@ -4645,16 +4645,16 @@ endfunction
function! fugitive#MapJumps(...) abort function! fugitive#MapJumps(...) abort
if !&modifiable if !&modifiable
if get(b:, 'fugitive_type', '') ==# 'blob' if get(b:, 'fugitive_type', '') ==# 'blob'
nnoremap <buffer> <silent> <CR> :<C-U>.Gblame<CR> nnoremap <buffer> <silent> <CR> :<C-U>0,3Gblame<CR>
else else
nnoremap <buffer> <silent> <CR> :<C-U>exe <SID>GF("edit")<CR> nnoremap <buffer> <silent> <CR> :<C-U>exe <SID>GF("edit")<CR>
endif endif
if get(b:, 'fugitive_type', '') ==# 'blob' if get(b:, 'fugitive_type', '') ==# 'blob'
nnoremap <buffer> <silent> o :<C-U>.,.+1Gblame<CR> nnoremap <buffer> <silent> o :<C-U>0,2Gblame<CR>
nnoremap <buffer> <silent> S :<C-U>echoerr 'Use gO'<CR> nnoremap <buffer> <silent> S :<C-U>echoerr 'Use gO'<CR>
nnoremap <buffer> <silent> gO :<C-U>vertical .,.+1Gblame<CR> nnoremap <buffer> <silent> gO :<C-U>vertical 0,2Gblame<CR>
nnoremap <buffer> <silent> O :<C-U>tab .,.+1Gblame<CR> nnoremap <buffer> <silent> O :<C-U>tab 0,2Gblame<CR>
nnoremap <buffer> <silent> p :<C-U>.,.+2Gblame<CR> nnoremap <buffer> <silent> p :<C-U>0,3Gblame<CR>
else else
nnoremap <buffer> <silent> o :<C-U>exe <SID>GF("split")<CR> nnoremap <buffer> <silent> o :<C-U>exe <SID>GF("split")<CR>
nnoremap <buffer> <silent> S :<C-U>echoerr 'Use gO'<CR> nnoremap <buffer> <silent> S :<C-U>echoerr 'Use gO'<CR>