summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-01-17 18:04:33 +0100
committerBram Moolenaar <Bram@vim.org>2016-01-17 18:04:33 +0100
commit72defda84eb26be9e2ade56c7877b912f818026e (patch)
treea792b22a989a61314b949f6c7c426e8b82f402e6 /src
parenta99b90437af730dcafd9143c0942c87777a00d52 (diff)
downloadvim-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.c4
-rw-r--r--src/testdir/Make_all.mak3
-rw-r--r--src/testdir/test_arglist.vim22
-rw-r--r--src/version.c2
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,