]> granicus.if.org Git - vim/commitdiff
patch 7.4.1119 v7.4.1119
authorBram Moolenaar <Bram@vim.org>
Sun, 17 Jan 2016 17:04:33 +0000 (18:04 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 17 Jan 2016 17:04:33 +0000 (18:04 +0100)
Problem:    argidx() has a wrong value after ":%argdelete". (Yegappan
            Lakshmanan)
Solution:   Correct the value of w_arg_idx.  Add a test.

src/ex_cmds2.c
src/testdir/Make_all.mak
src/testdir/test_arglist.vim [new file with mode: 0644]
src/version.c

index 5b113668d1d77be79c1111d73fba1e9474718044..012a1af222bd430d1dfe24bf5a47706f090273b9 100644 (file)
@@ -2562,6 +2562,10 @@ ex_argdelete(eap)
                curwin->w_arg_idx -= n;
            else if (curwin->w_arg_idx > eap->line1)
                curwin->w_arg_idx = eap->line1;
+           if (ARGCOUNT == 0)
+               curwin->w_arg_idx = 0;
+           else if (curwin->w_arg_idx >= ARGCOUNT)
+               curwin->w_arg_idx = ARGCOUNT - 1;
        }
     }
     else if (*eap->arg == NUL)
index 81e196c1df84004537c533596f69932b172ed1f8..69fd936cd1a4587d75a4d18c5c4032dd42793745 100644 (file)
@@ -171,7 +171,8 @@ SCRIPTS_GUI = test16.out
 
 # Tests using runtest.vim.vim.
 # Keep test_alot.res as the last one, sort the others.
-NEW_TESTS = test_assert.res \
+NEW_TESTS = test_arglist.res \
+           test_assert.res \
            test_cdo.res \
            test_hardcopy.res \
            test_increment.res \
diff --git a/src/testdir/test_arglist.vim b/src/testdir/test_arglist.vim
new file mode 100644 (file)
index 0000000..3f72f0f
--- /dev/null
@@ -0,0 +1,22 @@
+" Test argument list commands
+
+func Test_argidx()
+  args a b c
+  last
+  call assert_equal(2, argidx())
+  %argdelete
+  call assert_equal(0, argidx())
+
+  args a b c
+  call assert_equal(0, argidx())
+  next
+  call assert_equal(1, argidx())
+  next
+  call assert_equal(2, argidx())
+  1argdelete
+  call assert_equal(1, argidx())
+  1argdelete
+  call assert_equal(0, argidx())
+  1argdelete
+  call assert_equal(0, argidx())
+endfunc
index 26cd06e8d1649aa58f409e5eec962b121d52420f..f26828c85ca2049963093c9afaaa1408e2a3e1ae 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1119,
 /**/
     1118,
 /**/