aboutsummaryrefslogtreecommitdiff
path: root/runtime/autoload/provider/ruby.vim
diff options
context:
space:
mode:
authorAlex Genco <alexgenco@gmail.com>2016-03-10 18:56:47 -0800
committerAlex Genco <alexgenco@gmail.com>2016-03-10 19:01:44 -0800
commit3cb9970acf935c1b8627cfd244757b68989ad146 (patch)
treeb082163cf8ea4d43702114592323c46cef709057 /runtime/autoload/provider/ruby.vim
parentbb020df0f52c3eec6cb84ce1a786fa3a90904815 (diff)
downloadrneovim-3cb9970acf935c1b8627cfd244757b68989ad146.tar.gz
rneovim-3cb9970acf935c1b8627cfd244757b68989ad146.tar.bz2
rneovim-3cb9970acf935c1b8627cfd244757b68989ad146.zip
Ruby remote plugin support
Diffstat (limited to 'runtime/autoload/provider/ruby.vim')
-rw-r--r--runtime/autoload/provider/ruby.vim34
1 files changed, 34 insertions, 0 deletions
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