aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ex_docmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/ex_docmd.c')
-rw-r--r--src/nvim/ex_docmd.c63
1 files changed, 31 insertions, 32 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c
index 61a32bccfa..2a29450295 100644
--- a/src/nvim/ex_docmd.c
+++ b/src/nvim/ex_docmd.c
@@ -2071,7 +2071,7 @@ static char_u * do_one_cmd(char_u **cmdlinep,
if ((ea.argt & COUNT) && ascii_isdigit(*ea.arg)
&& (!(ea.argt & BUFNAME) || *(p = skipdigits(ea.arg)) == NUL
|| ascii_iswhite(*p))) {
- n = getdigits_long(&ea.arg);
+ n = getdigits_long(&ea.arg, false, -1);
ea.arg = skipwhite(ea.arg);
if (n <= 0 && !ni && (ea.argt & ZEROR) == 0) {
errormsg = (char_u *)_(e_zerocount);
@@ -3797,7 +3797,7 @@ static linenr_T get_address(exarg_T *eap,
default:
if (ascii_isdigit(*cmd)) /* absolute line number */
- lnum = getdigits_long(&cmd);
+ lnum = getdigits_long(&cmd, false, 0);
}
for (;; ) {
@@ -3832,14 +3832,16 @@ static linenr_T get_address(exarg_T *eap,
}
}
- if (ascii_isdigit(*cmd))
- i = '+'; /* "number" is same as "+number" */
- else
+ if (ascii_isdigit(*cmd)) {
+ i = '+'; // "number" is same as "+number"
+ } else {
i = *cmd++;
- if (!ascii_isdigit(*cmd)) /* '+' is '+1', but '+0' is not '+1' */
+ }
+ if (!ascii_isdigit(*cmd)) { // '+' is '+1', but '+0' is not '+1'
n = 1;
- else
- n = getdigits(&cmd);
+ } else {
+ n = getdigits(&cmd, true, 0);
+ }
if (addr_type == ADDR_TABS_RELATIVE) {
EMSG(_(e_invrange));
@@ -4504,7 +4506,7 @@ static int get_tabpage_arg(exarg_T *eap)
}
p_save = p;
- tab_number = getdigits(&p);
+ tab_number = getdigits(&p, false, tab_number);
if (relative == 0) {
if (STRCMP(p, "$") == 0) {
@@ -5179,7 +5181,7 @@ two_count:
return FAIL;
}
- *def = getdigits_long(&p);
+ *def = getdigits_long(&p, true, 0);
*argt |= (ZEROR | NOTADR);
if (p != val + vallen || vallen == 0) {
@@ -5196,7 +5198,7 @@ invalid_count:
if (*def >= 0)
goto two_count;
- *def = getdigits_long(&p);
+ *def = getdigits_long(&p, true, 0);
if (p != val + vallen)
goto invalid_count;
@@ -6832,8 +6834,7 @@ static void ex_tabnext(exarg_T *eap)
if (eap->arg && *eap->arg != NUL) {
char_u *p = eap->arg;
char_u *p_save = p;
-
- tab_number = getdigits(&p);
+ tab_number = getdigits(&p, false, 0);
if (p == p_save || *p_save == '-' || *p_save == '+' || *p != NUL
|| tab_number == 0) {
// No numbers as argument.
@@ -7472,18 +7473,16 @@ static void do_exmap(exarg_T *eap, int isabbrev)
*/
static void ex_winsize(exarg_T *eap)
{
- int w, h;
- char_u *arg = eap->arg;
- char_u *p;
-
- w = getdigits_int(&arg);
+ char_u *arg = eap->arg;
+ int w = getdigits_int(&arg, false, 10);
arg = skipwhite(arg);
- p = arg;
- h = getdigits_int(&arg);
- if (*p != NUL && *arg == NUL)
+ char_u *p = arg;
+ int h = getdigits_int(&arg, false, 10);
+ if (*p != NUL && *arg == NUL) {
screen_resize(w, h);
- else
+ } else {
EMSG(_("E465: :winsize requires two number arguments"));
+ }
}
static void ex_wincmd(exarg_T *eap)
@@ -7745,7 +7744,7 @@ static void ex_later(exarg_T *eap)
if (*p == NUL)
count = 1;
else if (isdigit(*p)) {
- count = getdigits_long(&p);
+ count = getdigits_long(&p, false, 0);
switch (*p) {
case 's': ++p; sec = true; break;
case 'm': ++p; sec = true; count *= 60; break;
@@ -8414,7 +8413,7 @@ static void ex_findpat(exarg_T *eap)
n = 1;
if (ascii_isdigit(*eap->arg)) { /* get count */
- n = getdigits_long(&eap->arg);
+ n = getdigits_long(&eap->arg, false, 0);
eap->arg = skipwhite(eap->arg);
}
if (*eap->arg == '/') { /* Match regexp, not just whole words */
@@ -8660,13 +8659,13 @@ eval_vars (
return NULL;
}
}
- /*
- * '#': Alternate file name
- * '%': Current file name
- * File name under the cursor
- * File name for autocommand
- * and following modifiers
- */
+ //
+ // '#': Alternate file name
+ // '%': Current file name
+ // File name under the cursor
+ // File name for autocommand
+ // and following modifiers
+ //
else {
switch (spec_idx) {
case SPEC_PERC: /* '%': current file */
@@ -8692,7 +8691,7 @@ eval_vars (
s = src + 1;
if (*s == '<') /* "#<99" uses v:oldfiles */
++s;
- i = getdigits_int(&s);
+ i = getdigits_int(&s, false, 0);
if (s == src + 2 && src[1] == '-') {
// just a minus sign, don't skip over it
s--;