forked from aniani/vim
patch 8.2.1472: ":argdel" does not work like ":.argdel" as documented
Problem: ":argdel" does not work like ":.argdel" as documented. (Alexey
Demin)
Solution: Make ":argdel" work like ":.argdel". (closes #6727)
Also fix giving the error "0 more files to edit".
This commit is contained in:
@@ -776,10 +776,20 @@ ex_argdelete(exarg_T *eap)
|
||||
int i;
|
||||
int n;
|
||||
|
||||
if (eap->addr_count > 0)
|
||||
if (eap->addr_count > 0 || *eap->arg == NUL)
|
||||
{
|
||||
// ":1,4argdel": Delete all arguments in the range.
|
||||
if (eap->line2 > ARGCOUNT)
|
||||
// ":argdel" works like ":argdel"
|
||||
if (eap->addr_count == 0)
|
||||
{
|
||||
if (curwin->w_arg_idx >= ARGCOUNT)
|
||||
{
|
||||
emsg(_("E610: No argument to delete"));
|
||||
return;
|
||||
}
|
||||
eap->line1 = eap->line2 = curwin->w_arg_idx + 1;
|
||||
}
|
||||
else if (eap->line2 > ARGCOUNT)
|
||||
// ":1,4argdel": Delete all arguments in the range.
|
||||
eap->line2 = ARGCOUNT;
|
||||
n = eap->line2 - eap->line1 + 1;
|
||||
if (*eap->arg != NUL)
|
||||
@@ -808,8 +818,6 @@ ex_argdelete(exarg_T *eap)
|
||||
curwin->w_arg_idx = ARGCOUNT - 1;
|
||||
}
|
||||
}
|
||||
else if (*eap->arg == NUL)
|
||||
emsg(_(e_argreq));
|
||||
else
|
||||
do_arglist(eap->arg, AL_DEL, 0, FALSE);
|
||||
#ifdef FEAT_TITLE
|
||||
|
||||
@@ -5022,7 +5022,7 @@ check_more(
|
||||
int n = ARGCOUNT - curwin->w_arg_idx - 1;
|
||||
|
||||
if (!forceit && only_one_window()
|
||||
&& ARGCOUNT > 1 && !arg_had_last && n >= 0 && quitmore == 0)
|
||||
&& ARGCOUNT > 1 && !arg_had_last && n > 0 && quitmore == 0)
|
||||
{
|
||||
if (message)
|
||||
{
|
||||
|
||||
@@ -423,9 +423,15 @@ func Test_argdelete()
|
||||
last
|
||||
argdelete %
|
||||
call assert_equal(['b'], argv())
|
||||
call assert_fails('argdelete', 'E471:')
|
||||
call assert_fails('argdelete', 'E610:')
|
||||
call assert_fails('1,100argdelete', 'E16:')
|
||||
%argd
|
||||
|
||||
call Reset_arglist()
|
||||
args a b c d
|
||||
next
|
||||
argdel
|
||||
call Assert_argc(['a', 'c', 'd'])
|
||||
%argdel
|
||||
endfunc
|
||||
|
||||
func Test_argdelete_completion()
|
||||
|
||||
@@ -754,6 +754,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1472,
|
||||
/**/
|
||||
1471,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user