diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-02-12 13:30:17 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-02-12 13:30:17 +0000 |
commit | 2a9b62dfa2fb91a6ede9cb4d146ca47a1db31254 (patch) | |
tree | 0dcad28a2e4afac75eb04921104e612f1276e3c0 | |
parent | 620d8edba01bb2779485718dd1a99ca670ca894b (diff) | |
download | vim-git-2a9b62dfa2fb91a6ede9cb4d146ca47a1db31254.tar.gz |
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.c | 5 | ||||
-rw-r--r-- | src/testdir/test_vim9_cmd.vim | 12 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 19 insertions, 0 deletions
diff --git a/src/scriptfile.c b/src/scriptfile.c index 3b9fec1cd..260673754 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 4398cbf4f..a9309bea7 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 590aeb712..7e5d18fae 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, |