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()
--- 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,