diff --git a/autoload/utility.vim b/autoload/utility.vim index bba4fd8..28eb0c5 100644 --- a/autoload/utility.vim +++ b/autoload/utility.vim @@ -28,6 +28,14 @@ function! utility#has_unsaved_changes(file) return getbufvar(a:file, "&mod") endfunction +function! utility#has_fresh_changes(file) + return getbufvar(a:file, 'changedtick') != getbufvar(a:file, 'gitgutter_last_tick', -1) +endfunction + +function! utility#save_last_seen_change(file) + call setbufvar(a:file, 'gitgutter_last_tick', getbufvar(a:file, 'changedtick')) +endfunction + " https://github.com/tpope/vim-dispatch/blob/9cdd05a87f8a47120335be03dfcd8358544221cd/autoload/dispatch/windows.vim#L8-L17 function! utility#escape(str) if &shellxquote ==# '"' diff --git a/plugin/gitgutter.vim b/plugin/gitgutter.vim index 027683a..6887e15 100644 --- a/plugin/gitgutter.vim +++ b/plugin/gitgutter.vim @@ -54,7 +54,7 @@ command GitGutterAll call GitGutterAll() function! GitGutter(file, realtime) call utility#set_file(a:file) if utility#is_active() - if !a:realtime || getbufvar(a:file, 'changedtick') != getbufvar(a:file, 'gitgutter_last_tick', -1) + if !a:realtime || utility#has_fresh_changes(a:file) let diff = diff#run_diff(a:realtime || utility#has_unsaved_changes(a:file)) let s:hunks = diff#parse_diff(diff) let modified_lines = diff#process_hunks(s:hunks) @@ -68,7 +68,7 @@ function! GitGutter(file, realtime) endif endif call sign#update_signs(a:file, modified_lines) - call setbufvar(a:file, 'gitgutter_last_tick', getbufvar(a:file, 'changedtick')) + call utility#save_last_seen_change(a:file) endif else call hunk#reset()