Don't retry VCS detection for performance purposes

For each new buffer sy#repo#detect() gets run. That function invokes callbacks
for all VCS from g:signify_vcs_list.

If no callback finds a valid repo, sy#set_signs() is never called and the VCS
type of the newly registered buffer keeps its initial value: "unknown".

The next time Sy gets run in that buffer, Sy will disable itself, so that all
subsequent times it gets run it will never even attempt to get a diff.

If a buffer was added to a repo that was initialized after Sy registered that
buffer, it will remain inactive.

In those cases, :SignifyEnable will purge the cache for the current buffer and
start all over.
This commit is contained in:
Marco Hinz 2017-01-18 10:41:47 +01:00
parent f6a0a50e06
commit 3f9c4e4ea0
No known key found for this signature in database
GPG Key ID: 1C980A1B657B4A4F

View File

@ -61,8 +61,8 @@ function! sy#start() abort
call sy#verbose('Inactive buffer.') call sy#verbose('Inactive buffer.')
return return
elseif b:sy.vcs == 'unknown' elseif b:sy.vcs == 'unknown'
call sy#verbose('Retry detecting VCS.') call sy#verbose('No VCS found. Disabling.')
call sy#repo#detect(0) call sy#disable()
else else
call sy#verbose('Updating signs.') call sy#verbose('Updating signs.')
call sy#repo#get_diff_start(b:sy.vcs, 0) call sy#repo#get_diff_start(b:sy.vcs, 0)
@ -73,14 +73,7 @@ endfunction
function! sy#set_signs(diff, do_register) abort function! sy#set_signs(diff, do_register) abort
call sy#verbose('s:set_signs()', b:sy.vcs) call sy#verbose('s:set_signs()', b:sy.vcs)
if b:sy.vcs == 'unknown'
call sy#verbose('No VCS found. Disabling.')
call sy#disable()
return
endif
if a:do_register if a:do_register
" register file as active with found VCS
let b:sy.stats = [0, 0, 0] let b:sy.stats = [0, 0, 0]
let dir = fnamemodify(b:sy.path, ':h') let dir = fnamemodify(b:sy.path, ':h')
if !has_key(g:sy_cache, dir) if !has_key(g:sy_cache, dir)
@ -118,15 +111,8 @@ endfunction
" Function: #enable {{{1 " Function: #enable {{{1
function! sy#enable() abort function! sy#enable() abort
if !exists('b:sy') silent! unlet b:sy b:sy_info
call sy#start() call sy#start()
return
endif
if !b:sy.active
let b:sy.active = 1
call sy#start()
endif
endfunction endfunction
" Function: #disable {{{1 " Function: #disable {{{1