forked from VimPlug/jedi-vim
Inline Python init script
Fixes https://github.com/davidhalter/jedi-vim/issues/726.
This commit is contained in:
@@ -141,11 +141,9 @@ endfunction
|
|||||||
let s:python_version = 'null'
|
let s:python_version = 'null'
|
||||||
function! jedi#setup_py_version(py_version) abort
|
function! jedi#setup_py_version(py_version) abort
|
||||||
if a:py_version == 2
|
if a:py_version == 2
|
||||||
let cmd_init = 'pyfile'
|
|
||||||
let cmd_exec = 'python'
|
let cmd_exec = 'python'
|
||||||
let s:python_version = 2
|
let s:python_version = 2
|
||||||
elseif a:py_version == 3
|
elseif a:py_version == 3
|
||||||
let cmd_init = 'py3file'
|
|
||||||
let cmd_exec = 'python3'
|
let cmd_exec = 'python3'
|
||||||
let s:python_version = 3
|
let s:python_version = 3
|
||||||
else
|
else
|
||||||
@@ -153,15 +151,35 @@ function! jedi#setup_py_version(py_version) abort
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
execute 'command! -nargs=1 PythonJedi '.cmd_exec.' <args>'
|
execute 'command! -nargs=1 PythonJedi '.cmd_exec.' <args>'
|
||||||
let init_script = s:script_path.'/jedi_vim_init.py'
|
|
||||||
if !filereadable(init_script)
|
let s:init_outcome = 0
|
||||||
throw printf('jedi#setup_py_version: init-script is not readable (%s).', init_script)
|
PythonJedi << EOF
|
||||||
|
try:
|
||||||
|
import vim
|
||||||
|
import os, sys
|
||||||
|
jedi_path = os.path.join(vim.eval('expand(s:script_path)'), 'jedi')
|
||||||
|
sys.path.insert(0, jedi_path)
|
||||||
|
|
||||||
|
jedi_vim_path = vim.eval('expand(s:script_path)')
|
||||||
|
if jedi_vim_path not in sys.path: # Might happen when reloading.
|
||||||
|
sys.path.insert(0, jedi_vim_path)
|
||||||
|
except Exception as excinfo:
|
||||||
|
vim.command('let s:init_outcome = "error when adding to sys.path: {0}: {1}"'.format(excinfo.__class__.__name__, excinfo))
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
import jedi_vim
|
||||||
|
except Exception as excinfo:
|
||||||
|
vim.command('let s:init_outcome = "error when importing jedi_vim: {0}: {1}"'.format(excinfo.__class__.__name__, excinfo))
|
||||||
|
else:
|
||||||
|
vim.command('let s:init_outcome = 1')
|
||||||
|
finally:
|
||||||
|
sys.path.remove(jedi_path)
|
||||||
|
EOF
|
||||||
|
if !exists('s:init_outcome')
|
||||||
|
throw 'jedi#setup_py_version: failed to run Python for initialization.'
|
||||||
|
elseif s:init_outcome isnot 1
|
||||||
|
throw printf('jedi#setup_py_version: %s.', s:init_outcome)
|
||||||
endif
|
endif
|
||||||
try
|
|
||||||
execute cmd_init.' '.init_script
|
|
||||||
catch
|
|
||||||
throw 'jedi#setup_py_version: '.v:exception
|
|
||||||
endtry
|
|
||||||
return 1
|
return 1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
"""Python initialization for jedi module."""
|
|
||||||
|
|
||||||
try:
|
|
||||||
import traceback
|
|
||||||
except Exception as excinfo:
|
|
||||||
raise Exception('Failed to import traceback: {0}'.format(excinfo))
|
|
||||||
|
|
||||||
try:
|
|
||||||
import os, sys, vim
|
|
||||||
jedi_path = os.path.join(vim.eval('expand(s:script_path)'), 'jedi')
|
|
||||||
sys.path.insert(0, jedi_path)
|
|
||||||
|
|
||||||
jedi_vim_path = vim.eval('expand(s:script_path)')
|
|
||||||
if jedi_vim_path not in sys.path: # Might happen when reloading.
|
|
||||||
sys.path.insert(0, jedi_vim_path)
|
|
||||||
except Exception as excinfo:
|
|
||||||
raise Exception('Failed to add to sys.path: {0}\n{1}'.format(
|
|
||||||
excinfo, traceback.format_exc()))
|
|
||||||
|
|
||||||
try:
|
|
||||||
import jedi_vim
|
|
||||||
except Exception as excinfo:
|
|
||||||
raise Exception('Failed to import jedi_vim: {0}\n{1}'.format(
|
|
||||||
excinfo, traceback.format_exc()))
|
|
||||||
finally:
|
|
||||||
sys.path.remove(jedi_path)
|
|
||||||
Reference in New Issue
Block a user