# HG changeset patch # User Bram Moolenaar # Date 1639746004 -3600 # Node ID 2586659245dbd734b9b788c83c67d72599f1dbc6 # Parent 6da29744e94ad6e87952e0c1472bb19e274cfb3d patch 8.2.3835: the inline-function example does not work Commit: https://github.com/vim/vim/commit/259f443a934c6f2447a14bfe54403903416a9af0 Author: Bram Moolenaar Date: Fri Dec 17 12:45:22 2021 +0000 patch 8.2.3835: the inline-function example does not work Problem: The inline-function example does not work. Solution: Drop ":let". Add EX_EXPR_ARG to CMD_var. (issue https://github.com/vim/vim/issues/9352) diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt --- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -560,7 +560,6 @@ This can be useful for a timer, for exam echom 'Handler called ' .. count }, {repeat: 3}) - The ending "}" must be at the start of a line. It can be followed by other characters, e.g.: > var d = mapnew(dict, (k, v): string => { @@ -568,17 +567,21 @@ characters, e.g.: > }) No command can follow the "{", only a comment can be used there. + *command-block* +The block can also be used for defining a user command. Inside the block Vim9 +syntax will be used. + If the statements include a dictionary, its closing bracket must not be written at the start of a line. Otherwise, it would be parsed as the end of the block. This does not work: > command NewCommand { - let g:mydict = { + g:mydict = { 'key': 'value', } # ERROR: will be recognized as the end of the block } Put the '}' after the last item to avoid this: > command NewCommand { - let g:mydict = { + g:mydict = { 'key': 'value' } } diff --git a/src/ex_cmds.h b/src/ex_cmds.h --- a/src/ex_cmds.h +++ b/src/ex_cmds.h @@ -1691,7 +1691,7 @@ EXCMD(CMD_vglobal, "vglobal", ex_global, EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_DFLALL|EX_CMDWIN|EX_LOCK_OK|EX_NONWHITE_OK, ADDR_LINES), EXCMD(CMD_var, "var", ex_var, - EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK, + EX_EXTRA|EX_NOTRLCOM|EX_EXPR_ARG|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK, ADDR_NONE), EXCMD(CMD_version, "version", ex_version, EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK, diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -2557,10 +2557,19 @@ def Test_expr7_dict_in_block() k: 0, } } MyCommand + + command YourCommand { + g:global = { + key: 'value' } + } + YourCommand + assert_equal({key: 'value'}, g:global) + unlet g:global END CheckScriptSuccess(lines) delcommand MyCommand + delcommand YourCommand enddef def Test_expr7_call_2bool() diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3835, +/**/ 3834, /**/ 3833,