diff options
| -rw-r--r-- | runtime/autoload/provider/ruby.vim | 16 | 
1 files changed, 4 insertions, 12 deletions
| diff --git a/runtime/autoload/provider/ruby.vim b/runtime/autoload/provider/ruby.vim index 3fb65fecdf..3d1f7a4138 100644 --- a/runtime/autoload/provider/ruby.vim +++ b/runtime/autoload/provider/ruby.vim @@ -4,16 +4,7 @@ if exists('g:loaded_ruby_provider')  endif  let g:loaded_ruby_provider = 1 -let s:stderr = {} -let s:job_opts = {'rpc': v:true} - -function! s:job_opts.on_stderr(chan_id, data, event) abort -  let stderr = get(s:stderr, a:chan_id, ['']) -  let last = remove(stderr, -1) -  let a:data[0] = last.a:data[0] -  call extend(stderr, a:data) -  let s:stderr[a:chan_id] = stderr -endfunction +let s:job_opts = {'rpc': v:true, 'stderr_buffered': v:true}  function! provider#ruby#Detect() abort    if exists("g:ruby_host_prog") @@ -36,14 +27,15 @@ function! provider#ruby#Require(host) abort    endfor    try -    let channel_id = jobstart(prog, s:job_opts) +    let job = copy(s:job_opts) +    let channel_id = jobstart(prog, job)      if rpcrequest(channel_id, 'poll') ==# 'ok'        return channel_id      endif    catch      echomsg v:throwpoint      echomsg v:exception -    for row in get(s:stderr, channel_id, []) +    for row in get(job, 'stderr', [])        echomsg row      endfor    endtry | 
