let g:jedi#completions_command = 'X' source plugin/jedi.vim describe 'completions' before new set filetype=python end after " default let g:jedi#popup_select_first = 1 bd! end it 'longest in completeopt' " This gets set up with Vim only on VimEnter. if has('nvim') Expect stridx(&completeopt, 'longest') > -1 else Expect stridx(&completeopt, 'longest') == -1 doautocmd VimEnter Expect stridx(&completeopt, 'longest') > -1 endif " Do not use it for following tests. set completeopt-=longest end it 'no smart import by default' exec "normal ifrom os " Expect getline('.') == 'from os ' end it 'import' " X is the completion command normal oimporX Expect getline('.') == 'import' normal a subproX Expect getline('.') == 'import subprocess' end it 'exception' normal oIndentationErrX Expect getline('.') == 'IndentationError' " Do not remap keys (".") here, otherwise this triggers completion in " Neovim already. normal! a().filena normal aX Expect getline('.') == 'IndentationError().filename' end it 'multi complete' " NOTE: nvim results in "importErr()" here with completeopt+=longest, " but Vim is fine. " This is due to `pumvisible()` in jedi#complete_opened being true " with nvim still, but it is 0 with Vim, i.e. Vim appears to close " the pum already (with the tests). " " This might be a misunderstanding though, since the test might not " expect the "import" keyword to be offered for completion?! normal oImpXErrX() Expect getline('.') == 'ImportError()' end it 'cycling through entries popup_select_first=0' set completeopt+=longest let g:jedi#popup_select_first = 0 execute "normal oraise impX\" Expect getline('.') == 'raise ImportError' set completeopt-=longest end it 'cycling through entries popup_select_first=1' execute "normal oraise impX\" Expect getline('.') == 'raise ImportWarning' end it 'cycling through entries popup_select_first=1 and longest' set completeopt+=longest execute "normal oraise impX" Expect getline('.') == 'raise Import' " With Neovim pumvisible() is 1 in jedi#complete_opened, which then " triggers the . This is not the case with Vim. if has('nvim') execute "normal oraise impX\" Expect getline('.') == 'raise ImportWarning' execute "normal oraise impX\\" Expect getline('.') == 'raise imp' else execute "normal oraise impX\" Expect getline('.') == 'raise ImportError' execute "normal oraise impX\\" Expect getline('.') == 'raise ImportWarning' endif set completeopt-=longest end end describe 'smart completions' before new let g:jedi#smart_auto_mappings = 1 set filetype=python end after " default let g:jedi#smart_auto_mappings = 0 bd! end it 'smart import' exec "normal ifrom os " Expect getline('.') == 'from os import ' end it 'no smart import after space' exec "normal! ifrom os " exec "normal a " Expect getline('.') == 'from os ' end end " vim: et:ts=4:sw=4