patch 9.2.0324: 0x9b byte not unescaped in <Cmd> mapping

Commit: 
https://github.com/vim/vim/commit/3e2012914e0905eebfcf5de27a977ab166f93494
Author: zeertzjq <[email protected]>
Date:   Thu Apr 9 18:55:02 2026 +0000

    patch 9.2.0324: 0x9b byte not unescaped in <Cmd> mapping
    
    Problem:  0x9b byte not unescaped in <Cmd> mapping (BenYip).
    Solution: Translate K_CSI to CSI like what is done in vgetc().
              (zeertzjq).
    
    fixes:  #19936
    closes: #19937
    
    Signed-off-by: zeertzjq <[email protected]>
    Signed-off-by: Christian Brabandt <[email protected]>

diff --git a/src/getchar.c b/src/getchar.c
index b4ef9ce82..57e407b89 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -4283,6 +4283,13 @@ getcmdkeycmd(
            // to a single Esc here.
            if (c1 == K_ESC)
                c1 = ESC;
+
+#ifdef FEAT_GUI
+           // Translate K_CSI to CSI.  The special key is only used to
+           // avoid it being recognized as the start of a special key.
+           if (c1 == K_CSI)
+               c1 = CSI;
+#endif
        }
 
        if (got_int)
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index 01f2d1f94..29f42848d 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -1124,7 +1124,11 @@ func Test_map_cmdkey()
   call setline(1, ['some short lines', 'of test text'])
   call feedkeys(":bar\<F2>x\<C-B>\"
", 'xt')
   call assert_equal('"barx', @:)
-  unmap! <F2>
+
+  " test for chars with 0x80 or 0x9b bytes
+  map <F2> <Cmd>let x = '洛固四最倒倀'<CR>
+  call feedkeys("\<F2>", 'xt')
+  call assert_equal('洛固四最倒倀', x)
 
   " test for calling a <SID> function
   let lines =<< trim END
@@ -1137,7 +1141,10 @@ func Test_map_cmdkey()
   source Xscript
   call feedkeys("\<F2>", 'xt')
   call assert_equal(32, g:x)
+  unlet g:x
 
+  unmap <F2>
+  unmap! <F2>
   unmap <F3>
   unmap! <F3>
   %bw!
diff --git a/src/version.c b/src/version.c
index fbe3e48eb..99a25eb7c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -734,6 +734,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    324,
 /**/
     323,
 /**/

-- 
-- 
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 [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1wAubl-00C56d-1r%40256bit.org.

Raspunde prin e-mail lui