summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-12-17 13:49:16 +0000
committerBram Moolenaar <Bram@vim.org>2022-12-17 13:49:16 +0000
commit8d754fada81df8d65ca6b9ebab72db71bfe5fd94 (patch)
tree16c34166ba8090876a2ef95773eb3a02c46920cf
parentd097af77797f030e0f29f9bbc298358a5addb2a5 (diff)
downloadvim-git-8d754fada81df8d65ca6b9ebab72db71bfe5fd94.tar.gz
patch 9.0.1068: no information about whether request term codes has an effectv9.0.1068
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.
-rw-r--r--src/term.c58
-rw-r--r--src/version.c2
2 files changed, 55 insertions, 5 deletions
diff --git a/src/term.c b/src/term.c
index 590c21cc0..b2b14e3d9 100644
--- a/src/term.c
+++ b/src/term.c
@@ -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);
+ }
}
}
}
diff --git a/src/version.c b/src/version.c
index 7722f3d89..b9755be38 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1068,
+/**/
1067,
/**/
1066,