patch 9.1.0683: mode() returns wrong value with <Cmd> mapping

Commit: 
https://github.com/vim/vim/commit/0fd1cb1b1fc90b68cb37f71e65289eadac3588a6
Author: kuuote <znmxo...@gmail.com>
Date:   Tue Aug 20 19:53:17 2024 +0200

    patch 9.1.0683: mode() returns wrong value with <Cmd> mapping
    
    Problem:  mode() returns wrong value with <Cmd> mapping
    Solution: Change decision priority of VIsual_active and move
              visual mode a bit further down (kuuote)
    
    closes: #15533
    
    Signed-off-by: kuuote <znmxo...@gmail.com>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/misc1.c b/src/misc1.c
index 834848886..0898efb33 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -678,17 +678,6 @@ get_mode(char_u *buf)
        buf[i++] = 't';
     }
 #endif
-    else if (VIsual_active)
-    {
-       if (VIsual_select)
-           buf[i++] = VIsual_mode + 's' - 'v';
-       else
-       {
-           buf[i++] = VIsual_mode;
-           if (restart_VIsual_select)
-               buf[i++] = 's';
-       }
-    }
     else if (State == MODE_HITRETURN || State == MODE_ASKMORE
                                                      || State == MODE_SETWSIZE
                || State == MODE_CONFIRM)
@@ -731,6 +720,17 @@ get_mode(char_u *buf)
        if ((State & MODE_CMDLINE) && cmdline_overstrike())
            buf[i++] = 'r';
     }
+    else if (VIsual_active)
+    {
+       if (VIsual_select)
+           buf[i++] = VIsual_mode + 's' - 'v';
+       else
+       {
+           buf[i++] = VIsual_mode;
+           if (restart_VIsual_select)
+               buf[i++] = 's';
+       }
+    }
     else
     {
        buf[i++] = 'n';
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 8e973f6c9..1021d0509 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -923,6 +923,10 @@ func Test_mode()
   call feedkeys("gQ\<Insert>\<F2>vi\<CR>", 'xt')
   call assert_equal("c-cvr", g:current_modes)
 
+  " Commandline mode in Visual mode should return "c-c", never "v-v".
+  call feedkeys("v\<Cmd>call input('')\<CR>\<F2>\<CR>\<Esc>", 'xt')
+  call assert_equal("c-c", g:current_modes)
+
   " Executing commands in Vim Ex mode should return "cv", never "cvr",
   " as Cmdline editing has already ended.
   call feedkeys("gQcall Save_mode()\<CR>vi\<CR>", 'xt')
diff --git a/src/version.c b/src/version.c
index c4472cf60..8d26a0dc0 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 */
+/**/
+    683,
 /**/
     682,
 /**/

-- 
-- 
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/E1sgT9O-00ENcO-65%40256bit.org.

Raspunde prin e-mail lui