To: vim_dev@googlegroups.com Subject: Patch 8.2.1811 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.1811 Problem: Mapping Ctrl-key does not work for '{', '}' and '|'. Solution: Remove the shift modifier. (closes #6457) Files: runtime/doc/map.txt, src/misc2.c, src/testdir/test_termcodes.vim *** ../vim-8.2.1810/runtime/doc/map.txt 2020-08-01 20:45:06.924096157 +0200 --- runtime/doc/map.txt 2020-10-07 17:25:35.313913734 +0200 *************** *** 840,852 **** When modifyOtherKeys is enabled you can map and : > imap [[[ ! imap {{{ ! Without modifyOtherKeys and are indistinguishable from Esc. ! ! A known side effect effect is that in Insert mode the raw escape sequence is ! inserted after the CTRL-V key. This can be used to check whether ! modifyOtherKeys is enabled: In Insert mode type CTRL-V CTRL-V, if you get ! one byte then modifyOtherKeys is off, if you get <1b>27;5;118~ then it is on. When the 'esckeys' option is off, then modifyOtherKeys will be disabled in Insert mode to avoid every key with a modifier causing Insert mode to end. --- 850,869 ---- When modifyOtherKeys is enabled you can map and : > imap [[[ ! imap {{{ ! Without modifyOtherKeys and are indistinguishable from Esc. ! Note that is used and not or . This works on most ! keyboards. Similarly, is used instead of or and ! instead of or . Note that '|' has a special meaning in a ! mapping, see |map-bar|. ! ! WARNING: if you map you may very well break any key codes that start ! with Esc. Make sure it comes AFTER other mappings. ! ! A known side effect is that in Insert mode the raw escape sequence is inserted ! after the CTRL-V key. This can be used to check whether modifyOtherKeys is ! enabled: In Insert mode type CTRL-SHIFT-V CTRL-V, if you get one byte then ! modifyOtherKeys is off, if you get <1b>27;5;118~ then it is on. When the 'esckeys' option is off, then modifyOtherKeys will be disabled in Insert mode to avoid every key with a modifier causing Insert mode to end. *** ../vim-8.2.1810/src/misc2.c 2020-10-07 16:12:33.905930345 +0200 --- src/misc2.c 2020-10-07 17:22:13.930487925 +0200 *************** *** 2974,2980 **** /* * Some keys already have Shift included, pass them as normal keys. ! * Not when Ctrl is also used, because and are different. * Also for and . * This includes all printable ASCII characters except numbers and a-z. */ --- 2974,2981 ---- /* * Some keys already have Shift included, pass them as normal keys. ! * When Ctrl is also used and are different, but should ! * be . Same for and . * Also for and . * This includes all printable ASCII characters except numbers and a-z. */ *************** *** 2989,2994 **** --- 2990,3000 ---- || (key >= '[' && key <= '`') || (key >= '{' && key <= '~'))) return modifiers & ~MOD_MASK_SHIFT; + + if (modifiers == (MOD_MASK_SHIFT | MOD_MASK_CTRL) + && (key == '{' || key == '}' || key == '|')) + return modifiers & ~MOD_MASK_SHIFT; + return modifiers; } *** ../vim-8.2.1810/src/testdir/test_termcodes.vim 2020-10-07 16:12:33.909930340 +0200 --- src/testdir/test_termcodes.vim 2020-10-07 17:23:23.698288353 +0200 *************** *** 2126,2131 **** --- 2126,2149 ---- func Test_mapping_works_with_shift_ctrl() call RunTest_mapping_works_with_mods(function('GetEscCodeCSI27'), 'C-S', 6) call RunTest_mapping_works_with_mods(function('GetEscCodeCSIu'), 'C-S', 6) + + new + set timeoutlen=10 + + " Ctrl-Shift-[ actually produces CTRL-Shift-{ which is mapped as + call RunTest_mapping_mods('', '{', function('GetEscCodeCSI27'), 6) + call RunTest_mapping_mods('', '{', function('GetEscCodeCSIu'), 6) + + " Ctrl-Shift-] actually produces CTRL-Shift-} which is mapped as + call RunTest_mapping_mods('', '{', function('GetEscCodeCSI27'), 6) + call RunTest_mapping_mods('', '{', function('GetEscCodeCSIu'), 6) + + " Ctrl-Shift-\ actually produces CTRL-Shift-| which is mapped as + call RunTest_mapping_mods('', '|', function('GetEscCodeCSI27'), 6) + call RunTest_mapping_mods('', '|', function('GetEscCodeCSIu'), 6) + + bwipe! + set timeoutlen& endfunc " Below we also test the "u" code with Alt, This works, but libvterm would not *** ../vim-8.2.1810/src/version.c 2020-10-07 16:54:48.523247873 +0200 --- src/version.c 2020-10-07 17:19:01.291043780 +0200 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 1811, /**/ -- The future isn't what it used to be. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///