mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 19:25:11 -07:00
commit
99067b7e56
@ -197,22 +197,29 @@ REORDERING TAB PAGES:
|
|||||||
Move the current tab page to after tab page N. Use zero to
|
Move the current tab page to after tab page N. Use zero to
|
||||||
make the current tab page the first one. Without N the tab
|
make the current tab page the first one. Without N the tab
|
||||||
page is made the last one. >
|
page is made the last one. >
|
||||||
|
:.tabmove " do nothing
|
||||||
:-tabmove " move the tab page to the left
|
:-tabmove " move the tab page to the left
|
||||||
:tabmove " move the tab page to the right
|
:+tabmove " move the tab page to the right
|
||||||
:.tabmove " as above
|
|
||||||
:+tabmove " as above
|
|
||||||
:0tabmove " move the tab page to the beginning of the tab
|
:0tabmove " move the tab page to the beginning of the tab
|
||||||
" list
|
" list
|
||||||
:$tabmove " move the tab page to the end of the tab list
|
:tabmove 0 " as above
|
||||||
<
|
:tabmove " move the tab page to the last
|
||||||
|
:$tabmove " as above
|
||||||
|
:tabmove $ " as above
|
||||||
|
|
||||||
:tabm[ove] +[N]
|
:tabm[ove] +[N]
|
||||||
:tabm[ove] -[N]
|
:tabm[ove] -[N]
|
||||||
Move the current tab page N places to the right (with +) or to
|
Move the current tab page N places to the right (with +) or to
|
||||||
the left (with -).
|
the left (with -). >
|
||||||
|
:tabmove - " move the tab page to the left
|
||||||
|
:tabmove -1 " as above
|
||||||
|
:tabmove + " move the tab page to the right
|
||||||
|
:tabmove +1 " as above
|
||||||
|
|
||||||
|
|
||||||
Note that although it is possible to move a tab behind the N-th one by using
|
Note that although it is possible to move a tab behind the N-th one by using
|
||||||
:Ntabmove, it is impossible to move it by N places by using :+Ntabmove. For
|
:Ntabmove. And move it by N places by using :+Ntabmove. For clarification what
|
||||||
clarification what +N means in this context see |[range]|.
|
+N means in this context see |[range]|.
|
||||||
|
|
||||||
|
|
||||||
LOOPING OVER TAB PAGES:
|
LOOPING OVER TAB PAGES:
|
||||||
|
@ -6345,7 +6345,7 @@ static void ex_tabnext(exarg_T *eap)
|
|||||||
*/
|
*/
|
||||||
static void ex_tabmove(exarg_T *eap)
|
static void ex_tabmove(exarg_T *eap)
|
||||||
{
|
{
|
||||||
int tab_number = 9999;
|
int tab_number;
|
||||||
|
|
||||||
if (eap->arg && *eap->arg != NUL) {
|
if (eap->arg && *eap->arg != NUL) {
|
||||||
char_u *p = eap->arg;
|
char_u *p = eap->arg;
|
||||||
@ -6361,17 +6361,35 @@ static void ex_tabmove(exarg_T *eap)
|
|||||||
} else
|
} else
|
||||||
p = eap->arg;
|
p = eap->arg;
|
||||||
|
|
||||||
if (p == skipdigits(p)) {
|
if (relative == 0) {
|
||||||
/* No numbers as argument. */
|
if (STRCMP(p, "$") == 0) {
|
||||||
eap->errmsg = e_invarg;
|
tab_number = LAST_TAB_NR;
|
||||||
return;
|
} else if (p == skipdigits(p)) {
|
||||||
|
// No numbers as argument.
|
||||||
|
eap->errmsg = e_invarg;
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
tab_number = getdigits(&p);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (*p != NUL) {
|
||||||
|
tab_number = getdigits(&p);
|
||||||
|
} else {
|
||||||
|
tab_number = 1;
|
||||||
|
}
|
||||||
|
tab_number = tab_number * relative + tabpage_index(curtab);
|
||||||
|
if (relative == -1) {
|
||||||
|
--tab_number;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else if (eap->addr_count != 0) {
|
||||||
tab_number = getdigits_int(&p);
|
|
||||||
if (relative != 0)
|
|
||||||
tab_number = tab_number * relative + tabpage_index(curtab) - 1; ;
|
|
||||||
} else if (eap->addr_count != 0)
|
|
||||||
tab_number = eap->line2;
|
tab_number = eap->line2;
|
||||||
|
if (**eap->cmdlinep == '-') {
|
||||||
|
--tab_number;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
tab_number = LAST_TAB_NR;
|
||||||
|
}
|
||||||
|
|
||||||
tabpage_move(tab_number);
|
tabpage_move(tab_number);
|
||||||
}
|
}
|
||||||
|
@ -453,7 +453,7 @@ static int included_patches[] = {
|
|||||||
712,
|
712,
|
||||||
711,
|
711,
|
||||||
710,
|
710,
|
||||||
// 709,
|
709,
|
||||||
// 708,
|
// 708,
|
||||||
707,
|
707,
|
||||||
706,
|
706,
|
||||||
|
@ -3281,17 +3281,27 @@ void goto_tabpage_win(tabpage_T *tp, win_T *wp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// Move the current tab page to after tab page "nr".
|
||||||
* Move the current tab page to before tab page "nr".
|
|
||||||
*/
|
|
||||||
void tabpage_move(int nr)
|
void tabpage_move(int nr)
|
||||||
{
|
{
|
||||||
int n = nr;
|
int n = 1;
|
||||||
tabpage_T *tp;
|
tabpage_T *tp;
|
||||||
|
tabpage_T *tp_dst;
|
||||||
|
|
||||||
if (first_tabpage->tp_next == NULL)
|
if (first_tabpage->tp_next == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
for (tp = first_tabpage; tp->tp_next != NULL && n < nr; tp = tp->tp_next) {
|
||||||
|
++n;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tp == curtab || (nr > 0 && tp->tp_next != NULL
|
||||||
|
&& tp->tp_next == curtab)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tp_dst = tp;
|
||||||
|
|
||||||
/* Remove the current tab page from the list of tab pages. */
|
/* Remove the current tab page from the list of tab pages. */
|
||||||
if (curtab == first_tabpage)
|
if (curtab == first_tabpage)
|
||||||
first_tabpage = curtab->tp_next;
|
first_tabpage = curtab->tp_next;
|
||||||
@ -3304,15 +3314,13 @@ void tabpage_move(int nr)
|
|||||||
tp->tp_next = curtab->tp_next;
|
tp->tp_next = curtab->tp_next;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Re-insert it at the specified position. */
|
// Re-insert it at the specified position.
|
||||||
if (n <= 0) {
|
if (nr <= 0) {
|
||||||
curtab->tp_next = first_tabpage;
|
curtab->tp_next = first_tabpage;
|
||||||
first_tabpage = curtab;
|
first_tabpage = curtab;
|
||||||
} else {
|
} else {
|
||||||
for (tp = first_tabpage; tp->tp_next != NULL && n > 1; tp = tp->tp_next)
|
curtab->tp_next = tp_dst->tp_next;
|
||||||
--n;
|
tp_dst->tp_next = curtab;
|
||||||
curtab->tp_next = tp->tp_next;
|
|
||||||
tp->tp_next = curtab;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Need to redraw the tabline. Tab page contents doesn't change. */
|
/* Need to redraw the tabline. Tab page contents doesn't change. */
|
||||||
|
@ -86,21 +86,35 @@ describe('tab pages', function()
|
|||||||
feed('1gt')
|
feed('1gt')
|
||||||
eq(1, eval('tabpagenr()'))
|
eq(1, eval('tabpagenr()'))
|
||||||
execute('tabmove 5')
|
execute('tabmove 5')
|
||||||
eq(6, eval('tabpagenr()'))
|
eq(5, eval('tabpagenr()'))
|
||||||
execute('tabmove -2')
|
execute('.tabmove')
|
||||||
|
eq(5, eval('tabpagenr()'))
|
||||||
|
execute('tabmove -')
|
||||||
eq(4, eval('tabpagenr()'))
|
eq(4, eval('tabpagenr()'))
|
||||||
|
execute('tabmove +')
|
||||||
|
eq(5, eval('tabpagenr()'))
|
||||||
|
execute('tabmove -2')
|
||||||
|
eq(3, eval('tabpagenr()'))
|
||||||
execute('tabmove +4')
|
execute('tabmove +4')
|
||||||
eq(8, eval('tabpagenr()'))
|
eq(7, eval('tabpagenr()'))
|
||||||
execute('tabmove')
|
execute('tabmove')
|
||||||
eq(10, eval('tabpagenr()'))
|
eq(10, eval('tabpagenr()'))
|
||||||
execute('tabmove -20')
|
execute('tabmove -20')
|
||||||
eq(1, eval('tabpagenr()'))
|
eq(1, eval('tabpagenr()'))
|
||||||
execute('tabmove +20')
|
execute('tabmove +20')
|
||||||
eq(10, eval('tabpagenr()'))
|
eq(10, eval('tabpagenr()'))
|
||||||
|
execute('0tabmove')
|
||||||
|
eq(1, eval('tabpagenr()'))
|
||||||
|
execute('$tabmove')
|
||||||
|
eq(10, eval('tabpagenr()'))
|
||||||
|
execute('tabmove 0')
|
||||||
|
eq(1, eval('tabpagenr()'))
|
||||||
|
execute('tabmove $')
|
||||||
|
eq(10, eval('tabpagenr()'))
|
||||||
execute('3tabmove')
|
execute('3tabmove')
|
||||||
eq(4, eval('tabpagenr()'))
|
eq(4, eval('tabpagenr()'))
|
||||||
execute('7tabmove 5')
|
execute('7tabmove 5')
|
||||||
eq(6, eval('tabpagenr()'))
|
eq(5, eval('tabpagenr()'))
|
||||||
execute('let a="No error caught."')
|
execute('let a="No error caught."')
|
||||||
execute('try')
|
execute('try')
|
||||||
execute('tabmove foo')
|
execute('tabmove foo')
|
||||||
|
Loading…
Reference in New Issue
Block a user