To: vim_dev@googlegroups.com Subject: Patch 8.1.2194 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.1.2194 Problem: ModifyOtherKeys is not enabled by default. Solution: Add t_TI and t_TE to the builtin xterm termcap. Files: runtime/doc/map.txt, src/term.c *** ../vim-8.1.2193/runtime/doc/map.txt 2019-05-05 18:11:46.316590662 +0200 --- runtime/doc/map.txt 2019-10-20 19:21:07.285238563 +0200 *************** *** 20,26 **** 1.8 Examples |map-examples| 1.9 Using mappings |map-typing| 1.10 Mapping alt-keys |:map-alt-keys| ! 1.11 Mapping an operator |:map-operator| 2. Abbreviations |abbreviations| 3. Local mappings and functions |script-local| 4. User-defined commands |user-commands| --- 20,27 ---- 1.8 Examples |map-examples| 1.9 Using mappings |map-typing| 1.10 Mapping alt-keys |:map-alt-keys| ! 1.11 Mapping in modifyOtherKeys mode |modifyOtherKeys| ! 1.12 Mapping an operator |:map-operator| 2. Abbreviations |abbreviations| 3. Local mappings and functions |script-local| 4. User-defined commands |user-commands| *************** *** 777,782 **** --- 778,786 ---- always work. But in a terminal Vim gets a sequence of bytes and has to figure out whether ALT was pressed or not. + If the terminal supports the modifyOtherKeys mode and it has been enabled, + then Vim can recognize more key combinations, see |modifyOtherKeys| below. + By default Vim assumes that pressing the ALT key sets the 8th bit of a typed character. Most decent terminals can work that way, such as xterm, aterm and rxvt. If your mappings don't work it might be that the terminal is *************** *** 814,820 **** using other applications but not when inside Vim. ! 1.11 MAPPING AN OPERATOR *:map-operator* An operator is used before a {motion} command. To define your own operator you must create mapping that first sets the 'operatorfunc' option and then --- 818,848 ---- using other applications but not when inside Vim. ! 1.11 MAPPING IN modifyOtherKeys mode *modifyOtherKeys* ! ! Xterm and a few other terminals can be put in a mode where keys with modifiers ! are sent with a special escape code. Vim recognizes these codes and can then ! make a difference between CTRL-H and Backspace, even when Backspace sends the ! character 8. And many more special keys. ! ! For xterm modifyOtherKeys is enabled in the builtin termcap entry. If this is ! not used you can enable modifyOtherKeys with these lines in your vimrc: > ! let &t_TI = "\[>4;2m" ! let &t_TE = "\[>4;m" ! ! In case the modifyOtherKeys mode causes problems you can disable it: > ! let &t_TI = "" ! let &t_TE = "" ! It does not take effect immediately. To have this work without restarting Vim ! execute a shell command, e.g.: `!ls` ! ! 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. ! ! ! 1.12 MAPPING AN OPERATOR *:map-operator* An operator is used before a {motion} command. To define your own operator you must create mapping that first sets the 'operatorfunc' option and then *** ../vim-8.1.2193/src/term.c 2019-10-18 21:26:01.607768532 +0200 --- src/term.c 2019-10-20 19:04:11.227750515 +0200 *************** *** 912,917 **** --- 912,919 ---- {(int)KS_TE, IF_EB("\033[2J\033[?47l\0338", ESC_STR "[2J" ESC_STR_nc "[?47l" ESC_STR_nc "8")}, # endif + {(int)KS_CTI, IF_EB("\033[>4;2m", ESC_STR_nc "[>4;2m")}, + {(int)KS_CTE, IF_EB("\033[>4;m", ESC_STR_nc "[>4;m")}, {(int)KS_CIS, IF_EB("\033]1;", ESC_STR "]1;")}, {(int)KS_CIE, "\007"}, {(int)KS_TS, IF_EB("\033]2;", ESC_STR "]2;")}, *** ../vim-8.1.2193/src/version.c 2019-10-20 18:45:59.716195126 +0200 --- src/version.c 2019-10-20 19:21:55.341075217 +0200 *************** *** 743,744 **** --- 743,746 ---- { /* Add new patch number below this line */ + /**/ + 2194, /**/ -- ARTHUR: Old woman! DENNIS: Man! ARTHUR: Man. I'm sorry. Old man, What knight live in that castle over there? DENNIS: I'm thirty-seven. "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// 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 ///