changeset 18289:16dd8ebc2339 v8.1.2139

patch 8.1.2139: the modifyOtherKeys codes are not tested Commit: https://github.com/vim/vim/commit/18a79a68413365cd7672728d54615ca708764e23 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Oct 12 15:36:11 2019 +0200 patch 8.1.2139: the modifyOtherKeys codes are not tested Problem: The modifyOtherKeys codes are not tested. Solution: Add a test case.
author Bram Moolenaar <Bram@vim.org>
date Sat, 12 Oct 2019 15:45:06 +0200
parents d65f4e1cc30f
children b31d3745f179
files src/testdir/test_termcodes.vim src/version.c
diffstat 2 files changed, 66 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_termcodes.vim
+++ b/src/testdir/test_termcodes.vim
@@ -845,3 +845,67 @@ func Test_get_termcode()
 
   set ttybuiltin
 endfunc
+
+func GetEscCodeCSI27(key, modifier)
+  let key = printf("%d", char2nr(a:key))
+  let mod = printf("%d", a:modifier)
+  return "\<Esc>[27;" .. mod .. ';' .. key .. '~'
+endfunc
+
+func GetEscCodeCSIu(key, modifier)
+  let key = printf("%d", char2nr(a:key))
+  let mod = printf("%d", a:modifier)
+  return "\<Esc>[" .. key .. ';' .. mod .. 'u'
+endfunc
+
+" This checks the CSI sequences when in modifyOtherKeys mode.
+" The mode doesn't need to be enabled, the codes are always detected.
+func RunTest_modifyOtherKeys(func)
+  new
+  set timeoutlen=20
+
+  " Shift-X is send as 'X' with the shift modifier
+  call feedkeys('a' .. a:func('X', 2) .. "\<Esc>", 'Lx!')
+  call assert_equal('X', getline(1))
+
+  " Ctrl-i is Tab
+  call setline(1, '')
+  call feedkeys('a' .. a:func('i', 5) .. "\<Esc>", 'Lx!')
+  call assert_equal("\t", getline(1))
+
+  " Ctrl-I is also Tab
+  call setline(1, '')
+  call feedkeys('a' .. a:func('I', 5) .. "\<Esc>", 'Lx!')
+  call assert_equal("\t", getline(1))
+
+  " Alt-x is ø
+  call setline(1, '')
+  call feedkeys('a' .. a:func('x', 3) .. "\<Esc>", 'Lx!')
+  call assert_equal("ø", getline(1))
+
+  " Meta-x is also ø
+  call setline(1, '')
+  call feedkeys('a' .. a:func('x', 9) .. "\<Esc>", 'Lx!')
+  call assert_equal("ø", getline(1))
+
+  " Alt-X is Ø
+  call setline(1, '')
+  call feedkeys('a' .. a:func('X', 3) .. "\<Esc>", 'Lx!')
+  call assert_equal("Ø", getline(1))
+
+  " Meta-X is ø
+  call setline(1, '')
+  call feedkeys('a' .. a:func('X', 9) .. "\<Esc>", 'Lx!')
+  call assert_equal("Ø", getline(1))
+
+  bwipe!
+  set timeoutlen&
+endfunc
+
+func Test_modifyOtherKeys_CSI27()
+  call RunTest_modifyOtherKeys(function('GetEscCodeCSI27'))
+endfunc
+
+func Test_modifyOtherKeys_CSIu()
+  call RunTest_modifyOtherKeys(function('GetEscCodeCSIu'))
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2139,
+/**/
     2138,
 /**/
     2137,