mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	 241956720d
			
		
	
	241956720d
	
	
	
		
			
			Value of 1 cannot be used, because users might set that in their vimrc to _disable_ a provider, which would confuse :checkhealth and has().
		
			
				
	
	
		
			73 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " The Ruby provider helper
 | |
| if exists('g:loaded_ruby_provider')
 | |
|   finish
 | |
| endif
 | |
| let g:loaded_ruby_provider = 1
 | |
| 
 | |
| function! provider#ruby#Detect() abort
 | |
|   return s:prog
 | |
| endfunction
 | |
| 
 | |
| function! provider#ruby#Prog() abort
 | |
|   return s:prog
 | |
| endfunction
 | |
| 
 | |
| function! provider#ruby#Require(host) abort
 | |
|   let prog = provider#ruby#Prog()
 | |
|   let ruby_plugins = remote#host#PluginsForHost(a:host.name)
 | |
| 
 | |
|   for plugin in ruby_plugins
 | |
|     let prog .= " " . shellescape(plugin.path)
 | |
|   endfor
 | |
| 
 | |
|   return provider#Poll(prog, a:host.orig_name, '$NVIM_RUBY_LOG_FILE')
 | |
| endfunction
 | |
| 
 | |
| function! provider#ruby#Call(method, args) abort
 | |
|   if s:err != ''
 | |
|     echoerr s:err
 | |
|     return
 | |
|   endif
 | |
| 
 | |
|   if !exists('s:host')
 | |
|     try
 | |
|       let s:host = remote#host#Require('legacy-ruby-provider')
 | |
|     catch
 | |
|       let s:err = v:exception
 | |
|       echohl WarningMsg
 | |
|       echomsg v:exception
 | |
|       echohl None
 | |
|       return
 | |
|     endtry
 | |
|   endif
 | |
|   return call('rpcrequest', insert(insert(a:args, 'ruby_'.a:method), s:host))
 | |
| endfunction
 | |
| 
 | |
| function! s:detect()
 | |
|   if exists("g:ruby_host_prog")
 | |
|     return expand(g:ruby_host_prog)
 | |
|   elseif has('win32')
 | |
|     return exepath('neovim-ruby-host.bat')
 | |
|   else
 | |
|     let p = exepath('neovim-ruby-host')
 | |
|     if empty(p)
 | |
|       return ''
 | |
|     endif
 | |
|     " neovim-ruby-host could be an rbenv shim for another Ruby version.
 | |
|     call system(p)
 | |
|     return v:shell_error ? '' : p
 | |
|   end
 | |
| endfunction
 | |
| 
 | |
| let s:err = ''
 | |
| let s:prog = s:detect()
 | |
| let s:plugin_path = expand('<sfile>:p:h') . '/script_host.rb'
 | |
| let g:loaded_ruby_provider = empty(s:prog) ? 1 : 2
 | |
| 
 | |
| if g:loaded_ruby_provider != 2
 | |
|   let s:err = 'Cannot find the neovim RubyGem. Try :checkhealth'
 | |
| endif
 | |
| 
 | |
| call remote#host#RegisterClone('legacy-ruby-provider', 'ruby')
 | |
| call remote#host#RegisterPlugin('legacy-ruby-provider', s:plugin_path, [])
 |