forked from aniani/vim
updated for version 7.3.591
Problem: Can only move to a tab by absolute number. Solution: Move a number of tabs to the left or the right. (Lech Lorens)
This commit is contained in:
@@ -7478,7 +7478,42 @@ ex_tabnext(eap)
|
||||
ex_tabmove(eap)
|
||||
exarg_T *eap;
|
||||
{
|
||||
tabpage_move(eap->addr_count == 0 ? 9999 : (int)eap->line2);
|
||||
int tab_number = 9999;
|
||||
|
||||
if (eap->arg && *eap->arg != NUL)
|
||||
{
|
||||
char_u *p = eap->arg;
|
||||
int relative = 0; /* argument +N/-N means: move N places to the
|
||||
* right/left relative to the current position. */
|
||||
|
||||
if (*eap->arg == '-')
|
||||
{
|
||||
relative = -1;
|
||||
p = eap->arg + 1;
|
||||
}
|
||||
else if (*eap->arg == '+')
|
||||
{
|
||||
relative = 1;
|
||||
p = eap->arg + 1;
|
||||
}
|
||||
else
|
||||
p = eap->arg;
|
||||
|
||||
if (p == skipdigits(p))
|
||||
{
|
||||
/* No numbers as argument. */
|
||||
eap->errmsg = e_invarg;
|
||||
return;
|
||||
}
|
||||
|
||||
tab_number = getdigits(&p);
|
||||
if (relative != 0)
|
||||
tab_number = tab_number * relative + tabpage_index(curtab) - 1;;
|
||||
}
|
||||
else if (eap->addr_count != 0)
|
||||
tab_number = eap->line2;
|
||||
|
||||
tabpage_move(tab_number);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user