From: Bram Moolenaar Date: Wed, 20 Apr 2016 15:37:41 +0000 (+0200) Subject: patch 7.4.1758 X-Git-Tag: v7.4.1758 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=245c41070c7f37d52be43cce0cb140bd3ade6c7e;p=vim patch 7.4.1758 Problem: Triggering CursorHoldI when in CTRL-X mode causes problems. Solution: Do not trigger CursorHoldI in CTRL-X mode. Add "!" flag to feedkeys() (test with that didn't work though). --- diff --git a/src/edit.c b/src/edit.c index c813d1f89..73ed472d7 100644 --- a/src/edit.c +++ b/src/edit.c @@ -1526,7 +1526,12 @@ normalchar: #ifdef FEAT_AUTOCMD /* If typed something may trigger CursorHoldI again. */ - if (c != K_CURSORHOLD) + if (c != K_CURSORHOLD +# ifdef FEAT_COMPL_FUNC + /* but not in CTRL-X mode, a script can't restore the state */ + && ctrl_x_mode == 0 +# endif + ) did_cursorhold = FALSE; #endif diff --git a/src/eval.c b/src/eval.c index 28cc2f1a7..53a651a4d 100644 --- a/src/eval.c +++ b/src/eval.c @@ -11547,6 +11547,7 @@ f_feedkeys(typval_T *argvars, typval_T *rettv UNUSED) char_u nbuf[NUMBUFLEN]; int typed = FALSE; int execute = FALSE; + int dangerous = FALSE; char_u *keys_esc; /* This is not allowed in the sandbox. If the commands would still be @@ -11569,6 +11570,7 @@ f_feedkeys(typval_T *argvars, typval_T *rettv UNUSED) case 't': typed = TRUE; break; case 'i': insert = TRUE; break; case 'x': execute = TRUE; break; + case '!': dangerous = TRUE; break; } } } @@ -11592,9 +11594,11 @@ f_feedkeys(typval_T *argvars, typval_T *rettv UNUSED) /* Avoid a 1 second delay when the keys start Insert mode. */ msg_scroll = FALSE; - ++ex_normal_busy; + if (!dangerous) + ++ex_normal_busy; exec_normal(TRUE); - --ex_normal_busy; + if (!dangerous) + --ex_normal_busy; msg_scroll |= save_msg_scroll; } } diff --git a/src/version.c b/src/version.c index 6308789d6..0993f66fc 100644 --- a/src/version.c +++ b/src/version.c @@ -748,6 +748,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1758, /**/ 1757, /**/