summaryrefslogtreecommitdiff
path: root/src/ex_docmd.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-01-29 15:18:10 +0100
committerBram Moolenaar <Bram@vim.org>2017-01-29 15:18:10 +0100
commitdea2570740a79c9f2c6ce723689e563f19aff5cf (patch)
treeacfde7a4f3eb1c4c2f67385426e26f1d04c4ca3e /src/ex_docmd.c
parent2f72c70657129c16e6b0e413752a775c804f02f8 (diff)
downloadvim-git-dea2570740a79c9f2c6ce723689e563f19aff5cf.tar.gz
patch 8.0.0260: build fails with tiny featuresv8.0.0260
Problem: Build fails with tiny features. Solution: Move get_tabpage_arg() inside #ifdef.
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r--src/ex_docmd.c196
1 files changed, 98 insertions, 98 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 90a009d93..0317050d6 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -5485,104 +5485,6 @@ getargopt(exarg_T *eap)
}
/*
- * 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;
- }
- }
- }
- 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;
-}
-
-/*
* ":abbreviate" and friends.
*/
static void
@@ -7567,6 +7469,104 @@ ex_win_close(
}
/*
+ * 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;
+ }
+ }
+ }
+ 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;
+}
+
+/*
* ":tabclose": close current tab page, unless it is the last one.
* ":tabclose N": close tab page N.
*/