changeset 26305:ce891b60bdcd v8.2.3683

patch 8.2.3683: Vim9: cannot use in :...do commands Commit: https://github.com/vim/vim/commit/279d733dfb838cbabe88c8b8d3549d1493a49bbe Author: Bram Moolenaar <Bram@vim.org> Date: Sat Nov 27 11:42:50 2021 +0000 patch 8.2.3683: Vim9: cannot use in :...do commands Problem: Vim9: cannot use in :...do commands. Solution: Add EX_EXPAND to the commands. (closes https://github.com/vim/vim/issues/9232)
author Bram Moolenaar <Bram@vim.org>
date Sat, 27 Nov 2021 12:45:03 +0100
parents bb2175e5ccee
children f2bc5e27cd82
files src/ex_cmds.h src/testdir/test_vim9_cmd.vim src/version.c
diffstat 3 files changed, 27 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -145,7 +145,7 @@ EXCMD(CMD_argdelete,	"argdelete",	ex_arg
 	EX_BANG|EX_RANGE|EX_FILES|EX_TRLBAR,
 	ADDR_ARGUMENTS),
 EXCMD(CMD_argdo,	"argdo",	ex_listdo,
-	EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
+	EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL|EX_EXPAND,
 	ADDR_ARGUMENTS),
 EXCMD(CMD_argedit,	"argedit",	ex_argedit,
 	EX_BANG|EX_NEEDARG|EX_RANGE|EX_ZEROR|EX_FILES|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
@@ -235,7 +235,7 @@ EXCMD(CMD_buffers,	"buffers",	buflist_li
 	EX_BANG|EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK,
 	ADDR_NONE),
 EXCMD(CMD_bufdo,	"bufdo",	ex_listdo,
-	EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
+	EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL|EX_EXPAND,
 	ADDR_BUFFERS),
 EXCMD(CMD_bunload,	"bunload",	ex_bunload,
 	EX_BANG|EX_RANGE|EX_BUFNAME|EX_COUNT|EX_EXTRA|EX_TRLBAR,
@@ -301,7 +301,7 @@ EXCMD(CMD_cd,		"cd",		ex_cd,
 	EX_BANG|EX_FILE1|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK,
 	ADDR_NONE),
 EXCMD(CMD_cdo,		"cdo",		ex_listdo,
-	EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
+	EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL|EX_EXPAND,
 	ADDR_QUICKFIX_VALID),
 EXCMD(CMD_center,	"center",	ex_align,
 	EX_TRLBAR|EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN|EX_LOCK_OK|EX_MODIFY,
@@ -313,7 +313,7 @@ EXCMD(CMD_cfile,	"cfile",	ex_cfile,
 	EX_TRLBAR|EX_FILE1|EX_BANG,
 	ADDR_NONE),
 EXCMD(CMD_cfdo,		"cfdo",		ex_listdo,
-	EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
+	EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL|EX_EXPAND,
 	ADDR_QUICKFIX_VALID),
 EXCMD(CMD_cfirst,	"cfirst",	ex_cc,
 	EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
@@ -838,7 +838,7 @@ EXCMD(CMD_lcscope,	"lcscope",	ex_cscope,
 	EX_EXTRA|EX_NOTRLCOM|EX_XFILE,
 	ADDR_NONE),
 EXCMD(CMD_ldo,		"ldo",		ex_listdo,
-	EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
+	EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL|EX_EXPAND,
 	ADDR_QUICKFIX_VALID),
 EXCMD(CMD_left,		"left",		ex_align,
 	EX_TRLBAR|EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN|EX_LOCK_OK|EX_MODIFY,
@@ -859,7 +859,7 @@ EXCMD(CMD_lfile,	"lfile",	ex_cfile,
 	EX_TRLBAR|EX_FILE1|EX_BANG,
 	ADDR_NONE),
 EXCMD(CMD_lfdo,		"lfdo",		ex_listdo,
-	EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
+	EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL|EX_EXPAND,
 	ADDR_QUICKFIX_VALID),
 EXCMD(CMD_lfirst,	"lfirst",	ex_cc,
 	EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
@@ -1534,7 +1534,7 @@ EXCMD(CMD_tabclose,	"tabclose",	ex_tabcl
 	EX_BANG|EX_RANGE|EX_ZEROR|EX_EXTRA|EX_NOSPC|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK,
 	ADDR_TABS),
 EXCMD(CMD_tabdo,	"tabdo",	ex_listdo,
-	EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
+	EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL|EX_EXPAND,
 	ADDR_TABS),
 EXCMD(CMD_tabedit,	"tabedit",	ex_splitview,
 	EX_BANG|EX_FILE1|EX_RANGE|EX_ZEROR|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
@@ -1768,7 +1768,7 @@ EXCMD(CMD_wincmd,	"wincmd",	ex_wincmd,
 	EX_NEEDARG|EX_WORD1|EX_RANGE|EX_CMDWIN|EX_LOCK_OK,
 	ADDR_OTHER),
 EXCMD(CMD_windo,	"windo",	ex_listdo,
-	EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
+	EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL|EX_EXPAND,
 	ADDR_WINDOWS),
 EXCMD(CMD_winpos,	"winpos",	ex_winpos,
 	EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK,
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -105,6 +105,23 @@ def Test_edit_wildcards()
   var files = ['file 1', 'file%2', 'file# 3']
   args `=files`
   assert_equal(files, argv())
+
+  filename = 'Xwindo'
+  windo edit `=filename`
+  assert_equal('Xwindo', bufname())
+
+  filename = 'Xtabdo'
+  tabdo edit `=filename`
+  assert_equal('Xtabdo', bufname())
+
+  filename = 'Xargdo'
+  argdo edit `=filename`
+  assert_equal('Xargdo', bufname())
+
+  :%bwipe!
+  filename = 'Xbufdo'
+  bufdo file `=filename`
+  assert_equal('Xbufdo', bufname())
 enddef
 
 def Test_expand_alternate_file()
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3683,
+/**/
     3682,
 /**/
     3681,