normalize async job control api for vim and neovim
function! s:handler(job_id, data, event_type)
echo a:job_id . ' ' . a:event_type
echo join(a:data, "\n")
endfunction
if has('win32') || has('win64')
let argv = ['cmd', '/c', 'dir c:\ /b']
else
let argv = ['bash', '-c', 'ls']
endif
let jobid = async#job#start(argv, {
\ 'on_stdout': function('s:handler'),
\ 'on_stderr': function('s:handler'),
\ 'on_exit': function('s:handler'),
\ })
if jobid > 0
echom 'job started'
else
echom 'job failed to start'
endif
" call async#job#stop(job)
- Fallback to sync
system()
calls in vim that doesn't supportjob
job_stop
andjob_send
is treated as noop when usingsystem()
on_stderr
doesn't work when usingsystem()
- Fallback to python/ruby threads and vimproc instead of using
system()
for better compatibility (PRs welcome!!!)