aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Genco <alexgenco@gmail.com>2017-06-03 17:19:49 -0700
committerAlex Genco <alexgenco@gmail.com>2017-06-17 08:20:00 -0700
commitf400c6f05fb2adbc1cf47be761c3dbea3419806f (patch)
treeb9d7ffe9089ff0d9cb37b8192a753c89cc3ca2e8
parent826210a465f1b8bae2c6bc70ca73d610897d954c (diff)
downloadrneovim-f400c6f05fb2adbc1cf47be761c3dbea3419806f.tar.gz
rneovim-f400c6f05fb2adbc1cf47be761c3dbea3419806f.tar.bz2
rneovim-f400c6f05fb2adbc1cf47be761c3dbea3419806f.zip
runtime: Allow overriding ruby host with g:ruby_host_prog
This allows users who have per-project Ruby versions (e.g. with `rvm`) to pin to a particular gem installation. For example: `let g:ruby_host_prog = 'rvm system do neovim-ruby-host'`
-rw-r--r--runtime/autoload/provider/ruby.vim12
1 files changed, 8 insertions, 4 deletions
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