patch 8.2.2834: Vim9: :cexpr does not work with local variables
Problem: Vim9: :cexpr does not work with local variables.
Solution: Compile :cexpr.
diff --git a/src/vim9execute.c b/src/vim9execute.c
index f46e3f3..f260e60 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1442,6 +1442,29 @@
}
break;
+ case ISN_CEXPR_AUCMD:
+ if (trigger_cexpr_autocmd(iptr->isn_arg.number) == FAIL)
+ goto on_error;
+ break;
+
+ case ISN_CEXPR_CORE:
+ {
+ exarg_T ea;
+ int res;
+
+ CLEAR_FIELD(ea);
+ ea.cmdidx = iptr->isn_arg.cexpr.cexpr_ref->cer_cmdidx;
+ ea.forceit = iptr->isn_arg.cexpr.cexpr_ref->cer_forceit;
+ ea.cmdlinep = &iptr->isn_arg.cexpr.cexpr_ref->cer_cmdline;
+ --ectx->ec_stack.ga_len;
+ tv = STACK_TV_BOT(0);
+ res = cexpr_core(&ea, tv);
+ clear_tv(tv);
+ if (res == FAIL)
+ goto on_error;
+ }
+ break;
+
// execute Ex command from pieces on the stack
case ISN_EXECCONCAT:
{
@@ -4391,6 +4414,20 @@
smsg("%s%4d REDIR END%s", pfx, current,
iptr->isn_arg.number ? " append" : "");
break;
+ case ISN_CEXPR_AUCMD:
+ smsg("%s%4d CEXPR pre %s", pfx, current,
+ cexpr_get_auname(iptr->isn_arg.number));
+ break;
+ case ISN_CEXPR_CORE:
+ {
+ cexprref_T *cer = iptr->isn_arg.cexpr.cexpr_ref;
+
+ smsg("%s%4d CEXPR core %s%s \"%s\"", pfx, current,
+ cexpr_get_auname(cer->cer_cmdidx),
+ cer->cer_forceit ? "!" : "",
+ cer->cer_cmdline);
+ }
+ break;
case ISN_SUBSTITUTE:
{
subs_T *subs = &iptr->isn_arg.subs;