++vgetc_busy;
if (advance)
+ {
KeyStuffed = FALSE;
+ typebuf_was_empty = FALSE;
+ }
init_typebuf();
start_stuff();
#ifdef FEAT_CMDWIN
tc = c;
#endif
+ // set a flag to indicate this wasn't a normal char
+ if (advance)
+ typebuf_was_empty = TRUE;
+
// return from main_loop()
if (pending_exmode_active)
exmode_active = EXMODE_NORMAL;
= {NULL, NULL, 0, 0, 0, 0, 0, 0, 0}
#endif
;
+// Flag used to indicate that vgetorpeek() returned a char like Esc when the
+// :normal argument was exhausted.
+EXTERN int typebuf_was_empty INIT(= FALSE);
+
EXTERN int ex_normal_busy INIT(= 0); // recursiveness of ex_normal()
#ifdef FEAT_EVAL
EXTERN int in_feedkeys INIT(= 0); // ex_normal_busy set in feedkeys()
#endif
}
#ifdef FEAT_CMDWIN
- else if (cmdwin_type != 0 && ex_normal_busy)
+ else if (cmdwin_type != 0 && ex_normal_busy && typebuf_was_empty)
{
// When :normal runs out of characters while in the command line window
- // vgetorpeek() will return ESC. Exit the cmdline window to break the
- // loop.
+ // vgetorpeek() will repeatedly return ESC. Exit the cmdline window to
+ // break the loop.
cmdwin_result = K_IGNORE;
return;
}
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 234,
/**/
233,
/**/