Patch 8.2.3731
Problem:    "set! termcap" shows codes in one column, but not keys.
Solution:   Also use one column for keys. (closes #9258)
Files:      src/option.c, src/term.c, src/proto/term.pro,
            src/testdir/test_set.vim


*** ../vim-8.2.3730/src/option.c        2021-12-03 11:08:34.256842709 +0000
--- src/option.c        2021-12-03 20:18:52.019888823 +0000
***************
*** 1218,1228 ****
   * does not need to be expanded with option_expand().
   * "opt_flags":
   * 0 for ":set"
!  * OPT_GLOBAL   for ":setglobal"
!  * OPT_LOCAL    for ":setlocal" and a modeline
!  * OPT_MODELINE for a modeline
!  * OPT_WINONLY  to only set window-local options
!  * OPT_NOWIN  to skip setting window-local options
   *
   * returns FAIL if an error is detected, OK otherwise
   */
--- 1218,1229 ----
   * does not need to be expanded with option_expand().
   * "opt_flags":
   * 0 for ":set"
!  * OPT_GLOBAL     for ":setglobal"
!  * OPT_LOCAL      for ":setlocal" and a modeline
!  * OPT_MODELINE   for a modeline
!  * OPT_WINONLY    to only set window-local options
!  * OPT_NOWIN    to skip setting window-local options
!  * OPT_ONECOLUMN  do not use multiple columns
   *
   * returns FAIL if an error is detected, OK otherwise
   */
***************
*** 1290,1296 ****
        else if (STRNCMP(arg, "termcap", 7) == 0 && !(opt_flags & OPT_MODELINE))
        {
            showoptions(2, opt_flags);
!           show_termcodes();
            did_show = TRUE;
            arg += 7;
        }
--- 1291,1297 ----
        else if (STRNCMP(arg, "termcap", 7) == 0 && !(opt_flags & OPT_MODELINE))
        {
            showoptions(2, opt_flags);
!           show_termcodes(opt_flags);
            did_show = TRUE;
            arg += 7;
        }
*** ../vim-8.2.3730/src/term.c  2021-12-03 13:20:25.895976919 +0000
--- src/term.c  2021-12-03 20:43:01.664358432 +0000
***************
*** 6217,6225 ****
  /*
   * Show all termcodes (for ":set termcap")
   * This code looks a lot like showoptions(), but is different.
   */
      void
! show_termcodes(void)
  {
      int               col;
      int               *items;
--- 6217,6226 ----
  /*
   * Show all termcodes (for ":set termcap")
   * This code looks a lot like showoptions(), but is different.
+  * "flags" can have OPT_ONECOLUMN.
   */
      void
! show_termcodes(int flags)
  {
      int               col;
      int               *items;
***************
*** 6244,6255 ****
      msg_puts_title(_("\n--- Terminal keys ---"));
  
      /*
!      * do the loop two times:
       * 1. display the short items (non-strings and short strings)
       * 2. display the medium items (medium length strings)
       * 3. display the long items (remaining strings)
       */
!     for (run = 1; run <= 3 && !got_int; ++run)
      {
        /*
         * collect the items in items[]
--- 6245,6257 ----
      msg_puts_title(_("\n--- Terminal keys ---"));
  
      /*
!      * Do the loop three times:
       * 1. display the short items (non-strings and short strings)
       * 2. display the medium items (medium length strings)
       * 3. display the long items (remaining strings)
+      * When "flags" has OPT_ONECOLUMN do everything in 3.
       */
!     for (run = (flags & OPT_ONECOLUMN) ? 3 : 1; run <= 3 && !got_int; ++run)
      {
        /*
         * collect the items in items[]
***************
*** 6259,6267 ****
        {
            len = show_one_termcode(termcodes[i].name,
                                                    termcodes[i].code, FALSE);
!           if (len <= INC3 - GAP ? run == 1
                        : len <= INC2 - GAP ? run == 2
!                       : run == 3)
                items[item_count++] = i;
        }
  
--- 6261,6270 ----
        {
            len = show_one_termcode(termcodes[i].name,
                                                    termcodes[i].code, FALSE);
!           if ((flags & OPT_ONECOLUMN) ||
!                   (len <= INC3 - GAP ? run == 1
                        : len <= INC2 - GAP ? run == 2
!                       : run == 3))
                items[item_count++] = i;
        }
  
*** ../vim-8.2.3730/src/proto/term.pro  2021-11-19 11:27:49.099056921 +0000
--- src/proto/term.pro  2021-12-03 20:23:38.683536744 +0000
***************
*** 80,86 ****
  void term_get_fg_color(char_u *r, char_u *g, char_u *b);
  void term_get_bg_color(char_u *r, char_u *g, char_u *b);
  char_u *replace_termcodes(char_u *from, char_u **bufp, int flags, int 
*did_simplify);
! void show_termcodes(void);
  int show_one_termcode(char_u *name, char_u *code, int printit);
  void update_tcap(int attr);
  void swap_tcap(void);
--- 80,86 ----
  void term_get_fg_color(char_u *r, char_u *g, char_u *b);
  void term_get_bg_color(char_u *r, char_u *g, char_u *b);
  char_u *replace_termcodes(char_u *from, char_u **bufp, int flags, int 
*did_simplify);
! void show_termcodes(int flags);
  int show_one_termcode(char_u *name, char_u *code, int printit);
  void update_tcap(int attr);
  void swap_tcap(void);
*** ../vim-8.2.3730/src/testdir/test_set.vim    2021-07-12 20:43:15.921878554 
+0100
--- src/testdir/test_set.vim    2021-12-03 20:42:02.060782461 +0000
***************
*** 1,5 ****
--- 1,7 ----
  " Tests for the :set command
  
+ source check.vim
+ 
  function Test_set_backslash()
    let isk_save = &isk
  
***************
*** 45,48 ****
--- 47,78 ----
    setglobal textwidth&
  endfunc
  
+ func Test_set_termcap()
+   CheckNotGui
+ 
+   let lines = split(execute('set termcap'), "\n")
+   call assert_match('--- Terminal codes ---', lines[0])
+   " four columns
+   call assert_match('t_..=.*t_..=.*t_..=.*t_..=', lines[1])
+ 
+   for keys_idx in range(len(lines))
+     if lines[keys_idx] =~ '--- Terminal keys ---'
+       break
+     endif
+   endfor
+   call assert_true(keys_idx < len(lines))
+   " three columns
+   call assert_match('t_.. .*t_.. .*t_.. ', lines[keys_idx + 1])
+ 
+   let more_lines = split(execute('set! termcap'), "\n")
+   for i in range(len(more_lines))
+     if more_lines[i] =~ '--- Terminal keys ---'
+       break
+     endif
+   endfor
+   call assert_true(i < len(more_lines))
+   call assert_true(i > keys_idx)
+   call assert_true(len(more_lines) - i > len(lines) - keys_idx)
+ endfunc
+ 
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.3730/src/version.c       2021-12-03 19:24:38.159618697 +0000
--- src/version.c       2021-12-03 20:25:18.287419732 +0000
***************
*** 755,756 ****
--- 755,758 ----
  {   /* Add new patch number below this line */
+ /**/
+     3731,
  /**/

-- 
You can test a person's importance in the organization by asking how much RAM
his computer has.  Anybody who knows the answer to that question is not a
decision-maker.
                                (Scott Adams - The Dilbert principle)

 /// 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/20211203204349.117321C28E2%40moolenaar.net.

Raspunde prin e-mail lui