Skip to content

Commit

Permalink
patch 9.1.0205: Cannot use modifiers before :-Ntabmove
Browse files Browse the repository at this point in the history
Problem:  Cannot use modifiers before :-Ntabmove.
Solution: Check backwards from the command instead of checking from the
          start of the command line. Slightly adjust docs to make them
          more consistent (zeertzjq).

closes: vim#14289

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
  • Loading branch information
zeertzjq authored and chrisbra committed Mar 25, 2024
1 parent 6dcf59b commit 076faac
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 10 deletions.
9 changes: 4 additions & 5 deletions runtime/doc/tabpage.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
*tabpage.txt* For Vim version 9.1. Last change: 2022 Feb 02
*tabpage.txt* For Vim version 9.1. Last change: 2024 Mar 25


VIM REFERENCE MANUAL by Bram Moolenaar
Expand Down Expand Up @@ -196,7 +196,7 @@ gt *i_CTRL-<PageDown>* *i_<C-PageDown>*
:1tabnext " go to the first tab page
:$tabnext " go to the last tab page
:tabnext $ " as above
:tabnext # " go to the last accessed tab page
:tabnext # " go to the last accessed tab page
:tabnext - " go to the previous tab page
:tabnext -1 " as above
:tabnext + " go to the next tab page
Expand Down Expand Up @@ -248,13 +248,12 @@ REORDERING TAB PAGES:
Move the current tab page to after tab page N. Use zero to
make the current tab page the first one. N is counted before
the move, thus if the second tab is the current one,
`:tabmove 1` and `:tabmove 2` have no effect.
`:tabmove 1` and `:tabmove 2` have no effect.
Without N the tab page is made the last one. >
:.tabmove " do nothing
:-tabmove " move the tab page to the left
:+tabmove " move the tab page to the right
:0tabmove " move the tab page to the beginning of the tab
" list
:0tabmove " move the tab page to the first
:tabmove 0 " as above
:tabmove " move the tab page to the last
:$tabmove " as above
Expand Down
16 changes: 12 additions & 4 deletions src/ex_docmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -6317,11 +6317,19 @@ get_tabpage_arg(exarg_T *eap)
else
{
tab_number = eap->line2;
if (!unaccept_arg0 && *skipwhite(*eap->cmdlinep) == '-')
if (!unaccept_arg0)
{
--tab_number;
if (tab_number < unaccept_arg0)
eap->errmsg = _(e_invalid_range);
char_u *cmdp = eap->cmd;

while (--cmdp > *eap->cmdlinep
&& (VIM_ISWHITE(*cmdp) || VIM_ISDIGIT(*cmdp)))
;
if (*cmdp == '-')
{
--tab_number;
if (tab_number < unaccept_arg0)
eap->errmsg = _(e_invalid_range);
}
}
}
}
Expand Down
8 changes: 7 additions & 1 deletion src/testdir/test_tabpage.vim
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,16 @@ function Test_tabpage()
call assert_equal(3, tabpagenr())
+3tabmove
call assert_equal(6, tabpagenr())
silent -tabmove
call assert_equal(5, tabpagenr())
silent -2 tabmove
call assert_equal(3, tabpagenr())
silent -2 tabmove
call assert_equal(1, tabpagenr())

" The following are a no-op
norm! 2gt
call assert_equal(2, tabpagenr())
" The following are a no-op
tabmove 2
call assert_equal(2, tabpagenr())
2tabmove
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
205,
/**/
204,
/**/
Expand Down

0 comments on commit 076faac

Please sign in to comment.