vim-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.

72defda84e
This commit is contained in:
Jurica Bradaric
2016-05-14 12:26:03 +02:00
parent d02cfe8061
commit 1573aa0b0a
3 changed files with 40 additions and 3 deletions

View File

@@ -1861,11 +1861,17 @@ void ex_argdelete(exarg_T *eap)
} else if (curwin->w_arg_idx > eap->line1) { } else if (curwin->w_arg_idx > eap->line1) {
curwin->w_arg_idx = (int)eap->line1; curwin->w_arg_idx = (int)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) } else if (*eap->arg == NUL) {
EMSG(_(e_argreq)); EMSG(_(e_argreq));
else } else {
do_arglist(eap->arg, AL_DEL, 0); do_arglist(eap->arg, AL_DEL, 0);
}
maketitle(); maketitle();
} }

View File

@@ -563,7 +563,7 @@ static int included_patches[] = {
// 1122 NA // 1122 NA
// 1121, // 1121,
1120, 1120,
// 1119, 1119,
1118, 1118,
1117, 1117,
1116, 1116,

View File

@@ -0,0 +1,31 @@
-- Test argument list commands
local helpers = require('test.functional.helpers')
local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert
local execute, expect = helpers.execute, helpers.expect
local eq, eval = helpers.eq, helpers.eval
describe('argument list commands', function()
before_each(clear)
it('is working', function()
execute('args a b c')
execute('last')
eq(2, eval('argidx()'))
execute('%argdelete')
eq(0, eval('argidx()'))
execute('args a b c')
eq(0, eval('argidx()'))
execute('next')
eq(1, eval('argidx()'))
execute('next')
eq(2, eval('argidx()'))
execute('1argdelete')
eq(1, eval('argidx()'))
execute('1argdelete')
eq(0, eval('argidx()'))
execute('1argdelete')
eq(0, eval('argidx()'))
end)
end)