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:
@ -4522,11 +4522,12 @@ get_userdefined_compl_info(colnr_T curs_col UNUSED)
|
|||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return value -2 means the user complete function wants to
|
// Return value -2 means the user complete function wants to cancel the
|
||||||
// cancel the complete without an error.
|
// complete without an error, do the same if the function did not execute
|
||||||
// Return value -3 does the same as -2 and leaves CTRL-X mode.
|
// successfully.
|
||||||
if (col == -2)
|
if (col == -2 || aborting())
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
// Return value -3 does the same as -2 and leaves CTRL-X mode.
|
||||||
if (col == -3)
|
if (col == -3)
|
||||||
{
|
{
|
||||||
ctrl_x_mode = CTRL_X_NORMAL;
|
ctrl_x_mode = CTRL_X_NORMAL;
|
||||||
|
|||||||
@ -140,6 +140,30 @@ func Test_omni_dash()
|
|||||||
set omnifunc=
|
set omnifunc=
|
||||||
endfunc
|
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()
|
func Test_omni_autoload()
|
||||||
let save_rtp = &rtp
|
let save_rtp = &rtp
|
||||||
set rtp=Xruntime/some
|
set rtp=Xruntime/some
|
||||||
|
|||||||
@ -734,6 +734,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
5022,
|
||||||
/**/
|
/**/
|
||||||
5021,
|
5021,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user