aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/lua/executor.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-04-24 16:20:19 +0800
committerzeertzjq <zeertzjq@outlook.com>2025-02-28 18:21:08 +0800
commit6750d00fe96a04ab19cfc55fb406f6b40dbf970f (patch)
tree1cce38d22bbaccd9d250db074d7c3ba236526ce2 /src/nvim/lua/executor.c
parenta3a9f86d4a11029542a94b00044b5a181a68c9cd (diff)
downloadrneovim-6750d00fe96a04ab19cfc55fb406f6b40dbf970f.tar.gz
rneovim-6750d00fe96a04ab19cfc55fb406f6b40dbf970f.tar.bz2
rneovim-6750d00fe96a04ab19cfc55fb406f6b40dbf970f.zip
vim-patch:8.2.4603: sourcing buffer lines is too complicated
Problem: Sourcing buffer lines is too complicated. Solution: Simplify the code. Make it possible to source Vim9 script lines. (Yegappan Lakshmanan, closes vim/vim#9974) https://github.com/vim/vim/commit/85b43c6cb7d56919e245622f4e42db6d8bee4194 This commit changes the behavior of sourcing buffer lines to always have a script ID, although sourcing the same buffer always produces the same script ID. vim-patch:9.1.0372: Calling CLEAR_FIELD() on the same struct twice Problem: Calling CLEAR_FIELD() on the same struct twice. Solution: Remove the second CLEAR_FIELD(). Move the assignment of cookie.sourceing_lnum (zeertzjq). closes: vim/vim#14627 https://github.com/vim/vim/commit/f68517c1671dfedcc1555da50bc0b3de6d2842f6 Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Diffstat (limited to 'src/nvim/lua/executor.c')
-rw-r--r--src/nvim/lua/executor.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/src/nvim/lua/executor.c b/src/nvim/lua/executor.c
index bd00df395c..b1766db379 100644
--- a/src/nvim/lua/executor.c
+++ b/src/nvim/lua/executor.c
@@ -1461,19 +1461,12 @@ static void nlua_typval_exec(const char *lcmd, size_t lcmd_len, const char *name
}
}
-void nlua_source_str(const char *code, char *name)
+void nlua_exec_ga(garray_T *ga, char *name)
{
- const sctx_T save_current_sctx = current_sctx;
- current_sctx.sc_sid = SID_STR;
- current_sctx.sc_seq = 0;
- current_sctx.sc_lnum = 0;
- estack_push(ETYPE_SCRIPT, name, 0);
-
+ char *code = ga_concat_strings_sep(ga, "\n");
size_t len = strlen(code);
nlua_typval_exec(code, len, name, NULL, 0, false, NULL);
-
- estack_pop();
- current_sctx = save_current_sctx;
+ xfree(code);
}
/// Call a LuaCallable given some typvals