diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-10-07 14:31:45 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-10-07 14:31:45 +0100 |
commit | bdc09a18fca32715687d9911a431da69186528cc (patch) | |
tree | 9d27853365bffdc04e51cfe7fc6cb75dafc8a0b0 /src/vim9cmds.c | |
parent | cf3d0eaf47a56a52b355d8faf4e59685396f9c05 (diff) | |
download | vim-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.c | 18 |
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; } /* |