patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion

Problem:    'completefunc'/'omnifunc' error does not end completion.
Solution:   Check if there was an error or exception. (closes #10486,
            closes #4218)
This commit is contained in:
LemonBoy
2022-05-26 15:23:26 +01:00
committed by Bram Moolenaar
parent 30b9a41ad9
commit 9bcb9ca9c7
3 changed files with 31 additions and 4 deletions

View File

@ -4522,11 +4522,12 @@ get_userdefined_compl_info(colnr_T curs_col UNUSED)
return FAIL;
}
// Return value -2 means the user complete function wants to
// cancel the complete without an error.
// Return value -3 does the same as -2 and leaves CTRL-X mode.
if (col == -2)
// Return value -2 means the user complete function wants to cancel the
// complete without an error, do the same if the function did not execute
// successfully.
if (col == -2 || aborting())
return FAIL;
// Return value -3 does the same as -2 and leaves CTRL-X mode.
if (col == -3)
{
ctrl_x_mode = CTRL_X_NORMAL;

View File

@ -140,6 +140,30 @@ func Test_omni_dash()
set omnifunc=
endfunc
func Test_omni_throw()
let g:CallCount = 0
func Omni(findstart, base)
let g:CallCount += 1
if a:findstart
throw "he he he"
endif
endfunc
set omnifunc=Omni
new
try
exe "normal ifoo\<C-x>\<C-o>"
call assert_false(v:true, 'command should have failed')
catch
call assert_exception('he he he')
call assert_equal(1, g:CallCount)
endtry
bwipe!
delfunc Omni
unlet g:CallCount
set omnifunc=
endfunc
func Test_omni_autoload()
let save_rtp = &rtp
set rtp=Xruntime/some

View File

@ -734,6 +734,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
5022,
/**/
5021,
/**/