Vim: use close_cb to trigger exit_cb
Before Vim 8.0.50, an exited job was only detected with a potentially huge
delay.
Thus, for versions smaller than 8.0.50, we add a close_cb callback that runs
job_status() which in return runs the exit_cb callback immeditely if the job was
found to be dead.
Vim patch:
01688ad545
References: #216.
This commit is contained in:
parent
45a28549bd
commit
6364e8f7f2
@ -36,6 +36,14 @@ function! s:callback_stdout_vim(_job_id, data) dict abort
|
||||
let self.stdoutbuf += [a:data]
|
||||
endfunction
|
||||
|
||||
" Function: s:callback_close {{{1
|
||||
function! s:callback_close(channel) dict abort
|
||||
try
|
||||
silent! call job_status(ch_getjob(a:channel))
|
||||
catch
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" Function: s:callback_exit {{{1
|
||||
function! s:callback_exit(_job_id, exitval, ...) dict abort
|
||||
call sy#verbose('callback_exit()', self.vcs)
|
||||
@ -83,11 +91,15 @@ function! sy#repo#get_diff_start(vcs, do_register) abort
|
||||
|
||||
try
|
||||
execute chdir fnameescape(b:sy_info.dir)
|
||||
let b:sy_job_id_{a:vcs} = job_start(cmd, {
|
||||
let opts = {
|
||||
\ 'in_io': 'null',
|
||||
\ 'out_cb': function('s:callback_stdout_vim', options),
|
||||
\ 'exit_cb': function('s:callback_exit', options),
|
||||
\ })
|
||||
\ }
|
||||
if !has('patch-8.0.50')
|
||||
let opts.close_cb = function('s:callback_close')
|
||||
endif
|
||||
let b:sy_job_id_{a:vcs} = job_start(cmd, opts)
|
||||
finally
|
||||
execute chdir fnameescape(cwd)
|
||||
endtry
|
||||
|
@ -567,7 +567,7 @@ The plugin is slow!~
|
||||
Line highlighting without showing signs?~
|
||||
|
||||
The line highlighting relies on signs being placed. The sign column is being
|
||||
shown automatically when there are placed signs.
|
||||
shown automatically if there are placed signs.
|
||||
|
||||
With a recent Vim, you can change that behaviour using 'signcolumn'.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user