2018-02-16 11:53:02 -07:00
|
|
|
" Common functions for providers
|
|
|
|
|
|
|
|
" Start the provider and perform a 'poll' request
|
|
|
|
"
|
|
|
|
" Returns a valid channel on success
|
2020-02-05 00:04:45 -07:00
|
|
|
function! provider#Poll(argv, orig_name, log_env, ...) abort
|
2018-02-16 11:53:02 -07:00
|
|
|
let job = {'rpc': v:true, 'stderr_buffered': v:true}
|
2020-02-05 00:04:45 -07:00
|
|
|
if a:0
|
|
|
|
let job = extend(job, a:1)
|
|
|
|
endif
|
2018-02-16 11:53:02 -07:00
|
|
|
try
|
|
|
|
let channel_id = jobstart(a:argv, job)
|
|
|
|
if channel_id > 0 && rpcrequest(channel_id, 'poll') ==# 'ok'
|
|
|
|
return channel_id
|
|
|
|
endif
|
|
|
|
catch
|
|
|
|
echomsg v:throwpoint
|
|
|
|
echomsg v:exception
|
|
|
|
for row in get(job, 'stderr', [])
|
|
|
|
echomsg row
|
|
|
|
endfor
|
|
|
|
endtry
|
|
|
|
throw remote#host#LoadErrorForHost(a:orig_name, a:log_env)
|
|
|
|
endfunction
|