diff options
Diffstat (limited to 'runtime/plugin/python_setup.vim')
-rw-r--r-- | runtime/plugin/python_setup.vim | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/runtime/plugin/python_setup.vim b/runtime/plugin/python_setup.vim new file mode 100644 index 0000000000..7b2d800f74 --- /dev/null +++ b/runtime/plugin/python_setup.vim @@ -0,0 +1,44 @@ +" Nvim plugin for loading python extensions via an external interpreter +if exists("did_python_setup") || &cp + finish +endif +let did_python_setup = 1 + + +let s:get_version = + \ ' -c "import sys; sys.stdout.write(str(sys.version_info.major))"' + +" To load the python host a python 2 executable must be available +if exists('python_interpreter') + \ && executable(g:python_interpreter) + \ && system(g:python_interpreter.s:get_version) == "2" + let s:python_interpreter = g:python_interpreter +elseif executable('python') && + \ system('python'.s:get_version) == "2" + let s:python_interpreter = 'python' +elseif executable('python2') && + \ system('python2'.s:get_version) == "2" + " In some distros, python3 is the default python + let s:python_interpreter = 'python2' +else + finish +endif + +" Execute python, import neovim and print a string. If import_result matches +" the printed string, we can probably start the host +let s:import_result = substitute(system( + \ s:python_interpreter .' -c "import neovim; print \"ok\""'), + \ '^[\s\n]*\(ok\)[\s\n]*$', '\1', '') +if s:import_result != 'ok' + finish +endif + +let s:pyhost_id = api_spawn(s:python_interpreter, + \ ['-c', 'import neovim; neovim.start_host()']) +" Evaluate an expression in the script host as an additional sanity check, and +" to block until all providers have been registered(or else some plugins loaded +" by the user's vimrc would not get has('python') == 1 +if send_call(s:pyhost_id, 'python_eval', '"o" + "k"') != 'ok' || !has('python') + " Something went wrong + api_close(s:pyhost_id) +endif |