1" Common functions for providers
2
3" Start the provider and perform a 'poll' request
4"
5" Returns a valid channel on success
6function! provider#Poll(argv, orig_name, log_env, ...) abort
7  let job = {'rpc': v:true, 'stderr_buffered': v:true}
8  if a:0
9    let job = extend(job, a:1)
10  endif
11  try
12    let channel_id = jobstart(a:argv, job)
13    if channel_id > 0 && rpcrequest(channel_id, 'poll') ==# 'ok'
14      return channel_id
15    endif
16  catch
17    echomsg v:throwpoint
18    echomsg v:exception
19    for row in get(job, 'stderr', [])
20      echomsg row
21    endfor
22  endtry
23  throw remote#host#LoadErrorForHost(a:orig_name, a:log_env)
24endfunction
25