From b2e8c65e354011e1bb741c1fd8c226a9f4601d57 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Fri, 28 Feb 2020 05:34:09 +0100 Subject: [PATCH] Improve/harden jedi#setup_python_imports In particular it should not try to import `jedi_vim_debug` during error handling "unprotected", which might hide the real error on Python 2 at least. Ref: https://github.com/davidhalter/jedi-vim/issues/998#issuecomment-592305240 --- autoload/jedi.vim | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/autoload/jedi.vim b/autoload/jedi.vim index 39da3e9..d21afec 100644 --- a/autoload/jedi.vim +++ b/autoload/jedi.vim @@ -160,14 +160,19 @@ function! jedi#setup_python_imports(py_version) abort let g:_jedi_init_error = 0 let init_lines = [ \ 'import vim', + \ 'def _jedi_handle_exc(exc_info):', + \ ' try:', + \ ' from jedi_vim_debug import format_exc_info', + \ ' vim.vars["_jedi_init_error"] = format_exc_info(exc_info)', + \ ' except Exception:', + \ ' import traceback', + \ ' vim.vars["_jedi_init_error"] = "\\n".join(traceback.format_exception(*exc_info))', \ 'try:', \ ' import jedi_vim', \ ' if hasattr(jedi_vim, "jedi_import_error"):', - \ ' from jedi_vim_debug import format_exc_info', - \ ' vim.vars["_jedi_init_error"] = format_exc_info(jedi_vim.jedi_import_error)', + \ ' _jedi_handle_exc(jedi_vim.jedi_import_error)', \ 'except Exception as exc:', - \ ' from jedi_vim_debug import format_exc_info', - \ ' vim.vars["_jedi_init_error"] = format_exc_info()', + \ ' _jedi_handle_exc(sys.exc_info())', \ ] exe 'PythonJedi exec('''.escape(join(init_lines, '\n'), "'").''')' if g:_jedi_init_error isnot 0