summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-02-12 13:30:17 +0000
committerBram Moolenaar <Bram@vim.org>2022-02-12 13:30:17 +0000
commit2a9b62dfa2fb91a6ede9cb4d146ca47a1db31254 (patch)
tree0dcad28a2e4afac75eb04921104e612f1276e3c0
parent620d8edba01bb2779485718dd1a99ca670ca894b (diff)
patch 8.2.4357: sticky command modifiers are too stickyv8.2.4357
Problem: sticky command modifiers are too sticky. Solution: Do not apply command modifiers to a sourced script. (closes #9751)
-rw-r--r--src/scriptfile.c5
-rw-r--r--src/testdir/test_vim9_cmd.vim12
-rw-r--r--src/version.c2
3 files changed, 19 insertions, 0 deletions
diff --git a/src/scriptfile.c b/src/scriptfile.c
index 3b9fec1cd5..2606737545 100644
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1254,6 +1254,7 @@ do_source(
#ifdef FEAT_PROFILE
proftime_T wait_start;
#endif
+ int save_sticky_cmdmod_flags = sticky_cmdmod_flags;
int trigger_source_post = FALSE;
ESTACK_CHECK_DECLARATION
@@ -1394,6 +1395,9 @@ do_source(
time_push(&tv_rel, &tv_start);
#endif
+ // "legacy" does not apply to commands in the script
+ sticky_cmdmod_flags = 0;
+
save_current_sctx = current_sctx;
current_sctx.sc_version = 1; // default script version
@@ -1618,6 +1622,7 @@ almosttheend:
theend:
vim_free(fname_exp);
+ sticky_cmdmod_flags = save_sticky_cmdmod_flags;
#ifdef FEAT_EVAL
estack_compiling = save_estack_compiling;
#endif
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 4398cbf4f6..a9309bea7f 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -106,6 +106,18 @@ def Test_cmdmod_execute()
unlet b:undo
unlet g:undone
unlet g:undtwo
+
+ # "legacy" does not apply to a loaded script
+ lines =<< trim END
+ vim9script
+ export var exported = 'x'
+ END
+ writefile(lines, 'Xvim9import.vim')
+ lines =<< trim END
+ legacy exe "import './Xvim9import.vim'"
+ END
+ v9.CheckScriptSuccess(lines)
+ delete('Xvim9import.vim')
enddef
def Test_edit_wildcards()
diff --git a/src/version.c b/src/version.c
index 590aeb712c..7e5d18fae4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4357,
+/**/
4356,
/**/
4355,