mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.0.1089: cannot get range count in user command
Problem: Cannot get range count in user command. Solution: Add <range> argument.
This commit is contained in:
@@ -1415,6 +1415,8 @@ The valid escape sequences are
|
||||
<line1> The starting line of the command range.
|
||||
*<line2>*
|
||||
<line2> The final line of the command range.
|
||||
*<range>*
|
||||
<range> The number of items in the command range: 0, 1 or 2
|
||||
*<count>*
|
||||
<count> Any count supplied (as described for the '-range'
|
||||
and '-count' attributes).
|
||||
|
@@ -6331,7 +6331,8 @@ ex_command(exarg_T *eap)
|
||||
{
|
||||
++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)
|
||||
return;
|
||||
p = skipwhite(end);
|
||||
@@ -6592,8 +6593,18 @@ uc_check_code(
|
||||
char_u *p = code + 1;
|
||||
size_t l = len - 2;
|
||||
int quote = 0;
|
||||
enum { ct_ARGS, ct_BANG, ct_COUNT, ct_LINE1, ct_LINE2, ct_MODS,
|
||||
ct_REGISTER, ct_LT, ct_NONE } type = ct_NONE;
|
||||
enum {
|
||||
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] == '-')
|
||||
{
|
||||
@@ -6615,6 +6626,8 @@ uc_check_code(
|
||||
type = ct_LINE1;
|
||||
else if (STRNICMP(p, "line2>", l) == 0)
|
||||
type = ct_LINE2;
|
||||
else if (STRNICMP(p, "range>", l) == 0)
|
||||
type = ct_RANGE;
|
||||
else if (STRNICMP(p, "lt>", l) == 0)
|
||||
type = ct_LT;
|
||||
else if (STRNICMP(p, "reg>", l) == 0 || STRNICMP(p, "register>", l) == 0)
|
||||
@@ -6716,11 +6729,13 @@ uc_check_code(
|
||||
|
||||
case ct_LINE1:
|
||||
case ct_LINE2:
|
||||
case ct_RANGE:
|
||||
case ct_COUNT:
|
||||
{
|
||||
char num_buf[20];
|
||||
long num = (type == ct_LINE1) ? eap->line1 :
|
||||
(type == ct_LINE2) ? eap->line2 :
|
||||
(type == ct_RANGE) ? eap->addr_count :
|
||||
(eap->addr_count > 0) ? eap->line2 : cmd->uc_def;
|
||||
size_t num_len;
|
||||
|
||||
|
@@ -769,6 +769,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1089,
|
||||
/**/
|
||||
1088,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user