aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/vars.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-04-14 07:22:01 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-04-14 09:23:40 +0800
commitbd83b587b18bb6f2ac555a992fa5b7d907de7e79 (patch)
treeabb4200b782b5ce998e660613bb3ee89aa01a211 /src/nvim/eval/vars.c
parentf64f6706e58061f0a3de530edd1f10e331cd1525 (diff)
downloadrneovim-bd83b587b18bb6f2ac555a992fa5b7d907de7e79.tar.gz
rneovim-bd83b587b18bb6f2ac555a992fa5b7d907de7e79.tar.bz2
rneovim-bd83b587b18bb6f2ac555a992fa5b7d907de7e79.zip
vim-patch:8.2.1047: Vim9: script cannot use line continuation like :def function
Problem: Vim9: script cannot use line continuation like in a :def function. Solution: Pass the getline function pointer to the eval() functions. Use it for addition and multiplication operators. https://github.com/vim/vim/commit/5409f5d8c95007216ae1190565a7a8ee9ebd7100 Omit source_nextline() and eval_next_non_blank(): Vim9 script only. N/A patches for version.c: vim-patch:8.2.1048: build failure without the eval feature Problem: Build failure without the eval feature. Solution: Add dummy typedef. https://github.com/vim/vim/commit/9d40c63c7dc8c3eb3886c58dcd334bc7f37eceba vim-patch:8.2.1052: build failure with older compilers Problem: Build failure with older compilers. Solution: Move declaration to start of block. https://github.com/vim/vim/commit/7acde51832f383f9a6d2e740cd0420b433ea841a Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat (limited to 'src/nvim/eval/vars.c')
-rw-r--r--src/nvim/eval/vars.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/nvim/eval/vars.c b/src/nvim/eval/vars.c
index a3dc0cfc04..02e526d7b6 100644
--- a/src/nvim/eval/vars.c
+++ b/src/nvim/eval/vars.c
@@ -255,13 +255,18 @@ void ex_let(exarg_T *eap)
if (eap->skip) {
emsg_skip++;
}
- int eval_flags = eap->skip ? 0 : EVAL_EVALUATE;
- i = eval0(expr, &rettv, &eap->nextcmd, eval_flags);
+ evalarg_T evalarg = {
+ .eval_flags = eap->skip ? 0 : EVAL_EVALUATE,
+ .eval_cookie = eap->getline == getsourceline ? eap->cookie : NULL,
+ };
+ i = eval0(expr, &rettv, &eap->nextcmd, &evalarg);
+ if (eap->skip) {
+ emsg_skip--;
+ }
if (eap->skip) {
if (i != FAIL) {
tv_clear(&rettv);
}
- emsg_skip--;
} else if (i != FAIL) {
(void)ex_let_vars(eap->arg, &rettv, false, semicolon, var_count, is_const, op);
tv_clear(&rettv);