mirror of
https://github.com/airblade/vim-gitgutter.git
synced 2025-11-08 19:43:47 -05:00
Clear the tick on hidden buffers when gitgutter#all(1) is called.
This should allow hidden buffers to recalculate their diff when loaded after a FocusGained event fires.
This commit is contained in:
committed by
Andy Stewart
parent
64663ab24f
commit
b2be779ced
@@ -3,11 +3,19 @@ let s:t_string = type('')
|
|||||||
" Primary functions {{{
|
" Primary functions {{{
|
||||||
|
|
||||||
function! gitgutter#all(force) abort
|
function! gitgutter#all(force) abort
|
||||||
for bufnr in s:uniq(tabpagebuflist())
|
let visible = tabpagebuflist()
|
||||||
let file = expand('#'.bufnr.':p')
|
|
||||||
if !empty(file)
|
for bufnr in range(1, bufnr('$') + 1)
|
||||||
call gitgutter#init_buffer(bufnr)
|
if buflisted(bufnr)
|
||||||
call gitgutter#process_buffer(bufnr, a:force)
|
let file = expand('#'.bufnr.':p')
|
||||||
|
if !empty(file)
|
||||||
|
if index(visible, bufnr) != -1
|
||||||
|
call gitgutter#init_buffer(bufnr)
|
||||||
|
call gitgutter#process_buffer(bufnr, a:force)
|
||||||
|
elseif a:force
|
||||||
|
call s:reset_tick(bufnr)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
@@ -52,15 +60,12 @@ endfunction
|
|||||||
|
|
||||||
function! gitgutter#disable() abort
|
function! gitgutter#disable() abort
|
||||||
" get list of all buffers (across all tabs)
|
" get list of all buffers (across all tabs)
|
||||||
let buflist = []
|
for bufnr in range(1, bufnr('$') + 1)
|
||||||
for i in range(tabpagenr('$'))
|
if buflisted(bufnr)
|
||||||
call extend(buflist, tabpagebuflist(i + 1))
|
let file = expand('#'.bufnr.':p')
|
||||||
endfor
|
if !empty(file)
|
||||||
|
call s:clear(bufnr)
|
||||||
for bufnr in s:uniq(buflist)
|
endif
|
||||||
let file = expand('#'.bufnr.':p')
|
|
||||||
if !empty(file)
|
|
||||||
call s:clear(bufnr)
|
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
@@ -132,19 +137,3 @@ function! s:clear(bufnr)
|
|||||||
call gitgutter#hunk#reset(a:bufnr)
|
call gitgutter#hunk#reset(a:bufnr)
|
||||||
call s:reset_tick(a:bufnr)
|
call s:reset_tick(a:bufnr)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
if exists('*uniq') " Vim 7.4.218
|
|
||||||
function! s:uniq(list)
|
|
||||||
return uniq(sort(a:list))
|
|
||||||
endfunction
|
|
||||||
else
|
|
||||||
function! s:uniq(list)
|
|
||||||
let processed = []
|
|
||||||
for e in a:list
|
|
||||||
if index(processed, e) == -1
|
|
||||||
call add(processed, e)
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
return processed
|
|
||||||
endfunction
|
|
||||||
endif
|
|
||||||
|
|||||||
@@ -173,26 +173,10 @@ nnoremap <silent> <Plug>GitGutterPreviewHunk :GitGutterPreviewHunk<CR>
|
|||||||
|
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
function! s:flag_inactive_tabs()
|
|
||||||
let active_tab = tabpagenr()
|
|
||||||
for i in range(1, tabpagenr('$'))
|
|
||||||
if i != active_tab
|
|
||||||
call settabvar(i, 'gitgutter_force', 1)
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:on_bufenter()
|
function! s:on_bufenter()
|
||||||
if exists('t:gitgutter_didtabenter') && t:gitgutter_didtabenter
|
if exists('t:gitgutter_didtabenter') && t:gitgutter_didtabenter
|
||||||
let t:gitgutter_didtabenter = 0
|
let t:gitgutter_didtabenter = 0
|
||||||
let force = !g:gitgutter_terminal_reports_focus
|
call gitgutter#all(!g:gitgutter_terminal_reports_focus)
|
||||||
|
|
||||||
if exists('t:gitgutter_force') && t:gitgutter_force
|
|
||||||
let t:gitgutter_force = 0
|
|
||||||
let force = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
call gitgutter#all(force)
|
|
||||||
else
|
else
|
||||||
call gitgutter#init_buffer(bufnr(''))
|
call gitgutter#init_buffer(bufnr(''))
|
||||||
call gitgutter#process_buffer(bufnr(''), !g:gitgutter_terminal_reports_focus)
|
call gitgutter#process_buffer(bufnr(''), !g:gitgutter_terminal_reports_focus)
|
||||||
@@ -216,7 +200,7 @@ augroup gitgutter
|
|||||||
" vim -o file1 file2
|
" vim -o file1 file2
|
||||||
autocmd VimEnter * if winnr() != winnr('$') | call gitgutter#all(0) | endif
|
autocmd VimEnter * if winnr() != winnr('$') | call gitgutter#all(0) | endif
|
||||||
|
|
||||||
autocmd FocusGained * call gitgutter#all(1) | call s:flag_inactive_tabs()
|
autocmd FocusGained * call gitgutter#all(1)
|
||||||
|
|
||||||
autocmd ColorScheme * call gitgutter#highlight#define_sign_column_highlight() | call gitgutter#highlight#define_highlights()
|
autocmd ColorScheme * call gitgutter#highlight#define_sign_column_highlight() | call gitgutter#highlight#define_highlights()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user