aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-06-17 23:56:23 +0200
committerGitHub <noreply@github.com>2017-06-17 23:56:23 +0200
commit3a86dd54f3875d158d059dd08a1513b6957d6216 (patch)
tree32b34ecc3865226a9695cde0fca37e09382a9aee
parentb160a8b5bad5d491903f702b612ef1be45a85711 (diff)
parent9b98b959d1600f7120e4b4e307a6637415a7f24b (diff)
downloadrneovim-3a86dd54f3875d158d059dd08a1513b6957d6216.tar.gz
rneovim-3a86dd54f3875d158d059dd08a1513b6957d6216.tar.bz2
rneovim-3a86dd54f3875d158d059dd08a1513b6957d6216.zip
Merge #6841 from alexgenco/ruby-host-prog
-rw-r--r--runtime/autoload/health/provider.vim2
-rw-r--r--runtime/autoload/provider/ruby.vim12
-rw-r--r--runtime/doc/provider.txt13
3 files changed, 22 insertions, 5 deletions
diff --git a/runtime/autoload/health/provider.vim b/runtime/autoload/health/provider.vim
index 6183182b73..31a235a397 100644
--- a/runtime/autoload/health/provider.vim
+++ b/runtime/autoload/health/provider.vim
@@ -460,7 +460,7 @@ function! s:check_ruby() abort
\ 'Are you behind a firewall or proxy?'])
return
endif
- let latest_gem = get(split(latest_gem, ' (\|, \|)$' ), 1, 'not found')
+ let latest_gem = get(split(latest_gem, 'neovim (\|, \|)$' ), 1, 'not found')
let current_gem_cmd = host .' --version'
let current_gem = s:system(current_gem_cmd)
diff --git a/runtime/autoload/provider/ruby.vim b/runtime/autoload/provider/ruby.vim
index c8ede20a75..91b7fb9f2c 100644
--- a/runtime/autoload/provider/ruby.vim
+++ b/runtime/autoload/provider/ruby.vim
@@ -16,7 +16,11 @@ function! s:job_opts.on_stderr(chan_id, data, event)
endfunction
function! provider#ruby#Detect() abort
- return exepath('neovim-ruby-host')
+ if exists("g:ruby_host_prog")
+ return g:ruby_host_prog
+ else
+ return exepath('neovim-ruby-host')
+ end
endfunction
function! provider#ruby#Prog()
@@ -24,15 +28,15 @@ function! provider#ruby#Prog()
endfunction
function! provider#ruby#Require(host) abort
- let args = [provider#ruby#Prog()]
+ let prog = provider#ruby#Prog()
let ruby_plugins = remote#host#PluginsForHost(a:host.name)
for plugin in ruby_plugins
- call add(args, plugin.path)
+ let prog .= " " . shellescape(plugin.path)
endfor
try
- let channel_id = jobstart(args, s:job_opts)
+ let channel_id = jobstart(prog, s:job_opts)
if rpcrequest(channel_id, 'poll') ==# 'ok'
return channel_id
endif
diff --git a/runtime/doc/provider.txt b/runtime/doc/provider.txt
index 8d1dd0a6cd..435646bd1c 100644
--- a/runtime/doc/provider.txt
+++ b/runtime/doc/provider.txt
@@ -99,6 +99,19 @@ RUBY PROVIDER CONFIGURATION ~
*g:loaded_ruby_provider*
To disable Ruby support: >
let g:loaded_ruby_provider = 1
+<
+ *g:ruby_host_prog*
+Command to start the Ruby host. By default this is `neovim-ruby-host`. For users
+who use per-project Ruby versions with tools like RVM or rbenv, setting this can
+prevent the need to install the `neovim` gem in every project.
+
+To use an absolute path (e.g. to an rbenv installation): >
+ let g:ruby_host_prog = '~/.rbenv/versions/2.4.1/bin/neovim-ruby-host'
+<
+
+To use the RVM "system" Ruby installation: >
+ let g:ruby_host_prog = 'rvm system do neovim-ruby-host'
+<
==============================================================================
Clipboard integration *provider-clipboard* *clipboard*