]> granicus.if.org Git - vim/commitdiff
patch 8.0.0439: ":%argdel" gives an error for an empty arglist v8.0.0439
authorBram Moolenaar <Bram@vim.org>
Thu, 9 Mar 2017 14:58:30 +0000 (15:58 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 9 Mar 2017 14:58:30 +0000 (15:58 +0100)
Problem:    Using ":%argdel" while the argument list is already empty gives an
            error. (Pavol Juhas)
Solution:   Don't give an error. (closes #1546)

src/ex_cmds2.c
src/testdir/test_arglist.vim
src/version.c

index 5ecb1f3d6b2f36f288f30e0c582468cbacd00c6d..f8d35dc73d2d34a133ce8fc2018eea6c3ccc3f97 100644 (file)
@@ -2832,8 +2832,15 @@ ex_argdelete(exarg_T *eap)
        if (eap->line2 > ARGCOUNT)
            eap->line2 = ARGCOUNT;
        n = eap->line2 - eap->line1 + 1;
-       if (*eap->arg != NUL || n <= 0)
+       if (*eap->arg != NUL)
+           /* Can't have both a range and an argument. */
            EMSG(_(e_invarg));
+       else if (n <= 0)
+       {
+           /* Don't give an error for ":%argdel" if the list is empty. */
+           if (eap->line1 != 1 || eap->line2 != 0)
+               EMSG(_(e_invrange));
+       }
        else
        {
            for (i = eap->line1; i <= eap->line2; ++i)
index 0caead8482ec4d2f95726b1e8fea561a4944c4d4..d18035b3b49e62d69b538057202e1d07e0184f97 100644 (file)
@@ -6,6 +6,10 @@ func Test_argidx()
   call assert_equal(2, argidx())
   %argdelete
   call assert_equal(0, argidx())
+  " doing it again doesn't result in an error
+  %argdelete
+  call assert_equal(0, argidx())
+  call assert_fails('2argdelete', 'E16:')
 
   args a b c
   call assert_equal(0, argidx())
index 811a3d6a982efa891ff41692dcba2428eb5669e0..277f2d99e392aabadc4ad452ad67cf516ade7f1e 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    439,
 /**/
     438,
 /**/