diff --git a/autoload/jedi.vim b/autoload/jedi.vim index b1041a7..637cda1 100644 --- a/autoload/jedi.vim +++ b/autoload/jedi.vim @@ -104,7 +104,7 @@ endfunction function! jedi#add_goto_window() set lazyredraw cclose - execute 'belowright copen 3' + execute 'belowright copen '.g:jedi#quickfix_window_height set nolazyredraw if g:jedi#use_tabs_not_buffers == 1 map :call jedi#goto_window_on_enter() diff --git a/plugin/jedi.vim b/plugin/jedi.vim index 707ad1d..75d0a8d 100644 --- a/plugin/jedi.vim +++ b/plugin/jedi.vim @@ -35,7 +35,8 @@ let s:settings = { \ 'show_function_definition': 1, \ 'function_definition_escape': "'≡'", \ 'auto_close_doc': 1, - \ 'popup_select_first': 1 + \ 'popup_select_first': 1, + \ 'quickfix_window_height': 10 \ } for [key, val] in items(s:settings) @@ -51,4 +52,51 @@ if g:jedi#auto_initialization " order of invocation. autocmd FileType Python setlocal omnifunc=jedi#complete switchbuf=useopen " needed for pydoc endif + +fun! Pyedit(cmd, args) +" args are the same as for the :edit command +" cmd: one of edit, split, vsplit, tabedit, ... +py << EOF +import vim +import jedi +import os.path as osp +from shlex import split as shsplit + +cmd = vim.eval('a:cmd') +args = shsplit(vim.eval('a:args')) +text = 'import %s' % args.pop() +scr = jedi.Script(text, 1, len(text), '') +try: + path = scr.goto()[0].module_path +except IndexError: + path = None +if path and osp.isfile(path): + cmd_args = ' '.join([a.replace(' ', '\\ ') for a in args]) + vim.command('%s %s %s' % (cmd, cmd_args , path.replace(' ', '\ '))) +EOF +endfun + +fun! Pyedit_comp(argl, cmdl, pos) +py << EOF +import vim +import re +import json +argl = vim.eval('a:argl') +try: + import jedi +except ImportError as err: + print('Pyedit completion requires jedi module: https://github.com/davidhalter/jedi') + comps = [] +else: + text = 'import %s' % argl + script=jedi.Script(text, 1, len(text), '') + comps = [ '%s%s' % (argl, c.complete) for c in script.complete()] +vim.command("let comps = '%s'" % '\n'.join(comps)) +EOF +return comps +endfun +command! -nargs=1 -complete=custom,Pyedit_comp Pyedit :call Pyedit('edit', ) +" command! -nargs=1 -complete=custom,Pyedit_comp Pysplit :call Pyedit('split', ) +" command! -nargs=1 -complete=custom,Pyedit_comp Pyvsplit :call Pyedit('vsplit', ) +" command! -nargs=1 -complete=custom,Pyedit_comp Pytabe :call Pyedit('tabe', ) " vim: set et ts=4: