changeset 7726:f6311c321411 v7.4.1161

commit https://github.com/vim/vim/commit/2faa29f896252073b53f387406109e331fbbe5f8 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 23 23:02:34 2016 +0100 patch 7.4.1161 Problem: ":argadd" without argument is supposed to add the current buffer name to the arglist. Solution: Make it work as documented. (Coot, closes https://github.com/vim/vim/issues/577)
author Christian Brabandt <cb@256bit.org>
date Sat, 23 Jan 2016 23:15:05 +0100
parents 6de202317f9c
children 53cfb3cd064b
files src/ex_cmds.h src/ex_cmds2.c src/testdir/test_arglist.vim src/version.c
diffstat 4 files changed, 24 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -128,7 +128,7 @@ EX(CMD_args,		"args",		ex_args,
 			BANG|FILES|EDITCMD|ARGOPT|TRLBAR,
 			ADDR_LINES),
 EX(CMD_argadd,		"argadd",	ex_argadd,
-			BANG|NEEDARG|RANGE|NOTADR|ZEROR|FILES|TRLBAR,
+			BANG|RANGE|NOTADR|ZEROR|FILES|TRLBAR,
 			ADDR_ARGUMENTS),
 EX(CMD_argdelete,	"argdelete",	ex_argdelete,
 			BANG|RANGE|NOTADR|FILES|TRLBAR,
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -2090,6 +2090,16 @@ do_arglist(str, what, after)
 #endif
 
     /*
+     * Set default argument for ":argadd" command.
+     */
+    if (what == AL_ADD && *str == NUL)
+    {
+	if (curbuf->b_ffname == NULL)
+	    return FAIL;
+	str = curbuf->b_fname;
+    }
+
+    /*
      * Collect all file name arguments in "new_ga".
      */
     if (get_arglist(&new_ga, str) == FAIL)
--- a/src/testdir/test_arglist.vim
+++ b/src/testdir/test_arglist.vim
@@ -57,6 +57,17 @@ func Test_argadd()
   +2argadd y
   call Assert_argc(['a', 'b', 'c', 'x', 'y'])
   call assert_equal(1, argidx())
+
+  %argd
+  edit d
+  arga
+  call assert_equal(len(argv()), 1)
+  call assert_equal(get(argv(), 0, ''), 'd')
+
+  %argd
+  new
+  arga
+  call assert_equal(len(argv()), 0)
 endfunc
 
 func Init_abc()
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1161,
+/**/
     1160,
 /**/
     1159,