1
0
forked from aniani/vim

patch 8.2.3798: a :def callback function postpones an error message

Problem:    A :def callback function postpones an error message.
Solution:   Display the error after calling the function. (closes #9340)
This commit is contained in:
Bram Moolenaar
2021-12-13 18:19:55 +00:00
parent 1e78deb077
commit 3b309f11db
4 changed files with 65 additions and 10 deletions

View File

@@ -2763,25 +2763,28 @@ enddef
func Test_silent_echo()
CheckScreendump
call Run_Test_silent_echo()
endfunc
let lines =<< trim END
def Run_Test_silent_echo()
var lines =<< trim END
vim9script
def EchoNothing()
silent echo ''
enddef
defcompile
END
call writefile(lines, 'XTest_silent_echo')
writefile(lines, 'XTest_silent_echo')
" Check that the balloon shows up after a mouse move
let buf = RunVimInTerminal('-S XTest_silent_echo', {'rows': 6})
call term_sendkeys(buf, ":abc")
call VerifyScreenDump(buf, 'Test_vim9_silent_echo', {})
# Check that the balloon shows up after a mouse move
var buf = RunVimInTerminal('-S XTest_silent_echo', {'rows': 6})
term_sendkeys(buf, ":abc")
VerifyScreenDump(buf, 'Test_vim9_silent_echo', {})
" clean up
call StopVimInTerminal(buf)
call delete('XTest_silent_echo')
endfunc
# clean up
StopVimInTerminal(buf)
delete('XTest_silent_echo')
enddef
def SilentlyError()
execute('silent! invalid')
@@ -3165,6 +3168,41 @@ def Test_opfunc()
nunmap <F3>
enddef
func Test_opfunc_error()
CheckScreendump
call Run_Test_opfunc_error()
endfunc
def Run_Test_opfunc_error()
# test that the error from Opfunc() is displayed right away
var lines =<< trim END
vim9script
def Opfunc(type: string)
try
eval [][0]
catch /nothing/ # error not caught
endtry
enddef
&operatorfunc = Opfunc
nnoremap <expr> l <SID>L()
def L(): string
return 'l'
enddef
'x'->repeat(10)->setline(1)
feedkeys('g@l', 'n')
feedkeys('llll')
END
call writefile(lines, 'XTest_opfunc_error')
var buf = RunVimInTerminal('-S XTest_opfunc_error', {rows: 6, wait_for_ruler: 0})
VerifyScreenDump(buf, 'Test_opfunc_error', {})
# clean up
StopVimInTerminal(buf)
delete('XTest_opfunc_error')
enddef
" this was crashing on exit
def Test_nested_lambda_in_closure()
var lines =<< trim END