1
0
forked from aniani/vim

patch 8.2.2955: Vim9: using filter in compiled command does not work

Problem:    Vim9: using filter in compiled command does not work.
Solution:   Generate EXEC including the command modifier.
This commit is contained in:
Bram Moolenaar
2021-06-06 21:38:09 +02:00
parent 6db7b6375a
commit e729ce294f
6 changed files with 63 additions and 5 deletions

View File

@@ -8536,13 +8536,30 @@ compile_put(char_u *arg, exarg_T *eap, cctx_T *cctx)
static char_u *
compile_exec(char_u *line, exarg_T *eap, cctx_T *cctx)
{
char_u *p;
int has_expr = FALSE;
char_u *nextcmd = (char_u *)"";
char_u *p;
int has_expr = FALSE;
char_u *nextcmd = (char_u *)"";
if (cctx->ctx_skip == SKIP_YES)
goto theend;
// If there was a prececing command modifier, drop it and include it in the
// EXEC command.
if (cctx->ctx_has_cmdmod)
{
garray_T *instr = &cctx->ctx_instr;
isn_T *isn = ((isn_T *)instr->ga_data) + instr->ga_len - 1;
if (isn->isn_type == ISN_CMDMOD)
{
vim_regfree(isn->isn_arg.cmdmod.cf_cmdmod
->cmod_filter_regmatch.regprog);
vim_free(isn->isn_arg.cmdmod.cf_cmdmod);
--instr->ga_len;
cctx->ctx_has_cmdmod = FALSE;
}
}
if (eap->cmdidx >= 0 && eap->cmdidx < CMD_SIZE)
{
long argt = eap->argt;