Patch 9.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.
Files:      src/term.c


*** ../vim-9.0.1067/src/term.c  2022-12-16 18:33:16.345960071 +0000
--- src/term.c  2022-12-17 13:41:36.224438676 +0000
***************
*** 4401,4406 ****
--- 4401,4409 ----
      int                   i, j;
      char_u        *s;
      int                   len;
+ #ifdef FEAT_EVAL
+     char          *action = "Setting";
+ #endif
  
      if (string == NULL || *string == NUL)
      {
***************
*** 4493,4498 ****
--- 4496,4504 ----
                                   == 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,4505 ****
--- 4506,4515 ----
                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,4519 ****
--- 4519,4535 ----
        /*
         * 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,6954 ****
            if (name[0] == 'C' && name[1] == 'o')
            {
                // Color count is not a key code.
!               may_adjust_color_count(atoi((char *)str));
            }
            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);
            }
        }
      }
--- 6956,7002 ----
            if (name[0] == 'C' && name[1] == 'o')
            {
                // Color count is not a key code.
!               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
            {
                i = find_term_bykeys(str);
!               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);
!               }
            }
        }
      }
*** ../vim-9.0.1067/src/version.c       2022-12-17 11:32:37.918855670 +0000
--- src/version.c       2022-12-17 12:57:48.996509873 +0000
***************
*** 697,698 ****
--- 697,700 ----
  {   /* Add new patch number below this line */
+ /**/
+     1068,
  /**/

-- 
Proverb: A nightingale that forgets the lyrics is a hummingbird.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20221217135023.36C201C0869%40moolenaar.net.

Raspunde prin e-mail lui