patch 9.1.0205: Cannot use modifiers before :-Ntabmove

Commit: 
https://github.com/vim/vim/commit/076faac5378cf517baa8c331c57488d39efadec0
Author: zeertzjq <zeert...@outlook.com>
Date:   Mon Mar 25 16:41:06 2024 +0100

    patch 9.1.0205: Cannot use modifiers before :-Ntabmove
    
    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: #14289
    
    Signed-off-by: zeertzjq <zeert...@outlook.com>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt
index a98fe956f..a922604c8 100644
--- a/runtime/doc/tabpage.txt
+++ b/runtime/doc/tabpage.txt
@@ -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
@@ -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
@@ -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
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 19b1d85c6..21ba0d5bc 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -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);
+               }
            }
        }
     }
diff --git a/src/testdir/test_tabpage.vim b/src/testdir/test_tabpage.vim
index a531f1933..3624790e3 100644
--- a/src/testdir/test_tabpage.vim
+++ b/src/testdir/test_tabpage.vim
@@ -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
diff --git a/src/version.c b/src/version.c
index a1b26073f..5d9032368 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    205,
 /**/
     204,
 /**/

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1romVW-005TtF-Kx%40256bit.org.

Raspunde prin e-mail lui