aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-03-21 17:34:25 +0100
committerJustin M. Keyes <justinkz@gmail.com>2017-03-22 18:42:59 +0100
commit7e23ce6b4fa843c12e44464a20154d92e95355c6 (patch)
treefb5721a22642b5895a96a5d7e2d3f6818182dbda /src
parent0f3afdaa1b5a75a5ed54a69dc43e32ddbb6a32ea (diff)
downloadrneovim-7e23ce6b4fa843c12e44464a20154d92e95355c6.tar.gz
rneovim-7e23ce6b4fa843c12e44464a20154d92e95355c6.tar.bz2
rneovim-7e23ce6b4fa843c12e44464a20154d92e95355c6.zip
lint
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ex_docmd.c168
1 files changed, 76 insertions, 92 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c
index 4f34312562..2bd5158b33 100644
--- a/src/nvim/ex_docmd.c
+++ b/src/nvim/ex_docmd.c
@@ -4314,102 +4314,86 @@ static int getargopt(exarg_T *eap)
return OK;
}
-/*
- * Handle the argument for a tabpage related ex command.
- * Returns a tabpage number.
- * When an error is encountered then eap->errmsg is set.
- */
- static int
-get_tabpage_arg(exarg_T *eap)
-{
- int tab_number;
- int unaccept_arg0 = (eap->cmdidx == CMD_tabmove) ? 0 : 1;
-
- if (eap->arg && *eap->arg != NUL)
- {
- char_u *p = eap->arg;
- char_u *p_save;
- int relative = 0; /* argument +N/-N means: go to N places to the
- * right/left relative to the current position. */
-
- if (*p == '-')
- {
- relative = -1;
- p++;
- }
- else if (*p == '+')
- {
- relative = 1;
- p++;
- }
-
- p_save = p;
- tab_number = getdigits(&p);
-
- if (relative == 0)
- {
- if (STRCMP(p, "$") == 0)
- tab_number = LAST_TAB_NR;
- else if (p == p_save || *p_save == '-' || *p != NUL
- || tab_number > LAST_TAB_NR)
- {
- /* No numbers as argument. */
- eap->errmsg = e_invarg;
- goto theend;
- }
- }
- else
- {
- if (*p_save == NUL)
- tab_number = 1;
- else if (p == p_save || *p_save == '-' || *p != NUL
- || tab_number == 0)
- {
- /* No numbers as argument. */
- eap->errmsg = e_invarg;
- goto theend;
- }
- tab_number = tab_number * relative + tabpage_index(curtab);
- if (!unaccept_arg0 && relative == -1)
- --tab_number;
- }
- if (tab_number < unaccept_arg0 || tab_number > LAST_TAB_NR)
- eap->errmsg = e_invarg;
- }
- else if (eap->addr_count > 0)
- {
- if (unaccept_arg0 && eap->line2 == 0)
- eap->errmsg = e_invrange;
- else
- {
- tab_number = eap->line2;
- if (!unaccept_arg0 && **eap->cmdlinep == '-')
- {
- --tab_number;
- if (tab_number < unaccept_arg0)
- eap->errmsg = e_invarg;
- }
- }
+/// Handle the argument for a tabpage related ex command.
+/// Returns a tabpage number.
+/// When an error is encountered then eap->errmsg is set.
+static int get_tabpage_arg(exarg_T *eap)
+{
+ int tab_number;
+ int unaccept_arg0 = (eap->cmdidx == CMD_tabmove) ? 0 : 1;
+
+ if (eap->arg && *eap->arg != NUL) {
+ char_u *p = eap->arg;
+ char_u *p_save;
+ int relative = 0; // argument +N/-N means: go to N places to the
+ // right/left relative to the current position.
+
+ if (*p == '-') {
+ relative = -1;
+ p++;
+ } else if (*p == '+') {
+ relative = 1;
+ p++;
}
- else
- {
- switch (eap->cmdidx)
- {
- case CMD_tabnext:
- tab_number = tabpage_index(curtab) + 1;
- if (tab_number > LAST_TAB_NR)
- tab_number = 1;
- break;
- case CMD_tabmove:
- tab_number = LAST_TAB_NR;
- break;
- default:
- tab_number = tabpage_index(curtab);
- }
+
+ p_save = p;
+ tab_number = getdigits(&p);
+
+ if (relative == 0) {
+ if (STRCMP(p, "$") == 0) {
+ tab_number = LAST_TAB_NR;
+ } else if (p == p_save || *p_save == '-' || *p != NUL
+ || tab_number > LAST_TAB_NR) {
+ // No numbers as argument.
+ eap->errmsg = e_invarg;
+ goto theend;
+ }
+ } else {
+ if (*p_save == NUL) {
+ tab_number = 1;
+ }
+ else if (p == p_save || *p_save == '-' || *p != NUL || tab_number == 0) {
+ // No numbers as argument.
+ eap->errmsg = e_invarg;
+ goto theend;
+ }
+ tab_number = tab_number * relative + tabpage_index(curtab);
+ if (!unaccept_arg0 && relative == -1) {
+ --tab_number;
+ }
+ }
+ if (tab_number < unaccept_arg0 || tab_number > LAST_TAB_NR) {
+ eap->errmsg = e_invarg;
+ }
+ } else if (eap->addr_count > 0) {
+ if (unaccept_arg0 && eap->line2 == 0) {
+ eap->errmsg = e_invrange;
+ } else {
+ tab_number = eap->line2;
+ if (!unaccept_arg0 && **eap->cmdlinep == '-') {
+ --tab_number;
+ if (tab_number < unaccept_arg0) {
+ eap->errmsg = e_invarg;
+ }
+ }
}
+ } else {
+ switch (eap->cmdidx) {
+ case CMD_tabnext:
+ tab_number = tabpage_index(curtab) + 1;
+ if (tab_number > LAST_TAB_NR)
+ tab_number = 1;
+ break;
+ case CMD_tabmove:
+ tab_number = LAST_TAB_NR;
+ break;
+ default:
+ tab_number = tabpage_index(curtab);
+ }
+ }
theend:
- return tab_number;
+ return tab_number;
}
/*