Skip to content

Commit

Permalink
patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Browse files Browse the repository at this point in the history
Problem:    'completefunc'/'omnifunc' error does not end completion.
Solution:   Check if there was an error or exception. (closes #10486,
            closes #4218)
  • Loading branch information
LemonBoy authored and brammool committed May 26, 2022
1 parent 30b9a41 commit 9bcb9ca
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 4 deletions.
9 changes: 5 additions & 4 deletions src/insexpand.c
Expand Up @@ -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;
Expand Down
24 changes: 24 additions & 0 deletions src/testdir/test_ins_complete.vim
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -734,6 +734,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
5022,
/**/
5021,
/**/
Expand Down

0 comments on commit 9bcb9ca

Please sign in to comment.