1
0
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:
Bram Moolenaar
2012-07-06 18:27:39 +02:00
parent 0306ac33a5
commit 8cb8dca2f0
7 changed files with 88 additions and 3 deletions

View File

@@ -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);
}
/*