aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <janedmundlazo@hotmail.com>2018-10-16 00:02:10 -0400
committerJan Edmund Lazo <janedmundlazo@hotmail.com>2018-10-16 00:03:13 -0400
commit090008f3110fa48e7e09fefc950e60c384aff70d (patch)
treeb7009faed1b1bc49f006c48ad3b72f60b7b4c1a3
parent7d7691e85f2b6f74ffd7ab6394ebe27e4e07a031 (diff)
downloadrneovim-090008f3110fa48e7e09fefc950e60c384aff70d.tar.gz
rneovim-090008f3110fa48e7e09fefc950e60c384aff70d.tar.bz2
rneovim-090008f3110fa48e7e09fefc950e60c384aff70d.zip
vim-patch:8.0.1067: try/catch in timer does not prevent it from being stopped
Problem: Using try/catch in timer does not prevent it from being stopped. Solution: Reset the exception context and use did_emsg instead of called_emsg. https://github.com/vim/vim/commit/e723c42836d971180d1bf9f98916966c5543fff1
-rw-r--r--src/nvim/testdir/test_timers.vim18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/nvim/testdir/test_timers.vim b/src/nvim/testdir/test_timers.vim
index 45e456b591..da61751bf4 100644
--- a/src/nvim/testdir/test_timers.vim
+++ b/src/nvim/testdir/test_timers.vim
@@ -189,6 +189,24 @@ func Test_input_in_timer()
call assert_equal('hello', g:val)
endfunc
+func FuncWithCaughtError(timer)
+ let g:call_count += 1
+ try
+ doesnotexist
+ catch
+ " nop
+ endtry
+endfunc
+
+func Test_timer_catch_error()
+ let g:call_count = 0
+ let timer = timer_start(10, 'FuncWithCaughtError', {'repeat': 4})
+ " Timer will not be stopped.
+ call WaitFor('g:call_count == 4')
+ sleep 50m
+ call assert_equal(4, g:call_count)
+endfunc
+
func FeedAndPeek(timer)
call test_feedinput('a')
call getchar(1)