Mercurial > vim
changeset 30174:3564cddda2a5 v9.0.0423
patch 9.0.0423: "for" and "while" not recognized after :vim9cmd and :legacy
Commit: https://github.com/vim/vim/commit/9132426334a8c7e159db93ec1b08ed61ac600aae
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Sep 9 13:27:59 2022 +0100
patch 9.0.0423: "for" and "while" not recognized after :vim9cmd and :legacy
Problem: "for" and "while" not recognized after :vim9cmd and :legacy.
(Emanuele Torre)
Solution: Recognize all the command modifiers. (closes #11087)
Add a test to check the list of modifiers.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 09 Sep 2022 14:30:05 +0200 |
parents | 6806e2884fad |
children | c3ad8b5faa7a |
files | src/ex_docmd.c src/testdir/Make_all.mak src/testdir/test_cmdmods.vim src/testdir/test_eval_stuff.vim src/version.c |
diffstat | 5 files changed, 43 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -2888,7 +2888,7 @@ parse_command_modifiers( switch (*p) { - // When adding an entry, also modify cmd_exists(). + // When adding an entry, also modify cmdmods[]. case 'a': if (!checkforcmd_noparen(&eap->cmd, "aboveleft", 3)) break; cmod->cmod_split |= WSP_ABOVE; @@ -3958,11 +3958,13 @@ static struct cmdmod {"confirm", 4, FALSE}, {"filter", 4, FALSE}, {"hide", 3, FALSE}, + {"horizontal", 3, FALSE}, {"keepalt", 5, FALSE}, {"keepjumps", 5, FALSE}, {"keepmarks", 3, FALSE}, {"keeppatterns", 5, FALSE}, {"leftabove", 5, FALSE}, + {"legacy", 3, FALSE}, {"lockmarks", 3, FALSE}, {"noautocmd", 3, FALSE}, {"noswapfile", 3, FALSE}, @@ -3974,6 +3976,7 @@ static struct cmdmod {"unsilent", 3, FALSE}, {"verbose", 4, TRUE}, {"vertical", 4, FALSE}, + {"vim9cmd", 4, FALSE}, }; /*
--- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -87,6 +87,7 @@ NEW_TESTS = \ test_clientserver \ test_close_count \ test_cmdline \ + test_cmdmods \ test_cmdwin \ test_command_count \ test_comments \ @@ -346,6 +347,7 @@ NEW_TESTS_RES = \ test_clientserver.res \ test_close_count.res \ test_cmdline.res \ + test_cmdmods.res \ test_cmdwin.res \ test_command_count.res \ test_comments.res \
new file mode 100644 --- /dev/null +++ b/src/testdir/test_cmdmods.vim @@ -0,0 +1,35 @@ +" Test for all comand modifiers in + +def Test_cmdmods_array() + # Get all the command modifiers from ex_cmds.h. + var lines = readfile('../ex_cmds.h')->filter((_, l) => l =~ 'ex_wrongmodifier,') + var cmds = lines->map((_, v) => substitute(v, '.*"\(\k*\)".*', '\1', '')) + + # :hide is both a command and a modifier + cmds->extend(['hide']) + + # Get the entries of cmdmods[] in ex_docmd.c + edit ../ex_docmd.c + var top = search('^} cmdmods[') + 1 + var bot = search('^};') - 1 + lines = getline(top, bot) + var mods = lines->map((_, v) => substitute(v, '.*"\(\k*\)".*', '\1', '')) + + # Check the lists are equal. Convert them to a dict to get a clearer error + # message. + var cmds_dict = {} + for v in cmds + cmds_dict[v] = 1 + endfor + var mods_dict = {} + for v in mods + mods_dict[v] = 1 + endfor + assert_equal(cmds_dict, mods_dict) + + bwipe! +enddef + + +" vim: shiftwidth=2 sts=2 expandtab +
index 0081d89a52a488d644f570d314bce2336251c0b0..7d8421b7250d54f0a0dcd39338a729c2faeff781 GIT binary patch literal 26234 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 L8GIWunw|dxYZY0a