]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.0890: no test for what patch 9.0.0827 fixes v9.0.0890
authorBram Moolenaar <Bram@vim.org>
Wed, 16 Nov 2022 20:33:21 +0000 (20:33 +0000)
committerBram Moolenaar <Bram@vim.org>
Wed, 16 Nov 2022 20:33:21 +0000 (20:33 +0000)
Problem:    No test for what patch 9.0.0827 fixes.
Solution:   Add a test (still doesn't fail when fix is reverted).

src/evalvars.c
src/term.c
src/testdir/test_termcodes.vim
src/version.c

index 132de4c717eae7362687d9da84090f0e9ee7c1ac..793f5632c2271d8b91901d54526cac6a2dbba32e 100644 (file)
@@ -1343,6 +1343,11 @@ skip_var_one(char_u *arg, int include_type)
 
     if (*arg == '@' && arg[1] != NUL)
        return arg + 2;
+
+    // termcap option name may have non-alpha characters
+    if (STRNCMP(arg, "&t_", 3) == 0 && arg[3] != NUL && arg[4] != NUL)
+       return arg + 5;
+
     end = find_name_end(*arg == '$' || *arg == '&' ? arg + 1 : arg,
                                   NULL, NULL, FNE_INCL_BR | FNE_CHECK_START);
 
index 4d43139e9b560f7793bed53b3dc3dac90a1a90ff..b626aef26e32651cb6df6eb57f7d31155f00e9c5 100644 (file)
@@ -4720,7 +4720,7 @@ handle_version_response(int first, int *arg, int argc, char_u *tp)
        // else if (version == 115 && arg[0] == 0 && arg[2] == 0)
        //     term_props[TPR_UNDERLINE_RGB].tpr_status = TPR_YES;
 
-       // Kitty sends 1;400{version};{secondary-version}
+       // Kitty up to 9.x sends 1;400{version};{secondary-version}
        if (arg[0] == 1 && arg[1] >= 4000 && arg[1] <= 4009)
        {
            term_props[TPR_KITTY].tpr_status = TPR_YES;
@@ -5520,7 +5520,8 @@ check_termcode(
                            // no match for "code;*X" with "code;"
                            continue;
                        else if (termcodes[idx].code[modslen] == '@'
-                                    && (tp[modslen] != '1' || tp[modslen + 1] != ';'))
+                                        && (tp[modslen] != '1'
+                                                   || tp[modslen + 1] != ';'))
                            // no match for "<Esc>[@" with "<Esc>[1;"
                            continue;
                        else
index 8715ebf146b4bb8dbefeffd602f00241bf7b5654..6d1d39682f82983be29db1ec2dba8ba753858380 100644 (file)
@@ -2531,6 +2531,37 @@ func Test_special_term_keycodes()
   bw!
 endfunc
 
+func Test_home_key_works()
+  " The '@' character in K_HOME must only match "1" when followed by ";",
+  " otherwise this code for Home is not recognized: "<Esc>[1~"
+  " Set termcap values like "xterm" uses them.
+  let save_kh = &t_kh
+  let save_K1 = &t_K1
+  let save_k2 = &t_k2
+  let save_k3 = &t_k3
+  let save_end = &t_@7
+  let &t_K1 = "\<Esc>[1;*~"      " <kHome>
+  let &t_kh = "\<Esc>[@;*H"      " <Home>
+  let &t_k2 = "\<Esc>O*H[1;*~"   " use <F2> for <xHome>
+  let &t_k3 = "\<Esc>[7;*~"      " use <F3> for <zHome>
+  let &t_@7 = "\<Esc>[@;*F"      " <End>
+
+  new
+  call feedkeys("i\<C-K>\<Esc>OH\n\<Esc>", 'tx')
+  call feedkeys("i\<C-K>\<Esc>[1~\n\<Esc>", 'tx')
+  call assert_equal([
+        \ '<Home>',
+        \ '<kHome>',
+        \ ''], getline(1, '$'))
+
+  bwipe!
+  let &t_kh = save_kh
+  let &t_K1 = save_K1
+  let &t_k2 = save_k2
+  let &t_k3 = save_k3
+  let &t_@7 = save_end
+endfunc
+
 func Test_terminal_builtin_without_gui()
   CheckNotMSWindows
 
index e6526e02791bb21cfbcd69cd0b417f15f87c8e81..927f9c00ca14b2e138ef3f127a3ba966da39a4d3 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    890,
 /**/
     889,
 /**/