Patch 8.1.0696
Problem: When test_edit fails 'insertmode' may not be reset and the next
test may get stuck. (James McCoy)
Solution: Always reset 'insertmode' after executing a test. Avoid that an
InsertCharPre autocommand or a 'complete' function can change the
state. (closes #3768)
Files: src/testdir/runtest.vim, src/edit.c
*** ../vim-8.1.0695/src/testdir/runtest.vim 2018-12-15 17:46:18.909870746
+0100
--- src/testdir/runtest.vim 2019-01-06 15:23:08.248156368 +0100
***************
*** 26,32 ****
" It will be called after each Test_ function.
"
" When debugging a test it can be useful to add messages to v:errors:
! " call add(v:errors, "this happened")
" Without the +eval feature we can't run these tests, bail out.
--- 26,32 ----
" It will be called after each Test_ function.
"
" When debugging a test it can be useful to add messages to v:errors:
! " call add(v:errors, "this happened")
" Without the +eval feature we can't run these tests, bail out.
***************
*** 149,154 ****
--- 149,158 ----
endtry
endif
+ " In case 'insertmode' was set and something went wrong, make sure it is
+ " reset to avoid trouble with anything else.
+ set noinsertmode
+
if exists("*TearDown")
try
call TearDown()
*** ../vim-8.1.0695/src/edit.c 2019-01-02 23:47:14.360433274 +0100
--- src/edit.c 2019-01-06 15:21:36.636912346 +0100
***************
*** 4219,4224 ****
--- 4219,4225 ----
win_T *curwin_save;
buf_T *curbuf_save;
typval_T rettv;
+ int save_State = State;
funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu;
if (*funcname == NUL)
***************
*** 4272,4277 ****
--- 4273,4281 ----
ins_compl_add_dict(matchdict);
theend:
+ // Restore State, it might have been changed.
+ State = save_State;
+
if (matchdict != NULL)
dict_unref(matchdict);
if (matchlist != NULL)
***************
*** 5549,5554 ****
--- 5553,5559 ----
pos_T pos;
win_T *curwin_save;
buf_T *curbuf_save;
+ int save_State = State;
/* Call 'completefunc' or 'omnifunc' and get pattern length as a
* string */
***************
*** 5572,5577 ****
--- 5577,5584 ----
curwin_save = curwin;
curbuf_save = curbuf;
col = call_func_retnr(funcname, 2, args);
+
+ State = save_State;
if (curwin_save != curwin || curbuf_save != curbuf)
{
EMSG(_(e_complwin));
***************
*** 10730,10735 ****
--- 10737,10743 ----
{
char_u *res;
char_u buf[MB_MAXBYTES + 1];
+ int save_State = State;
/* Return quickly when there is nothing to do. */
if (!has_insertcharpre())
***************
*** 10762,10767 ****
--- 10770,10778 ----
set_vim_var_string(VV_CHAR, NULL, -1); /* clear v:char */
--textlock;
+ // Restore the State, it may have been changed.
+ State = save_State;
+
return res;
}
#endif
*** ../vim-8.1.0695/src/version.c 2019-01-06 13:10:46.332499076 +0100
--- src/version.c 2019-01-06 14:27:17.537077362 +0100
***************
*** 801,802 ****
--- 801,804 ----
{ /* Add new patch number below this line */
+ /**/
+ 696,
/**/
--
Corduroy pillows: They're making headlines!
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.