patch 9.1.1588: Vim9: cannot split dict inside command block Commit: https://github.com/vim/vim/commit/a566a780297793b6a309ac4563bb17eedb83e6b0 Author: Yegappan Lakshmanan <yegap...@yahoo.com> Date: Fri Jul 25 18:23:58 2025 +0200
patch 9.1.1588: Vim9: cannot split dict inside command block Problem: Vim9: cannot split dict inside command block (lacygoill) Solution: Remove the current restriction (Yegappan Lakshmanan). fixes: #17841 closes: #17845 Signed-off-by: Yegappan Lakshmanan <yegap...@yahoo.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/src/dict.c b/src/dict.c index d43ca863e..5339bb52c 100644 --- a/src/dict.c +++ b/src/dict.c @@ -1075,12 +1075,12 @@ eval_dict(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int literal) had_comma = **arg == ','; if (had_comma) { - if (vim9script && (*arg)[1] != NUL && !VIM_ISWHITE((*arg)[1])) + if (vim9script && !IS_WHITE_NL_OR_NUL((*arg)[1])) { semsg(_(e_white_space_required_after_str_str), ",", *arg); goto failret; } - *arg = skipwhite(*arg + 1); + *arg = skipwhite_and_nl(*arg + 1); } // the "}" can be on the next line diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 0008f1e51..8e968d6ef 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -5457,6 +5457,22 @@ def Test_if_cond_shortcircuit_skip_indexing() v9.CheckSourceSuccess(lines) enddef +" Test for defining a dict with multiple keys in a command-block +def Test_multikey_dict_in_block() + var lines =<< trim END + vim9script + command NewCommand { + g:TestDict = { + 'key': 'v1', + 'other_key': 'v2' } + } + NewCommand + END + v9.CheckSourceSuccess(lines) + assert_equal({key: 'v1', other_key: 'v2'}, g:TestDict) + unlet g:TestDict +enddef + " Keep this last, it messes up highlighting. def Test_substitute_cmd() new diff --git a/src/version.c b/src/version.c index 16148447b..e9e601aa2 100644 --- a/src/version.c +++ b/src/version.c @@ -719,6 +719,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1588, /**/ 1587, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1ufLJA-009vUI-RI%40256bit.org.