aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/api/vimscript.c4
-rw-r--r--src/nvim/ex_docmd.c10
2 files changed, 7 insertions, 7 deletions
diff --git a/src/nvim/api/vimscript.c b/src/nvim/api/vimscript.c
index d3675a3c40..9396435466 100644
--- a/src/nvim/api/vimscript.c
+++ b/src/nvim/api/vimscript.c
@@ -752,7 +752,7 @@ Dictionary nvim_parse_expression(String expr, String flags, Boolean highlight, E
/// no range was specified, one element if only a single range item was
/// specified and two elements if both range items were specified.
/// - count: (number) Any |<count>| that was supplied to the command. -1 if command cannot
-/// take a count. Mutually exclusive with "range".
+/// take a count.
/// - reg: (number) The optional command |<register>|, if specified. Empty string if not
/// specified or if command cannot take a register.
/// - bang: (boolean) Whether command contains a |<bang>| (!) modifier.
@@ -853,7 +853,7 @@ Dictionary nvim_parse_cmd(String str, Dictionary opts, Error *err)
PUT(result, "cmd", CSTR_TO_OBJ((char *)get_command_name(NULL, ea.cmdidx)));
}
- if ((ea.argt & EX_RANGE) && !(ea.argt & EX_COUNT) && ea.addr_count > 0) {
+ if ((ea.argt & EX_RANGE) && ea.addr_count > 0) {
Array range = ARRAY_DICT_INIT;
if (ea.addr_count > 1) {
ADD(range, INTEGER_OBJ(ea.line1));
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c
index 116264b4c1..df78fe9c34 100644
--- a/src/nvim/ex_docmd.c
+++ b/src/nvim/ex_docmd.c
@@ -1320,7 +1320,7 @@ static void parse_register(exarg_T *eap)
}
}
-static int parse_count(exarg_T *eap, char **errormsg)
+static int parse_count(exarg_T *eap, char **errormsg, bool validate)
{
// Check for a count. When accepting a EX_BUFNAME, don't use "123foo" as a
// count, it's a buffer name.
@@ -1348,7 +1348,7 @@ static int parse_count(exarg_T *eap, char **errormsg)
eap->line2 += n - 1;
eap->addr_count++;
// Be vi compatible: no error message for out of range.
- if (eap->line2 > curbuf->b_ml.ml_line_count) {
+ if (validate && eap->line2 > curbuf->b_ml.ml_line_count) {
eap->line2 = curbuf->b_ml.ml_line_count;
}
}
@@ -1426,7 +1426,7 @@ bool parse_cmdline(char *cmdline, exarg_T *eap, CmdParseInfo *cmdinfo, char **er
}
p = find_command(eap, NULL);
- // Set command attribute type and parse command range
+ // Set command address type and parse command range
set_cmd_addr_type(eap, (char_u *)p);
eap->cmd = cmd;
if (parse_cmd_address(eap, errormsg, false) == FAIL) {
@@ -1499,7 +1499,7 @@ bool parse_cmdline(char *cmdline, exarg_T *eap, CmdParseInfo *cmdinfo, char **er
// Parse register and count
parse_register(eap);
- if (parse_count(eap, errormsg) == FAIL) {
+ if (parse_count(eap, errormsg, false) == FAIL) {
return false;
}
@@ -1981,7 +1981,7 @@ static char *do_one_cmd(char **cmdlinep, int flags, cstack_T *cstack, LineGetter
// Parse register and count
parse_register(&ea);
- if (parse_count(&ea, &errormsg) == FAIL) {
+ if (parse_count(&ea, &errormsg, true) == FAIL) {
goto doend;
}