patch 9.0.1687: mapset() not properly handling script ID
Problem: mapset() not properly handling script ID
Solution: replace_termcodes() may accept a script ID
closes: #12699
closes: #12697
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
diff --git a/src/term.c b/src/term.c
index 0416acc..1542045 100644
--- a/src/term.c
+++ b/src/term.c
@@ -6591,6 +6591,8 @@
replace_termcodes(
char_u *from,
char_u **bufp,
+ scid_T sid_arg UNUSED, // script ID to use for <SID>,
+ // or 0 to use current_sctx
int flags,
int *did_simplify)
{
@@ -6660,12 +6662,12 @@
*/
if (STRNICMP(src, "<SID>", 5) == 0)
{
- if (current_sctx.sc_sid <= 0)
+ if (sid_arg < 0 || (sid_arg == 0 && current_sctx.sc_sid <= 0))
emsg(_(e_using_sid_not_in_script_context));
else
{
char_u *dot;
- long sid = current_sctx.sc_sid;
+ long sid = sid_arg != 0 ? sid_arg : current_sctx.sc_sid;
src += 5;
if (in_vim9script()