patch 8.1.1822: confusing error message when range is not allowed
Problem: Confusing error message when range is not allowed.
Solution: With ADDR_NONE give e_norange. Change e_invaddr to e_invrange for
consistency.
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 74adb84..6df1c31 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -4208,6 +4208,15 @@
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.
*
@@ -4264,10 +4273,10 @@
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;
@@ -4314,10 +4323,10 @@
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;
@@ -4346,7 +4355,7 @@
}
if (addr_type != ADDR_LINES)
{
- emsg(_(e_invaddr));
+ addr_error(addr_type);
cmd = NULL;
goto error;
}
@@ -4378,7 +4387,7 @@
c = *cmd++;
if (addr_type != ADDR_LINES)
{
- emsg(_(e_invaddr));
+ addr_error(addr_type);
cmd = NULL;
goto error;
}
@@ -4428,7 +4437,7 @@
++cmd;
if (addr_type != ADDR_LINES)
{
- emsg(_(e_invaddr));
+ addr_error(addr_type);
cmd = NULL;
goto error;
}
@@ -7926,7 +7935,7 @@
*/
if (n == MAXLNUM || n < 0 || n > curbuf->b_ml.ml_line_count)
{
- emsg(_(e_invaddr));
+ emsg(_(e_invrange));
return;
}
diff --git a/src/globals.h b/src/globals.h
index 92b2803..e6a5bb2 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1456,7 +1456,6 @@
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"));
diff --git a/src/testdir/test_excmd.vim b/src/testdir/test_excmd.vim
index f5ce979..509d78d 100644
--- a/src/testdir/test_excmd.vim
+++ b/src/testdir/test_excmd.vim
@@ -8,3 +8,14 @@
.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
diff --git a/src/version.c b/src/version.c
index aad7833..0e1641c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -774,6 +774,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1822,
+/**/
1821,
/**/
1820,