summaryrefslogtreecommitdiff
path: root/src/vim9cmds.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-10-07 14:31:45 +0100
committerBram Moolenaar <Bram@vim.org>2022-10-07 14:31:45 +0100
commitbdc09a18fca32715687d9911a431da69186528cc (patch)
tree9d27853365bffdc04e51cfe7fc6cb75dafc8a0b0 /src/vim9cmds.c
parentcf3d0eaf47a56a52b355d8faf4e59685396f9c05 (diff)
downloadvim-git-bdc09a18fca32715687d9911a431da69186528cc.tar.gz
patch 9.0.0683: cannot specify a time for :echowindowv9.0.0683
Problem: Cannot specify a time for :echowindow. Solution: A count can be used to specify the display time. Add popup_findecho().
Diffstat (limited to 'src/vim9cmds.c')
-rw-r--r--src/vim9cmds.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/vim9cmds.c b/src/vim9cmds.c
index 3c561d1ef..d209a1664 100644
--- a/src/vim9cmds.c
+++ b/src/vim9cmds.c
@@ -1971,10 +1971,11 @@ compile_defer(char_u *arg_start, cctx_T *cctx)
* compile "echomsg expr"
* compile "echoerr expr"
* compile "echoconsole expr"
+ * compile "echowindow expr" - may have cmd_count set
* compile "execute expr"
*/
char_u *
-compile_mult_expr(char_u *arg, int cmdidx, cctx_T *cctx)
+compile_mult_expr(char_u *arg, int cmdidx, long cmd_count, cctx_T *cctx)
{
char_u *p = arg;
char_u *prev = arg;
@@ -1982,6 +1983,7 @@ compile_mult_expr(char_u *arg, int cmdidx, cctx_T *cctx)
int count = 0;
int start_ctx_lnum = cctx->ctx_lnum;
type_T *type;
+ int r = OK;
for (;;)
{
@@ -2015,23 +2017,23 @@ compile_mult_expr(char_u *arg, int cmdidx, cctx_T *cctx)
cctx->ctx_lnum = start_ctx_lnum;
if (cmdidx == CMD_echo || cmdidx == CMD_echon)
- generate_ECHO(cctx, cmdidx == CMD_echo, count);
+ r = generate_ECHO(cctx, cmdidx == CMD_echo, count);
else if (cmdidx == CMD_execute)
- generate_MULT_EXPR(cctx, ISN_EXECUTE, count);
+ r = generate_MULT_EXPR(cctx, ISN_EXECUTE, count);
else if (cmdidx == CMD_echomsg)
- generate_MULT_EXPR(cctx, ISN_ECHOMSG, count);
+ r = generate_MULT_EXPR(cctx, ISN_ECHOMSG, count);
#ifdef HAS_MESSAGE_WINDOW
else if (cmdidx == CMD_echowindow)
- generate_MULT_EXPR(cctx, ISN_ECHOWINDOW, count);
+ r = generate_ECHOWINDOW(cctx, count, cmd_count);
#endif
else if (cmdidx == CMD_echoconsole)
- generate_MULT_EXPR(cctx, ISN_ECHOCONSOLE, count);
+ r = generate_MULT_EXPR(cctx, ISN_ECHOCONSOLE, count);
else
- generate_MULT_EXPR(cctx, ISN_ECHOERR, count);
+ r = generate_MULT_EXPR(cctx, ISN_ECHOERR, count);
cctx->ctx_lnum = save_lnum;
}
- return p;
+ return r == OK ? p : NULL;
}
/*