diff options
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r-- | src/ex_docmd.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 8c74dd832..016a2b5e1 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -8358,6 +8358,7 @@ ex_at(eap) exarg_T *eap; { int c; + int prev_len = typebuf.tb_len; curwin->w_cursor.lnum = eap->line2; @@ -8383,11 +8384,10 @@ ex_at(eap) /* * Execute from the typeahead buffer. - * Originally this didn't check for the typeahead buffer to be empty, - * thus could read more Ex commands from stdin. It's not clear why, - * it is certainly unexpected. + * Continue until the stuff buffer is empty and all added characters + * have been consumed. */ - while ((!stuff_empty() || typebuf.tb_len > 0) && vpeekc() == ':') + while (!stuff_empty() || typebuf.tb_len > prev_len) (void)do_cmdline(NULL, getexline, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE); exec_from_reg = save_efr; |