diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2016-03-11 12:33:41 -0500 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2016-03-11 12:33:41 -0500 |
commit | 66a75fb835575b7a909102cf2345e132648935a6 (patch) | |
tree | 1f7bc7f59f46e3d5c247b3cc22018e56f520b3c8 | |
parent | 26d189e9a1d50df6878e818f7ad0a981f9bd5d82 (diff) | |
parent | 3cb9970acf935c1b8627cfd244757b68989ad146 (diff) | |
download | rneovim-66a75fb835575b7a909102cf2345e132648935a6.tar.gz rneovim-66a75fb835575b7a909102cf2345e132648935a6.tar.bz2 rneovim-66a75fb835575b7a909102cf2345e132648935a6.zip |
Merge pull request #4410 from alexgenco/ruby_rplugin
Ruby remote plugin support
-rw-r--r-- | runtime/autoload/provider/pythonx.vim | 9 | ||||
-rw-r--r-- | runtime/autoload/provider/ruby.vim | 34 | ||||
-rw-r--r-- | runtime/autoload/remote/host.vim | 15 |
3 files changed, 51 insertions, 7 deletions
diff --git a/runtime/autoload/provider/pythonx.vim b/runtime/autoload/provider/pythonx.vim index 2a8e2d1de1..05815a4896 100644 --- a/runtime/autoload/provider/pythonx.vim +++ b/runtime/autoload/provider/pythonx.vim @@ -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 diff --git a/runtime/autoload/provider/ruby.vim b/runtime/autoload/provider/ruby.vim new file mode 100644 index 0000000000..aad8c09d28 --- /dev/null +++ b/runtime/autoload/provider/ruby.vim @@ -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 diff --git a/runtime/autoload/remote/host.vim b/runtime/autoload/remote/host.vim index b78ffab5b2..0b4eef158d 100644 --- a/runtime/autoload/remote/host.vim +++ b/runtime/autoload/remote/host.vim @@ -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')) |