diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-01-17 18:04:33 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-01-17 18:04:33 +0100 |
commit | 72defda84eb26be9e2ade56c7877b912f818026e (patch) | |
tree | a792b22a989a61314b949f6c7c426e8b82f402e6 /src | |
parent | a99b90437af730dcafd9143c0942c87777a00d52 (diff) | |
download | vim-git-72defda84eb26be9e2ade56c7877b912f818026e.tar.gz |
patch 7.4.1119v7.4.1119
Problem: argidx() has a wrong value after ":%argdelete". (Yegappan
Lakshmanan)
Solution: Correct the value of w_arg_idx. Add a test.
Diffstat (limited to 'src')
-rw-r--r-- | src/ex_cmds2.c | 4 | ||||
-rw-r--r-- | src/testdir/Make_all.mak | 3 | ||||
-rw-r--r-- | src/testdir/test_arglist.vim | 22 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 30 insertions, 1 deletions
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c index 5b113668d..012a1af22 100644 --- 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 index 81e196c1d..69fd936cd 100644 --- 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 index 000000000..3f72f0ff9 --- /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 index 26cd06e8d..f26828c85 100644 --- 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, |