patch 8.2.3833: error from term_start() not caught by try/catch
Problem: Error from term_start() not caught by try/catch.
Solution: save and restore did_emsg when applying autocommands. (Ozaki
Kiichi, closes #9361)
diff --git a/src/testdir/test_terminal3.vim b/src/testdir/test_terminal3.vim
index 9f84615..a351799 100644
--- a/src/testdir/test_terminal3.vim
+++ b/src/testdir/test_terminal3.vim
@@ -901,5 +901,25 @@
only!
endfunc
+func Test_terminal_term_start_error()
+ func s:term_start_error() abort
+ try
+ return term_start([[]])
+ catch
+ return v:exception
+ finally
+ "
+ endtry
+ endfunc
+ autocmd WinEnter * call type(0)
+
+ " Must not crash in s:term_start_error, nor the exception thrown.
+ let result = s:term_start_error()
+ call assert_match('^Vim(return):E730:', result)
+
+ autocmd! WinEnter
+ delfunc s:term_start_error
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab