Problem: Confusing error message when range is not allowed.
Solution: With ADDR_NONE give e_norange. Change e_invaddr to e_invrange for
consistency.
return cmd;
}
+ static void
+addr_error(cmd_addr_T addr_type)
+{
+ if (addr_type == ADDR_NONE)
+ emsg(_(e_norange));
+ else
+ emsg(_(e_invrange));
+}
+
/*
* Get a single EX address.
*
case ADDR_TABS:
lnum = CURRENT_TAB_NR;
break;
- case ADDR_TABS_RELATIVE:
case ADDR_NONE:
+ case ADDR_TABS_RELATIVE:
case ADDR_UNSIGNED:
- emsg(_(e_invrange));
+ addr_error(addr_type);
cmd = NULL;
goto error;
break;
case ADDR_TABS:
lnum = LAST_TAB_NR;
break;
- case ADDR_TABS_RELATIVE:
case ADDR_NONE:
+ case ADDR_TABS_RELATIVE:
case ADDR_UNSIGNED:
- emsg(_(e_invrange));
+ addr_error(addr_type);
cmd = NULL;
goto error;
break;
}
if (addr_type != ADDR_LINES)
{
- emsg(_(e_invaddr));
+ addr_error(addr_type);
cmd = NULL;
goto error;
}
c = *cmd++;
if (addr_type != ADDR_LINES)
{
- emsg(_(e_invaddr));
+ addr_error(addr_type);
cmd = NULL;
goto error;
}
++cmd;
if (addr_type != ADDR_LINES)
{
- emsg(_(e_invaddr));
+ addr_error(addr_type);
cmd = NULL;
goto error;
}
*/
if (n == MAXLNUM || n < 0 || n > curbuf->b_ml.ml_line_count)
{
- emsg(_(e_invaddr));
+ emsg(_(e_invrange));
return;
}
EXTERN char e_internal[] INIT(= N_("E473: Internal error"));
EXTERN char e_intern2[] INIT(= N_("E685: Internal error: %s"));
EXTERN char e_interr[] INIT(= N_("Interrupted"));
-EXTERN char e_invaddr[] INIT(= N_("E14: Invalid address"));
EXTERN char e_invarg[] INIT(= N_("E474: Invalid argument"));
EXTERN char e_invarg2[] INIT(= N_("E475: Invalid argument: %s"));
EXTERN char e_duparg2[] INIT(= N_("E983: Duplicate argument: %s"));
.dl
call assert_equal(['a', 'c'], getline(1, 2))
endfunc
+
+func Test_range_error()
+ call assert_fails(':.echo 1', 'E481:')
+ call assert_fails(':$echo 1', 'E481:')
+ call assert_fails(':1,2echo 1', 'E481:')
+ call assert_fails(':+1echo 1', 'E481:')
+ call assert_fails(':/1/echo 1', 'E481:')
+ call assert_fails(':\/echo 1', 'E481:')
+ normal vv
+ call assert_fails(":'<,'>echo 1", 'E481:')
+endfunc
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1822,
/**/
1821,
/**/