From: Yegappan Lakshmanan Date: Fri, 25 Jul 2025 16:23:58 +0000 (+0200) Subject: patch 9.1.1588: Vim9: cannot split dict inside command block X-Git-Tag: v9.1.1588^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a566a780297793b6a309ac4563bb17eedb83e6b0;p=thirdparty%2Fvim.git 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 Signed-off-by: Christian Brabandt --- diff --git a/src/dict.c b/src/dict.c index d43ca863e9..5339bb52cd 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 0008f1e51d..8e968d6efb 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 16148447b0..e9e601aa22 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, /**/