Focus correct window after gq in :Git blame

Resolves: https://github.com/tpope/vim-fugitive/issues/770
This commit is contained in:
Tim Pope
2023-02-27 20:44:09 -05:00
parent 62f42f013d
commit 853ec6f58d

View File

@@ -6767,8 +6767,12 @@ function! s:BlameCommitFileLnum(...) abort
endfunction
function! s:BlameLeave() abort
let bufwinnr = bufwinnr(s:BlameBufnr())
if bufwinnr > 0
let state = s:TempState()
let bufwinnr = win_id2win(get(state, 'origin_winid'))
if bufwinnr == 0
let bufwinnr = bufwinnr(get(state, 'origin_bufnr', -1))
endif
if get(state, 'filetype', '') ==# 'fugitiveblame' && bufwinnr > 0
let bufnr = bufnr('')
exe bufwinnr . 'wincmd w'
return bufnr . 'bdelete'
@@ -6961,8 +6965,10 @@ function! s:BlameSubcommand(line1, count, range, bang, mods, options) abort
if a:mods =~# '\<tab\>'
silent tabedit %
endif
let bufnr = bufnr('')
let temp_state.origin_bufnr = bufnr
let temp_state.origin_bufnr = bufnr('')
if exists('*win_getid')
let temp_state.origin_winid = win_getid()
endif
let restore = []
let mods = substitute(a:mods, '\<tab\>', '', 'g')
for winnr in range(winnr('$'),1,-1)
@@ -6975,11 +6981,11 @@ function! s:BlameSubcommand(line1, count, range, bang, mods, options) abort
endif
endif
let win_blame_bufnr = s:BlameBufnr(winbufnr(winnr))
if getwinvar(winnr, '&scrollbind') ? win_blame_bufnr == bufnr : win_blame_bufnr > 0
if getwinvar(winnr, '&scrollbind') ? win_blame_bufnr == temp_state.origin_bufnr : win_blame_bufnr > 0
execute winbufnr(winnr).'bdelete'
endif
endfor
let restore_winnr = exists('*win_getid') ? win_getid() : 'bufwinnr(' . bufnr . ')'
let restore_winnr = get(temp_state, 'origin_winid', 'bufwinnr(' . temp_state.origin_bufnr . ')')
if !&l:scrollbind
call add(restore, 'call setwinvar(' . restore_winnr . ',"&scrollbind",0)')
endif