patch 9.0.1068: no information about whether request term codes has an effect
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.
diff --git a/src/term.c b/src/term.c
index 590c21c..b2b14e3 100644
--- a/src/term.c
+++ b/src/term.c
@@ -4401,6 +4401,9 @@
int i, j;
char_u *s;
int len;
+#ifdef FEAT_EVAL
+ char *action = "Setting";
+#endif
if (string == NULL || *string == NUL)
{
@@ -4493,6 +4496,9 @@
== 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 @@
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 @@
/*
* 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 @@
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);
+ }
}
}
}
diff --git a/src/version.c b/src/version.c
index 7722f3d..b9755be 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1068,
+/**/
1067,
/**/
1066,