forked from aniani/vim
patch 8.0.0260: build fails with tiny features
Problem: Build fails with tiny features. Solution: Move get_tabpage_arg() inside #ifdef.
This commit is contained in:
196
src/ex_docmd.c
196
src/ex_docmd.c
@@ -5484,104 +5484,6 @@ getargopt(exarg_T *eap)
|
|||||||
return OK;
|
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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.
|
* ":abbreviate" and friends.
|
||||||
*/
|
*/
|
||||||
@@ -7566,6 +7468,104 @@ ex_win_close(
|
|||||||
win_close_othertab(win, !need_hide && !P_HID(buf), tp);
|
win_close_othertab(win, !need_hide && !P_HID(buf), tp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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": close current tab page, unless it is the last one.
|
||||||
* ":tabclose N": close tab page N.
|
* ":tabclose N": close tab page N.
|
||||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
260,
|
||||||
/**/
|
/**/
|
||||||
259,
|
259,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user