]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.1068: no information about whether request term codes has an effect v9.0.1068
authorBram Moolenaar <Bram@vim.org>
Sat, 17 Dec 2022 13:49:16 +0000 (13:49 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 17 Dec 2022 13:49:16 +0000 (13:49 +0000)
Problem:    No information about whether requesting term codes has an effect.
Solution:   Add ch_log() calls to report the effect of term code responses.
            Avoid deleting an entry and then adding back the same one.

src/term.c
src/version.c

index 590c21cc0e28cdc320e73ec3caabf3a85e2a1d52..b2b14e3d9ff8522f17de29f8bd1458c79aaf7b1f 100644 (file)
@@ -4401,6 +4401,9 @@ add_termcode(char_u *name, char_u *string, int flags)
     int                    i, j;
     char_u         *s;
     int                    len;
+#ifdef FEAT_EVAL
+    char           *action = "Setting";
+#endif
 
     if (string == NULL || *string == NUL)
     {
@@ -4493,6 +4496,9 @@ add_termcode(char_u *name, char_u *string, int flags)
                                   == termcodes[i].code[termcodes[i].len - 1])
                    {
                        // They are equal but for the ";*": don't add it.
+#ifdef FEAT_EVAL
+                       ch_log(NULL, "Termcap entry %s did not change", name);
+#endif
                        vim_free(s);
                        return;
                    }
@@ -4500,6 +4506,10 @@ add_termcode(char_u *name, char_u *string, int flags)
                else
                {
                    // Replace old code.
+#ifdef FEAT_EVAL
+                   ch_log(NULL, "Termcap entry %s was: %s",
+                                                     name, termcodes[i].code);
+#endif
                    vim_free(termcodes[i].code);
                    --tc_len;
                    break;
@@ -4509,11 +4519,17 @@ add_termcode(char_u *name, char_u *string, int flags)
        /*
         * Found alphabetical larger entry, move rest to insert new entry
         */
+#ifdef FEAT_EVAL
+       action = "Adding";
+#endif
        for (j = tc_len; j > i; --j)
            termcodes[j] = termcodes[j - 1];
        break;
     }
 
+#ifdef FEAT_EVAL
+    ch_log(NULL, "%s termcap entry %s to %s", action, name, s);
+#endif
     termcodes[i].name[0] = name[0];
     termcodes[i].name[1] = name[1];
     termcodes[i].code = s;
@@ -6940,15 +6956,47 @@ got_code_from_term(char_u *code, int len)
            if (name[0] == 'C' && name[1] == 'o')
            {
                // Color count is not a key code.
-               may_adjust_color_count(atoi((char *)str));
+               int val = atoi((char *)str);
+#if defined(FEAT_EVAL)
+               if (val == t_colors)
+                   ch_log(NULL, "got_code_from_term(Co): no change (%d)", val);
+               else
+                   ch_log(NULL,
+                              "got_code_from_term(Co): changed from %d to %d",
+                                                               t_colors, val);
+#endif
+               may_adjust_color_count(val);
            }
            else
            {
-               // First delete any existing entry with the same code.
                i = find_term_bykeys(str);
-               if (i >= 0)
-                   del_termcode_idx(i);
-               add_termcode(name, str, ATC_FROM_TERM);
+               if (i >= 0 && name[0] == termcodes[i].name[0]
+                                           && name[1] == termcodes[i].name[1])
+               {
+                   // Existing entry with the same name and code - skip.
+#ifdef FEAT_EVAL
+                   ch_log(NULL, "got_code_from_term(): Entry %c%c did not change",
+                                                            name[0], name[1]);
+#endif
+               }
+               else
+               {
+                   if (i >= 0)
+                   {
+                       // Delete an existing entry using the same code.
+#ifdef FEAT_EVAL
+                       ch_log(NULL, "got_code_from_term(): Deleting entry %c%c with matching keys %s",
+                             termcodes[i].name[0], termcodes[i].name[1], str);
+#endif
+                       del_termcode_idx(i);
+                   }
+#ifdef FEAT_EVAL
+                   else
+                       ch_log(NULL, "got_code_from_term(): Adding entry %c%c with keys %s",
+                                                       name[0], name[1], str);
+#endif
+                   add_termcode(name, str, ATC_FROM_TERM);
+               }
            }
        }
     }
index 7722f3d89e4afe0b745eb069a3bd31c6850f5865..b9755be38f8e7a88e6121e2bb7310fa09c08e3c3 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1068,
 /**/
     1067,
 /**/