diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-12-17 13:49:16 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-12-17 13:49:16 +0000 |
commit | 8d754fada81df8d65ca6b9ebab72db71bfe5fd94 (patch) | |
tree | 16c34166ba8090876a2ef95773eb3a02c46920cf | |
parent | d097af77797f030e0f29f9bbc298358a5addb2a5 (diff) | |
download | vim-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.c | 58 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |