Skip to content

Commit

Permalink
patch 8.0.1089: cannot get range count in user command
Browse files Browse the repository at this point in the history
Problem:    Cannot get range count in user command.
Solution:   Add <range> argument.
  • Loading branch information
brammool committed Sep 10, 2017
1 parent 414168d commit c168bd4
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
2 changes: 2 additions & 0 deletions runtime/doc/map.txt
Expand Up @@ -1415,6 +1415,8 @@ The valid escape sequences are
<line1> The starting line of the command range. <line1> The starting line of the command range.
*<line2>* *<line2>*
<line2> The final line of the command range. <line2> The final line of the command range.
*<range>*
<range> The number of items in the command range: 0, 1 or 2
*<count>* *<count>*
<count> Any count supplied (as described for the '-range' <count> Any count supplied (as described for the '-range'
and '-count' attributes). and '-count' attributes).
Expand Down
23 changes: 19 additions & 4 deletions src/ex_docmd.c
Expand Up @@ -6331,7 +6331,8 @@ ex_command(exarg_T *eap)
{ {
++p; ++p;
end = skiptowhite(p); end = skiptowhite(p);
if (uc_scan_attr(p, end - p, &argt, &def, &flags, &compl, &compl_arg, &addr_type_arg) if (uc_scan_attr(p, end - p, &argt, &def, &flags, &compl,
&compl_arg, &addr_type_arg)
== FAIL) == FAIL)
return; return;
p = skipwhite(end); p = skipwhite(end);
Expand Down Expand Up @@ -6372,7 +6373,7 @@ ex_command(exarg_T *eap)
} }
else else
uc_add_command(name, end - name, p, argt, def, flags, compl, compl_arg, uc_add_command(name, end - name, p, argt, def, flags, compl, compl_arg,
addr_type_arg, eap->forceit); addr_type_arg, eap->forceit);
} }


/* /*
Expand Down Expand Up @@ -6592,8 +6593,18 @@ uc_check_code(
char_u *p = code + 1; char_u *p = code + 1;
size_t l = len - 2; size_t l = len - 2;
int quote = 0; int quote = 0;
enum { ct_ARGS, ct_BANG, ct_COUNT, ct_LINE1, ct_LINE2, ct_MODS, enum {
ct_REGISTER, ct_LT, ct_NONE } type = ct_NONE; ct_ARGS,
ct_BANG,
ct_COUNT,
ct_LINE1,
ct_LINE2,
ct_RANGE,
ct_MODS,
ct_REGISTER,
ct_LT,
ct_NONE
} type = ct_NONE;


if ((vim_strchr((char_u *)"qQfF", *p) != NULL) && p[1] == '-') if ((vim_strchr((char_u *)"qQfF", *p) != NULL) && p[1] == '-')
{ {
Expand All @@ -6615,6 +6626,8 @@ uc_check_code(
type = ct_LINE1; type = ct_LINE1;
else if (STRNICMP(p, "line2>", l) == 0) else if (STRNICMP(p, "line2>", l) == 0)
type = ct_LINE2; type = ct_LINE2;
else if (STRNICMP(p, "range>", l) == 0)
type = ct_RANGE;
else if (STRNICMP(p, "lt>", l) == 0) else if (STRNICMP(p, "lt>", l) == 0)
type = ct_LT; type = ct_LT;
else if (STRNICMP(p, "reg>", l) == 0 || STRNICMP(p, "register>", l) == 0) else if (STRNICMP(p, "reg>", l) == 0 || STRNICMP(p, "register>", l) == 0)
Expand Down Expand Up @@ -6716,11 +6729,13 @@ uc_check_code(


case ct_LINE1: case ct_LINE1:
case ct_LINE2: case ct_LINE2:
case ct_RANGE:
case ct_COUNT: case ct_COUNT:
{ {
char num_buf[20]; char num_buf[20];
long num = (type == ct_LINE1) ? eap->line1 : long num = (type == ct_LINE1) ? eap->line1 :
(type == ct_LINE2) ? eap->line2 : (type == ct_LINE2) ? eap->line2 :
(type == ct_RANGE) ? eap->addr_count :
(eap->addr_count > 0) ? eap->line2 : cmd->uc_def; (eap->addr_count > 0) ? eap->line2 : cmd->uc_def;
size_t num_len; size_t num_len;


Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -769,6 +769,8 @@ static char *(features[]) =


static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1089,
/**/ /**/
1088, 1088,
/**/ /**/
Expand Down

0 comments on commit c168bd4

Please sign in to comment.