# HG changeset patch # User Christian Brabandt # Date 1453050904 -3600 # Node ID 0ecb62a66a7a40ed6e845969f6720e3876eb83cb # Parent 67ff092db9d6a7274ee7efa125b9cf90a12a0255 commit https://github.com/vim/vim/commit/72defda84eb26be9e2ade56c7877b912f818026e Author: Bram Moolenaar Date: Sun Jan 17 18:04:33 2016 +0100 patch 7.4.1119 Problem: argidx() has a wrong value after ":%argdelete". (Yegappan Lakshmanan) Solution: Correct the value of w_arg_idx. Add a test. diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c --- a/src/ex_cmds2.c +++ b/src/ex_cmds2.c @@ -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) diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -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 --- /dev/null +++ b/src/testdir/test_arglist.vim @@ -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 diff --git a/src/version.c b/src/version.c --- 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 */ /**/ + 1119, +/**/ 1118, /**/ 1117,