Mercurial > vim
changeset 26612:2586659245db v8.2.3835
patch 8.2.3835: the inline-function example does not work
Commit: https://github.com/vim/vim/commit/259f443a934c6f2447a14bfe54403903416a9af0
Author: Bram Moolenaar <Bram@vim.org>
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 17 Dec 2021 14:00:04 +0100 |
parents | 6da29744e94a |
children | 7f6ae3111d34 |
files | runtime/doc/vim9.txt src/ex_cmds.h src/testdir/test_vim9_expr.vim src/version.c |
diffstat | 4 files changed, 18 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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' } }
--- 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,
--- 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()