Merge pull request #4410 from alexgenco/ruby_rplugin

Ruby remote plugin support
This commit is contained in:
Justin M. Keyes 2016-03-11 12:33:41 -05:00
commit 66a75fb835
3 changed files with 51 additions and 7 deletions

View File

@ -27,13 +27,8 @@ function! provider#pythonx#Require(host) abort
echomsg v:throwpoint
echomsg v:exception
endtry
throw 'Failed to load '. a:host.orig_name . ' host. '.
\ 'You can try to see what happened '.
\ 'by starting Neovim with the environment variable '.
\ '$NVIM_PYTHON_LOG_FILE set to a file and opening '.
\ 'the generated log file. Also, the host stderr will be available '.
\ 'in Neovim log, so it may contain useful information. '.
\ 'See also ~/.nvimlog.'
throw remote#host#LoadErrorForHost(a:host.orig_name,
\ '$NVIM_PYTHON_LOG_FILE')
endfunction
function! provider#pythonx#Detect(major_ver) abort

View File

@ -0,0 +1,34 @@
" The Ruby provider helper
if exists('s:loaded_ruby_provider')
finish
endif
let s:loaded_ruby_provider = 1
function! provider#ruby#Require(host) abort
" Collect registered Ruby plugins into args
let args = []
let ruby_plugins = remote#host#PluginsForHost(a:host.name)
for plugin in ruby_plugins
call add(args, plugin.path)
endfor
try
let channel_id = rpcstart(provider#ruby#Prog(), args)
if rpcrequest(channel_id, 'poll') == 'ok'
return channel_id
endif
catch
echomsg v:throwpoint
echomsg v:exception
endtry
throw remote#host#LoadErrorForHost(a:host.orig_name,
\ '$NVIM_RUBY_LOG_FILE')
endfunction
function! provider#ruby#Prog() abort
return 'neovim-ruby-host'
endfunction

View File

@ -207,6 +207,17 @@ function! remote#host#PluginsForHost(host) abort
endfunction
function! remote#host#LoadErrorForHost(host, log) abort
return 'Failed to load '. a:host . ' host. '.
\ 'You can try to see what happened '.
\ 'by starting Neovim with the environment variable '.
\ a:log . ' set to a file and opening the generated '.
\ 'log file. Also, the host stderr will be available '.
\ 'in Neovim log, so it may contain useful information. '.
\ 'See also ~/.nvimlog.'
endfunction
" Registration of standard hosts
" Python/Python3
@ -214,3 +225,7 @@ call remote#host#Register('python', '*',
\ function('provider#pythonx#Require'))
call remote#host#Register('python3', '*',
\ function('provider#pythonx#Require'))
" Ruby
call remote#host#Register('ruby', '*.rb',
\ function('provider#ruby#Require'))