From 72defda84eb26be9e2ade56c7877b912f818026e Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 17 Jan 2016 18:04:33 +0100 Subject: 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. --- src/ex_cmds2.c | 4 ++++ src/testdir/Make_all.mak | 3 ++- src/testdir/test_arglist.vim | 22 ++++++++++++++++++++++ src/version.c | 2 ++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/testdir/test_arglist.vim (limited to 'src') 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 @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1119, /**/ 1118, /**/ -- cgit v1.2.1