mirror of
https://github.com/neovim/neovim.git
synced 2026-04-25 00:35:36 +00:00
Add if_python3 support
Reviewed-by: Michael Reed <m.reed@mykolab.com>, Daniel Hahler <github@thequod.de> Helped-by: Daniel Hahler <github@thequod.de>
This commit is contained in:
47
runtime/autoload/provider/python3.vim
Normal file
47
runtime/autoload/provider/python3.vim
Normal file
@@ -0,0 +1,47 @@
|
||||
" The Python3 provider uses a Python3 host to emulate an environment for running
|
||||
" python3 plugins. See ":help nvim-provider" for more information.
|
||||
"
|
||||
" Associating the plugin with the Python3 host is the first step because
|
||||
" plugins will be passed as command-line arguments
|
||||
|
||||
if exists('g:loaded_python3_provider')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_python3_provider = 1
|
||||
|
||||
let [s:prog, s:err] = provider#pythonx#Detect(3)
|
||||
if s:prog == ''
|
||||
" Detection failed
|
||||
finish
|
||||
endif
|
||||
|
||||
function! provider#python3#Prog()
|
||||
return s:prog
|
||||
endfunction
|
||||
|
||||
function! provider#python3#Error()
|
||||
return s:err
|
||||
endfunction
|
||||
|
||||
let s:plugin_path = expand('<sfile>:p:h').'/script_host.py'
|
||||
|
||||
" The Python3 provider plugin will run in a separate instance of the Python3
|
||||
" host.
|
||||
call remote#host#RegisterClone('legacy-python3-provider', 'python3')
|
||||
call remote#host#RegisterPlugin('legacy-python3-provider', s:plugin_path, [])
|
||||
|
||||
function! provider#python3#Call(method, args)
|
||||
if !exists('s:host')
|
||||
let s:rpcrequest = function('rpcrequest')
|
||||
|
||||
" Ensure that we can load the Python3 host before bootstrapping
|
||||
try
|
||||
let s:host = remote#host#Require('legacy-python3-provider')
|
||||
catch
|
||||
echomsg v:exception
|
||||
finish
|
||||
endtry
|
||||
endif
|
||||
|
||||
return call(s:rpcrequest, insert(insert(a:args, 'python_'.a:method), s:host))
|
||||
endfunction
|
||||
Reference in New Issue
Block a user