Patch 8.2.3628
Problem:    Looking up terminal colors is a bit slow.
Solution:   Cache the terminal colors. (closes #9130, closes #9058)
Files:      src/highlight.c, src/libvterm/include/vterm.h, src/option.c,
            src/optionstr.c, src/popupwin.c, src/proto/terminal.pro,
            src/structs.h, src/terminal.c, src/window.c,
            src/testdir/test_terminal3.vim,
            src/testdir/dumps/Test_terminal_color_MyTermCol.dump,
            src/testdir/dumps/Test_terminal_color_MyTermCol_over_Terminal.dump,
            src/testdir/dumps/Test_terminal_color_MyWinCol.dump,
            src/testdir/dumps/Test_terminal_color_MyWinCol_over_group.dump,
            src/testdir/dumps/Test_terminal_color_Terminal.dump,
            src/testdir/dumps/Test_terminal_color_gui_MyTermCol.dump,
            src/testdir/dumps/Test_terminal_color_gui_MyWinCol.dump,
            src/testdir/dumps/Test_terminal_color_gui_Terminal.dump,
            src/testdir/dumps/Test_terminal_color_gui_transp_MyTermCol.dump,
            src/testdir/dumps/Test_terminal_color_gui_transp_MyWinCol.dump,
            src/testdir/dumps/Test_terminal_color_gui_transp_Terminal.dump,
            src/testdir/dumps/Test_terminal_color_transp_MyTermCol.dump,
            src/testdir/dumps/Test_terminal_color_transp_MyWinCol.dump,
            src/testdir/dumps/Test_terminal_color_transp_Terminal.dump,
            src/testdir/dumps/Test_terminal_popup_MyPopupHlCol.dump,
            src/testdir/dumps/Test_terminal_popup_MyTermCol_over_Terminal.dump,
            src/testdir/dumps/Test_terminal_popup_MyWinCol.dump,
            src/testdir/dumps/Test_terminal_popup_MyWinCol_over_group.dump,
            src/testdir/dumps/Test_terminal_popup_gui_MyPopupHlCol.dump,
            src/testdir/dumps/Test_terminal_popup_gui_MyTermCol.dump,
            src/testdir/dumps/Test_terminal_popup_gui_MyWinCol.dump,
            src/testdir/dumps/Test_terminal_popup_gui_Terminal.dump,
            src/testdir/dumps/Test_terminal_popup_gui_transp_MyPopupHlCol.dump,
            src/testdir/dumps/Test_terminal_popup_gui_transp_MyTermCol.dump,
            src/testdir/dumps/Test_terminal_popup_gui_transp_MyWinCol.dump,
            src/testdir/dumps/Test_terminal_popup_gui_transp_Terminal.dump,
            src/testdir/dumps/Test_terminal_popup_transp_MyPopupHlCol.dump,
            src/testdir/dumps/Test_terminal_popup_transp_MyTermCol.dump,
            src/testdir/dumps/Test_terminal_popup_transp_MyWinCol.dump,
            src/testdir/dumps/Test_terminal_popup_transp_Terminal.dump,
            src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol.dump,
            src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol2.dump


*** ../vim-8.2.3627/src/highlight.c     2021-11-16 17:19:24.502463313 +0000
--- src/highlight.c     2021-11-20 13:29:36.450251942 +0000
***************
*** 3753,3758 ****
--- 3753,3763 ----
  
      need_highlight_changed = FALSE;
  
+ #ifdef FEAT_TERMINAL
+     term_update_colors_all();
+     term_update_wincolor_all();
+ #endif
+ 
      // Clear all attributes.
      for (hlf = 0; hlf < (int)HLF_COUNT; ++hlf)
        highlight_attr[hlf] = 0;
*** ../vim-8.2.3627/src/libvterm/include/vterm.h        2020-05-22 
21:06:02.165271263 +0100
--- src/libvterm/include/vterm.h        2021-11-20 13:29:36.450251942 +0000
***************
*** 122,128 ****
    /**
     * Mask that can be used to extract the default foreground/background bit.
     */
!   VTERM_COLOR_DEFAULT_MASK = 0x06
  } VTermColorType;
  
  /**
--- 122,133 ----
    /**
     * Mask that can be used to extract the default foreground/background bit.
     */
!   VTERM_COLOR_DEFAULT_MASK = 0x06,
! 
!   /**
!    * If set, indicates that the color is invalid.
!    */
!   VTERM_COLOR_INVALID = 0x08
  } VTermColorType;
  
  /**
***************
*** 155,160 ****
--- 160,171 ----
  #define VTERM_COLOR_IS_DEFAULT_BG(col) \
    (!!((col)->type & VTERM_COLOR_DEFAULT_BG))
  
+ /**
+  * Returns true if the VTERM_COLOR_INVALID `type` flag is set, indicating
+  * that the given VTermColor instance is an invalid color.
+  */
+ #define VTERM_COLOR_IS_INVALID(col) (!!((col)->type & VTERM_COLOR_INVALID))
+ 
  typedef struct {
    /**
     * Tag indicating which member is actually valid.
*** ../vim-8.2.3627/src/option.c        2021-11-18 22:08:52.007682711 +0000
--- src/option.c        2021-11-20 13:29:36.450251942 +0000
***************
*** 3259,3264 ****
--- 3259,3268 ----
            init_highlight(TRUE, FALSE);
        }
  # endif
+ # ifdef FEAT_TERMINAL
+       term_update_colors_all();
+       term_update_wincolor_all();
+ # endif
      }
  #endif
  
*** ../vim-8.2.3627/src/optionstr.c     2021-11-18 22:08:52.007682711 +0000
--- src/optionstr.c     2021-11-20 13:29:36.450251942 +0000
***************
*** 2205,2214 ****
      }
      // 'wincolor'
      else if (varp == &curwin->w_p_wcr)
!     {
!       if (curwin->w_buffer->b_term != NULL)
!           term_update_colors(curwin->w_buffer->b_term);
!     }
  # if defined(MSWIN)
      // 'termwintype'
      else if (varp == &p_twt)
--- 2205,2211 ----
      }
      // 'wincolor'
      else if (varp == &curwin->w_p_wcr)
!       term_update_wincolor(curwin);
  # if defined(MSWIN)
      // 'termwintype'
      else if (varp == &p_twt)
*** ../vim-8.2.3627/src/popupwin.c      2021-11-17 20:39:29.131019723 +0000
--- src/popupwin.c      2021-11-20 13:29:36.450251942 +0000
***************
*** 732,739 ****
--- 732,744 ----
  
      str = dict_get_string(dict, (char_u *)"highlight", FALSE);
      if (str != NULL)
+     {
        set_string_option_direct_in_win(wp, (char_u *)"wincolor", -1,
                                                   str, OPT_FREE|OPT_LOCAL, 0);
+ #ifdef FEAT_TERMINAL
+       term_update_wincolor(wp);
+ #endif
+     }
  
      set_padding_border(dict, wp->w_popup_padding, "padding", 999);
      set_padding_border(dict, wp->w_popup_border, "border", 1);
*** ../vim-8.2.3627/src/proto/terminal.pro      2021-11-19 17:01:05.559037762 
+0000
--- src/proto/terminal.pro      2021-11-20 13:42:20.387366306 +0000
***************
*** 28,34 ****
  int term_show_buffer(buf_T *buf);
  void term_change_in_curbuf(void);
  int term_get_attr(win_T *wp, linenr_T lnum, int col);
! void term_update_colors(term_T *term);
  void term_update_colors_all(void);
  char_u *term_get_status_text(term_T *term);
  void term_clear_status_text(term_T *term);
--- 28,36 ----
  int term_show_buffer(buf_T *buf);
  void term_change_in_curbuf(void);
  int term_get_attr(win_T *wp, linenr_T lnum, int col);
! void term_reset_wincolor(win_T *wp);
! void term_update_wincolor(win_T *wp);
! void term_update_wincolor_all(void);
  void term_update_colors_all(void);
  char_u *term_get_status_text(term_T *term);
  void term_clear_status_text(term_T *term);
*** ../vim-8.2.3627/src/structs.h       2021-11-17 15:51:46.421992164 +0000
--- src/structs.h       2021-11-20 13:29:36.450251942 +0000
***************
*** 123,128 ****
--- 123,136 ----
  #endif
  #define COLOR_INVALID(x) ((x) == INVALCOLOR || (x) == CTERMCOLOR)
  
+ #ifdef FEAT_TERMINAL
+ # include "libvterm/include/vterm.h"
+ typedef struct {
+     VTermColor        fg;
+     VTermColor        bg;
+ } termcellcolor_T;
+ #endif
+ 
  /*
   * marks: positions in a file
   * (a normal mark is a lnum/col pair, the same as a file position)
***************
*** 3619,3624 ****
--- 3627,3635 ----
      int               w_nrwidth;          // width of 'number' and 
'relativenumber'
                                    // column being used
  #endif
+ #ifdef FEAT_TERMINAL
+     termcellcolor_T w_term_wincolor;   // cache for term color of 'wincolor'
+ #endif
  
      /*
       * === end of cached values ===
*** ../vim-8.2.3627/src/terminal.c      2021-11-19 17:01:05.559037762 +0000
--- src/terminal.c      2021-11-20 13:29:36.454251921 +0000
***************
*** 2319,2332 ****
  }
  
  /*
!  * Return the highight group name for the terminal; "Terminal" if not set.
   */
!     static char_u *
! term_get_highlight_name(term_T *term)
  {
!     if (term->tl_highlight_name == NULL)
!       return (char_u *)"Terminal";
!     return term->tl_highlight_name;
  }
  
  #if defined(FEAT_GUI) || defined(PROTO)
--- 2319,2339 ----
  }
  
  /*
!  * Return the highight group ID for the terminal and the window.
   */
!     static int
! term_get_highlight_id(term_T *term, win_T *wp)
  {
!     char_u *name;
! 
!     if (wp != NULL && *wp->w_p_wcr != NUL)
!       name = wp->w_p_wcr;
!     else if (term->tl_highlight_name != NULL)
!       name = term->tl_highlight_name;
!     else
!       name = (char_u*)"Terminal";
! 
!     return syn_name2id(name);
  }
  
  #if defined(FEAT_GUI) || defined(PROTO)
***************
*** 2336,2342 ****
      term_T             *term = in_terminal_loop;
      static cursorentry_T entry;
      int                        id;
!     guicolor_T                term_fg, term_bg;
  
      CLEAR_FIELD(entry);
      entry.shape = entry.mshape =
--- 2343,2350 ----
      term_T             *term = in_terminal_loop;
      static cursorentry_T entry;
      int                        id;
!     guicolor_T                 term_fg = INVALCOLOR;
!     guicolor_T                 term_bg = INVALCOLOR;
  
      CLEAR_FIELD(entry);
      entry.shape = entry.mshape =
***************
*** 2352,2369 ****
      }
  
      // The highlight group overrules the defaults.
!     id = syn_name2id(term_get_highlight_name(term));
      if (id != 0)
-     {
        syn_id2colors(id, &term_fg, &term_bg);
        *fg = term_bg;
-     }
      else
        *fg = gui.back_pixel;
  
      if (term->tl_cursor_color == NULL)
      {
!       if (id != 0)
            *bg = term_fg;
        else
            *bg = gui.norm_pixel;
--- 2360,2376 ----
      }
  
      // The highlight group overrules the defaults.
!     id = term_get_highlight_id(term, curwin);
      if (id != 0)
        syn_id2colors(id, &term_fg, &term_bg);
+     if (term_bg != INVALCOLOR)
        *fg = term_bg;
      else
        *fg = gui.back_pixel;
  
      if (term->tl_cursor_color == NULL)
      {
!       if (term_fg != INVALCOLOR)
            *bg = term_fg;
        else
            *bg = gui.norm_pixel;
***************
*** 2743,2750 ****
      int blue = color->blue;
      int green = color->green;
  
!     if (VTERM_COLOR_IS_DEFAULT_FG(color)
!           || VTERM_COLOR_IS_DEFAULT_BG(color))
        return 0;
      if (VTERM_COLOR_IS_INDEXED(color))
      {
--- 2750,2756 ----
      int blue = color->blue;
      int green = color->green;
  
!     if (VTERM_COLOR_IS_INVALID(color))
        return 0;
      if (VTERM_COLOR_IS_INDEXED(color))
      {
***************
*** 2815,2833 ****
   * Convert Vterm attributes to highlight flags.
   */
      static int
! vtermAttr2hl(VTermScreenCellAttrs cellattrs)
  {
      int attr = 0;
  
!     if (cellattrs.bold)
        attr |= HL_BOLD;
!     if (cellattrs.underline)
        attr |= HL_UNDERLINE;
!     if (cellattrs.italic)
        attr |= HL_ITALIC;
!     if (cellattrs.strike)
        attr |= HL_STRIKETHROUGH;
!     if (cellattrs.reverse)
        attr |= HL_INVERSE;
      return attr;
  }
--- 2821,2839 ----
   * Convert Vterm attributes to highlight flags.
   */
      static int
! vtermAttr2hl(VTermScreenCellAttrs *cellattrs)
  {
      int attr = 0;
  
!     if (cellattrs->bold)
        attr |= HL_BOLD;
!     if (cellattrs->underline)
        attr |= HL_UNDERLINE;
!     if (cellattrs->italic)
        attr |= HL_ITALIC;
!     if (cellattrs->strike)
        attr |= HL_STRIKETHROUGH;
!     if (cellattrs->reverse)
        attr |= HL_INVERSE;
      return attr;
  }
***************
*** 2858,2945 ****
  cell2attr(
        term_T                  *term,
        win_T                   *wp,
!       VTermScreenCellAttrs    cellattrs,
!       VTermColor              cellfg,
!       VTermColor              cellbg)
  {
      int attr = vtermAttr2hl(cellattrs);
  
  #ifdef FEAT_GUI
      if (gui.in_use)
      {
!       guicolor_T fg, bg;
! 
!       fg = gui_mch_get_rgb_color(cellfg.red, cellfg.green, cellfg.blue);
!       bg = gui_mch_get_rgb_color(cellbg.red, cellbg.green, cellbg.blue);
!       return get_gui_attr_idx(attr, fg, bg);
      }
      else
  #endif
  #ifdef FEAT_TERMGUICOLORS
      if (p_tgc)
      {
!       guicolor_T fg = INVALCOLOR;
!       guicolor_T bg = INVALCOLOR;
! 
!       // Use the 'wincolor' or "Terminal" highlighting for the default
!       // colors.
!       if (VTERM_COLOR_IS_DEFAULT_FG(&cellfg)
!               || VTERM_COLOR_IS_DEFAULT_BG(&cellbg))
!       {
!           int id = 0;
! 
!           if (wp != NULL && *wp->w_p_wcr != NUL)
!               id = syn_name2id(wp->w_p_wcr);
!           if (id == 0)
!               id = syn_name2id(term_get_highlight_name(term));
!           if (id > 0)
!               syn_id2colors(id, &fg, &bg);
!           if (!VTERM_COLOR_IS_DEFAULT_FG(&cellfg))
!               fg = gui_get_rgb_color_cmn(cellfg.red, cellfg.green,
!                                          cellfg.blue);
!           if (!VTERM_COLOR_IS_DEFAULT_BG(&cellbg))
!               bg = gui_get_rgb_color_cmn(cellbg.red, cellbg.green,
!                                          cellbg.blue);
!       }
!       else
!       {
!           fg = gui_get_rgb_color_cmn(cellfg.red, cellfg.green, cellfg.blue);
!           bg = gui_get_rgb_color_cmn(cellbg.red, cellbg.green, cellbg.blue);
!       }
! 
!       return get_tgc_attr_idx(attr, fg, bg);
      }
      else
  #endif
      {
        int bold = MAYBE;
!       int fg = color2index(&cellfg, TRUE, &bold);
!       int bg = color2index(&cellbg, FALSE, &bold);
! 
!       // Use the 'wincolor' or "Terminal" highlighting for the default
!       // colors.
!       if ((fg == 0 || bg == 0) && t_colors >= 16)
!       {
!           int cterm_fg = -1;
!           int cterm_bg = -1;
!           int id = 0;
! 
!           if (wp != NULL && *wp->w_p_wcr != NUL)
!               id = syn_name2id(wp->w_p_wcr);
!           if (id == 0)
!               id = syn_name2id(term_get_highlight_name(term));
!           if (id > 0)
!               syn_id2cterm_bg(id, &cterm_fg, &cterm_bg);
!           if (fg == 0 && cterm_fg >= 0)
!               fg = cterm_fg + 1;
!           if (bg == 0 && cterm_bg >= 0)
!               bg = cterm_bg + 1;
!       }
  
        // with 8 colors set the bold attribute to get a bright foreground
        if (bold == TRUE)
            attr |= HL_BOLD;
!       return get_cterm_attr_idx(attr, fg, bg);
      }
      return 0;
  }
--- 2864,2929 ----
  cell2attr(
        term_T                  *term,
        win_T                   *wp,
!       VTermScreenCellAttrs    *cellattrs,
!       VTermColor              *cellfg,
!       VTermColor              *cellbg)
  {
      int attr = vtermAttr2hl(cellattrs);
+     VTermColor *fg = cellfg;
+     VTermColor *bg = cellbg;
+     int is_default_fg = VTERM_COLOR_IS_DEFAULT_FG(fg);
+     int is_default_bg = VTERM_COLOR_IS_DEFAULT_BG(bg);
+ 
+     if (is_default_fg || is_default_bg)
+     {
+       if (wp != NULL && *wp->w_p_wcr != NUL)
+       {
+           if (is_default_fg)
+               fg = &wp->w_term_wincolor.fg;
+           if (is_default_bg)
+               bg = &wp->w_term_wincolor.bg;
+       }
+       else
+       {
+           if (is_default_fg)
+               fg = &term->tl_default_color.fg;
+           if (is_default_bg)
+               bg = &term->tl_default_color.bg;
+       }
+     }
  
  #ifdef FEAT_GUI
      if (gui.in_use)
      {
!       guicolor_T guifg = gui_mch_get_rgb_color(fg->red, fg->green, fg->blue);
!       guicolor_T guibg = gui_mch_get_rgb_color(bg->red, bg->green, bg->blue);
!       return get_gui_attr_idx(attr, guifg, guibg);
      }
      else
  #endif
  #ifdef FEAT_TERMGUICOLORS
      if (p_tgc)
      {
!       guicolor_T tgcfg = VTERM_COLOR_IS_INVALID(fg)
!           ? INVALCOLOR
!           : gui_get_rgb_color_cmn(fg->red, fg->green, fg->blue);
!       guicolor_T tgcbg = VTERM_COLOR_IS_INVALID(bg)
!           ? INVALCOLOR
!           : gui_get_rgb_color_cmn(bg->red, bg->green, bg->blue);
!       return get_tgc_attr_idx(attr, tgcfg, tgcbg);
      }
      else
  #endif
      {
        int bold = MAYBE;
!       int ctermfg = color2index(fg, TRUE, &bold);
!       int ctermbg = color2index(bg, FALSE, &bold);
  
        // with 8 colors set the bold attribute to get a bright foreground
        if (bold == TRUE)
            attr |= HL_BOLD;
! 
!       return get_cterm_attr_idx(attr, ctermfg, ctermbg);
      }
      return 0;
  }
***************
*** 2988,2994 ****
            // Set the color to clear lines with.
            vterm_state_get_default_colors(vterm_obtain_state(term->tl_vterm),
                                                                     &fg, &bg);
!           clear_attr = cell2attr(term, wp, attr, fg, bg);
            win_del_lines(wp, start_row, count, FALSE, FALSE, clear_attr);
        }
      }
--- 2972,2978 ----
            // Set the color to clear lines with.
            vterm_state_get_default_colors(vterm_obtain_state(term->tl_vterm),
                                                                     &fg, &bg);
!           clear_attr = cell2attr(term, wp, &attr, &fg, &bg);
            win_del_lines(wp, start_row, count, FALSE, FALSE, clear_attr);
        }
      }
***************
*** 3633,3639 ****
                // This will only store the lower byte of "c".
                ScreenLines[off] = c;
        }
!       ScreenAttrs[off] = cell2attr(term, wp, cell.attrs, cell.fg, cell.bg);
  
        ++pos->col;
        ++off;
--- 3617,3624 ----
                // This will only store the lower byte of "c".
                ScreenLines[off] = c;
        }
!       ScreenAttrs[off] = cell2attr(term, wp, &cell.attrs, &cell.fg,
!                                                                    &cell.bg);
  
        ++pos->col;
        ++off;
***************
*** 3893,3899 ****
        else
            cellattr = line->sb_cells + col;
      }
!     return cell2attr(term, wp, cellattr->attrs, cellattr->fg, cellattr->bg);
  }
  
  /*
--- 3878,3884 ----
        else
            cellattr = line->sb_cells + col;
      }
!     return cell2attr(term, wp, &cellattr->attrs, &cellattr->fg, 
&cellattr->bg);
  }
  
  /*
***************
*** 3914,3958 ****
  }
  
  /*
!  * Initialize term->tl_default_color from the environment.
   */
!     static void
! init_default_colors(term_T *term, win_T *wp)
  {
-     VTermColor            *fg, *bg;
-     int                   fgval, bgval;
-     int                   id;
- 
-     CLEAR_FIELD(term->tl_default_color.attrs);
-     term->tl_default_color.width = 1;
-     fg = &term->tl_default_color.fg;
-     bg = &term->tl_default_color.bg;
- 
-     // Vterm uses a default black background.  Set it to white when
-     // 'background' is "light".
-     if (*p_bg == 'l')
-     {
-       fgval = 0;
-       bgval = 255;
-     }
-     else
-     {
-       fgval = 255;
-       bgval = 0;
-     }
-     fg->red = fg->green = fg->blue = fgval;
-     bg->red = bg->green = bg->blue = bgval;
-     fg->type = VTERM_COLOR_RGB | VTERM_COLOR_DEFAULT_FG;
-     bg->type = VTERM_COLOR_RGB | VTERM_COLOR_DEFAULT_BG;
- 
-     // The 'wincolor' or the highlight group overrules the defaults.
-     if (wp != NULL && *wp->w_p_wcr != NUL)
-       id = syn_name2id(wp->w_p_wcr);
-     else
-       id = syn_name2id(term_get_highlight_name(term));
- 
-     // Use the actual color for the GUI and when 'termguicolors' is set.
  #if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
      if (0
  # ifdef FEAT_GUI
            || gui.in_use
--- 3899,3913 ----
  }
  
  /*
!  * Initialize vterm color from the synID.
!  * Returns TRUE if color is set to "fg" and "bg".
!  * Otherwise returns FALSE.
   */
!     static int
! get_vterm_color_from_synid(int id, VTermColor *fg, VTermColor *bg)
  {
  #if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
+     // Use the actual color for the GUI and when 'termguicolors' is set.
      if (0
  # ifdef FEAT_GUI
            || gui.in_use
***************
*** 3966,4029 ****
  # endif
         )
      {
!       guicolor_T      fg_rgb = INVALCOLOR;
!       guicolor_T      bg_rgb = INVALCOLOR;
  
!       if (id != 0)
            syn_id2colors(id, &fg_rgb, &bg_rgb);
  
- # ifdef FEAT_GUI
-       if (gui.in_use)
-       {
-           if (fg_rgb == INVALCOLOR)
-               fg_rgb = gui.norm_pixel;
-           if (bg_rgb == INVALCOLOR)
-               bg_rgb = gui.back_pixel;
-       }
- #  ifdef FEAT_TERMGUICOLORS
-       else
- #  endif
- # endif
- # ifdef FEAT_TERMGUICOLORS
-       {
-           if (fg_rgb == INVALCOLOR)
-               fg_rgb = cterm_normal_fg_gui_color;
-           if (bg_rgb == INVALCOLOR)
-               bg_rgb = cterm_normal_bg_gui_color;
-       }
- # endif
        if (fg_rgb != INVALCOLOR)
        {
            long_u rgb = GUI_MCH_GET_RGB(fg_rgb);
- 
            fg->red = (unsigned)(rgb >> 16);
            fg->green = (unsigned)(rgb >> 8) & 255;
            fg->blue = (unsigned)rgb & 255;
        }
        if (bg_rgb != INVALCOLOR)
        {
            long_u rgb = GUI_MCH_GET_RGB(bg_rgb);
- 
            bg->red = (unsigned)(rgb >> 16);
            bg->green = (unsigned)(rgb >> 8) & 255;
            bg->blue = (unsigned)rgb & 255;
        }
      }
      else
  #endif
!     if (id != 0 && t_colors >= 16)
      {
        int cterm_fg = -1;
        int cterm_bg = -1;
!       syn_id2cterm_bg(id, &cterm_fg, &cterm_bg);
  
        if (cterm_fg >= 0)
            cterm_color2vterm(cterm_fg, fg);
        if (cterm_bg >= 0)
            cterm_color2vterm(cterm_bg, bg);
      }
      else
      {
  #if defined(MSWIN) && (!defined(FEAT_GUI_MSWIN) || defined(VIMDLL))
        int tmp;
  #endif
--- 3921,4061 ----
  # endif
         )
      {
!       guicolor_T fg_rgb = INVALCOLOR;
!       guicolor_T bg_rgb = INVALCOLOR;
  
!       if (id > 0)
            syn_id2colors(id, &fg_rgb, &bg_rgb);
  
        if (fg_rgb != INVALCOLOR)
        {
            long_u rgb = GUI_MCH_GET_RGB(fg_rgb);
            fg->red = (unsigned)(rgb >> 16);
            fg->green = (unsigned)(rgb >> 8) & 255;
            fg->blue = (unsigned)rgb & 255;
+           fg->type = VTERM_COLOR_RGB | VTERM_COLOR_DEFAULT_FG;
        }
+       else
+           fg->type = VTERM_COLOR_INVALID | VTERM_COLOR_DEFAULT_FG;
+ 
        if (bg_rgb != INVALCOLOR)
        {
            long_u rgb = GUI_MCH_GET_RGB(bg_rgb);
            bg->red = (unsigned)(rgb >> 16);
            bg->green = (unsigned)(rgb >> 8) & 255;
            bg->blue = (unsigned)rgb & 255;
+           bg->type = VTERM_COLOR_RGB | VTERM_COLOR_DEFAULT_BG;
        }
+       else
+           bg->type = VTERM_COLOR_INVALID | VTERM_COLOR_DEFAULT_BG;
+ 
+       return TRUE;
      }
      else
  #endif
!     if (t_colors >= 16)
      {
        int cterm_fg = -1;
        int cterm_bg = -1;
! 
!       if (id > 0)
!           syn_id2cterm_bg(id, &cterm_fg, &cterm_bg);
  
        if (cterm_fg >= 0)
+       {
            cterm_color2vterm(cterm_fg, fg);
+           fg->type |= VTERM_COLOR_DEFAULT_FG;
+       }
+       else
+           fg->type = VTERM_COLOR_INVALID | VTERM_COLOR_DEFAULT_FG;
+ 
        if (cterm_bg >= 0)
+       {
            cterm_color2vterm(cterm_bg, bg);
+           bg->type |= VTERM_COLOR_DEFAULT_BG;
+       }
+       else
+           bg->type = VTERM_COLOR_INVALID | VTERM_COLOR_DEFAULT_BG;
+ 
+       return TRUE;
+     }
+ 
+     return FALSE;
+ }
+ 
+     void
+ term_reset_wincolor(win_T *wp)
+ {
+     wp->w_term_wincolor.fg.type = VTERM_COLOR_INVALID | 
VTERM_COLOR_DEFAULT_FG;
+     wp->w_term_wincolor.bg.type = VTERM_COLOR_INVALID | 
VTERM_COLOR_DEFAULT_BG;
+ }
+ 
+ /*
+  * Cache the color of 'wincolor'.
+  */
+     void
+ term_update_wincolor(win_T *wp)
+ {
+     int id = 0;
+ 
+     if (*wp->w_p_wcr != NUL)
+       id = syn_name2id(wp->w_p_wcr);
+     if (id == 0 || !get_vterm_color_from_synid(id, &wp->w_term_wincolor.fg,
+                                                     &wp->w_term_wincolor.bg))
+       term_reset_wincolor(wp);
+ }
+ 
+ /*
+  * Called when option 'termguicolors' was set,
+  * or when any highlight is changed.
+  */
+     void
+ term_update_wincolor_all()
+ {
+     win_T      *wp = NULL;
+     int                did_curwin = FALSE;
+ 
+     while (for_all_windows_and_curwin(&wp, &did_curwin))
+       term_update_wincolor(wp);
+ }
+ 
+ /*
+  * Initialize term->tl_default_color from the environment.
+  */
+     static void
+ init_default_colors(term_T *term)
+ {
+     VTermColor            *fg, *bg;
+     int                   fgval, bgval;
+     int                   id;
+ 
+     CLEAR_FIELD(term->tl_default_color.attrs);
+     term->tl_default_color.width = 1;
+     fg = &term->tl_default_color.fg;
+     bg = &term->tl_default_color.bg;
+ 
+     // Vterm uses a default black background.  Set it to white when
+     // 'background' is "light".
+     if (*p_bg == 'l')
+     {
+       fgval = 0;
+       bgval = 255;
      }
      else
      {
+       fgval = 255;
+       bgval = 0;
+     }
+     fg->red = fg->green = fg->blue = fgval;
+     bg->red = bg->green = bg->blue = bgval;
+     fg->type = VTERM_COLOR_RGB | VTERM_COLOR_DEFAULT_FG;
+     bg->type = VTERM_COLOR_RGB | VTERM_COLOR_DEFAULT_BG;
+ 
+     // The highlight group overrules the defaults.
+     id = term_get_highlight_id(term, NULL);
+ 
+     if (!get_vterm_color_from_synid(id, fg, bg))
+     {
  #if defined(MSWIN) && (!defined(FEAT_GUI_MSWIN) || defined(VIMDLL))
        int tmp;
  #endif
***************
*** 4532,4538 ****
      // TODO: depends on 'encoding'.
      vterm_set_utf8(vterm, 1);
  
!     init_default_colors(term, NULL);
  
      vterm_state_set_default_colors(
            state,
--- 4564,4570 ----
      // TODO: depends on 'encoding'.
      vterm_set_utf8(vterm, 1);
  
!     init_default_colors(term);
  
      vterm_state_set_default_colors(
            state,
***************
*** 4568,4603 ****
  }
  
  /*
!  * Called when 'wincolor' was set.
!  */
!     void
! term_update_colors(term_T *term)
! {
!     win_T *wp;
! 
!     if (term->tl_vterm == NULL)
!       return;
!     init_default_colors(term, curwin);
!     vterm_state_set_default_colors(
!           vterm_obtain_state(term->tl_vterm),
!           &term->tl_default_color.fg,
!           &term->tl_default_color.bg);
! 
!     FOR_ALL_WINDOWS(wp)
!       if (wp->w_buffer == term->tl_buffer)
!           redraw_win_later(wp, NOT_VALID);
! }
! 
! /*
!  * Called when 'background' was set.
   */
      void
  term_update_colors_all(void)
  {
!     term_T *tp;
  
!     FOR_ALL_TERMS(tp)
!       term_update_colors(tp);
  }
  
  /*
--- 4600,4623 ----
  }
  
  /*
!  * Called when option 'background' or 'termguicolors' was set,
!  * or when any highlight is changed.
   */
      void
  term_update_colors_all(void)
  {
!     term_T *term;
  
!     FOR_ALL_TERMS(term)
!     {
!       if (term->tl_vterm == NULL)
!           continue;
!       init_default_colors(term);
!       vterm_state_set_default_colors(
!               vterm_obtain_state(term->tl_vterm),
!               &term->tl_default_color.fg,
!               &term->tl_default_color.bg);
!     }
  }
  
  /*
***************
*** 4692,4699 ****
  clear_cell(VTermScreenCell *cell)
  {
      CLEAR_FIELD(*cell);
!     cell->fg.type = VTERM_COLOR_DEFAULT_FG;
!     cell->bg.type = VTERM_COLOR_DEFAULT_BG;
  }
  
      static void
--- 4712,4719 ----
  clear_cell(VTermScreenCell *cell)
  {
      CLEAR_FIELD(*cell);
!     cell->fg.type = VTERM_COLOR_INVALID | VTERM_COLOR_DEFAULT_FG;
!     cell->bg.type = VTERM_COLOR_INVALID | VTERM_COLOR_DEFAULT_BG;
  }
  
      static void
***************
*** 4844,4851 ****
                if (should_break)
                    break;
            }
!           same_attr = vtermAttr2hl(cell.attrs)
!                                              == vtermAttr2hl(prev_cell.attrs)
                        && vterm_color_is_equal(&cell.fg, &prev_cell.fg)
                        && vterm_color_is_equal(&cell.bg, &prev_cell.bg);
            if (same_chars && cell.width == prev_cell.width && same_attr
--- 4864,4871 ----
                if (should_break)
                    break;
            }
!           same_attr = vtermAttr2hl(&cell.attrs)
!                                             == vtermAttr2hl(&prev_cell.attrs)
                        && vterm_color_is_equal(&cell.fg, &prev_cell.fg)
                        && vterm_color_is_equal(&cell.bg, &prev_cell.bg);
            if (same_chars && cell.width == prev_cell.width && same_attr
***************
*** 4893,4899 ****
                    }
                    else
                    {
!                       fprintf(fd, "%d", vtermAttr2hl(cell.attrs));
                        if (vterm_color_is_equal(&cell.fg, &prev_cell.fg))
                            fputs("&", fd);
                        else
--- 4913,4919 ----
                    }
                    else
                    {
!                       fprintf(fd, "%d", vtermAttr2hl(&cell.attrs));
                        if (vterm_color_is_equal(&cell.fg, &prev_cell.fg))
                            fputs("&", fd);
                        else
***************
*** 5344,5350 ****
        VTermPos        cursor_pos1;
        VTermPos        cursor_pos2;
  
!       init_default_colors(term, NULL);
  
        rettv->vval.v_number = buf->b_fnum;
  
--- 5364,5370 ----
        VTermPos        cursor_pos1;
        VTermPos        cursor_pos2;
  
!       init_default_colors(term);
  
        rettv->vval.v_number = buf->b_fnum;
  
***************
*** 5454,5461 ****
                        else if (!vterm_color_is_equal(&(cellattr1 + col)->bg,
                                                   &(cellattr2 + col)->bg))
                            textline[col] = 'b';
!                       else if (vtermAttr2hl((cellattr1 + col)->attrs)
!                                  != vtermAttr2hl(((cellattr2 + col)->attrs)))
                            textline[col] = 'a';
                    }
                    p1 += len1;
--- 5474,5481 ----
                        else if (!vterm_color_is_equal(&(cellattr1 + col)->bg,
                                                   &(cellattr2 + col)->bg))
                            textline[col] = 'b';
!                       else if (vtermAttr2hl(&(cellattr1 + col)->attrs)
!                                 != vtermAttr2hl(&((cellattr2 + col)->attrs)))
                            textline[col] = 'a';
                    }
                    p1 += len1;
***************
*** 6134,6140 ****
                                     bg.red, bg.green, bg.blue);
        dict_add_string(dcell, "bg", rgb);
  
!       dict_add_number(dcell, "attr", cell2attr(term, NULL, attrs, fg, bg));
        dict_add_number(dcell, "width", width);
  
        ++pos.col;
--- 6154,6161 ----
                                     bg.red, bg.green, bg.blue);
        dict_add_string(dcell, "bg", rgb);
  
!       dict_add_number(dcell, "attr",
!                                     cell2attr(term, NULL, &attrs, &fg, &bg));
        dict_add_number(dcell, "width", width);
  
        ++pos.col;
*** ../vim-8.2.3627/src/window.c        2021-11-18 18:52:08.824648758 +0000
--- src/window.c        2021-11-20 13:29:36.454251921 +0000
***************
*** 1422,1427 ****
--- 1422,1430 ----
  #ifdef FEAT_SYN_HL
      check_colorcolumn(newp);
  #endif
+ #ifdef FEAT_TERMINAL
+     term_update_wincolor(newp);
+ #endif
  }
  
  /*
***************
*** 3684,3689 ****
--- 3687,3695 ----
  #if defined(FEAT_SYN_HL) || defined(FEAT_SPELL)
      wp->w_s = &wp->w_buffer->b_s;
  #endif
+ #ifdef FEAT_TERMINAL
+     term_reset_wincolor(wp);
+ #endif
  }
  
  /*
*** ../vim-8.2.3627/src/testdir/test_terminal3.vim      2021-03-30 
19:54:24.151493074 +0100
--- src/testdir/test_terminal3.vim      2021-11-20 13:39:07.212016828 +0000
***************
*** 66,71 ****
--- 66,242 ----
    call assert_fails('terminal ++xyz', 'E181:')
  endfunc
  
+ " Check a terminal with different colors
+ func Terminal_color(group_name, highlight_cmds, highlight_opt, open_cmds)
+   CheckRunVimInTerminal
+   CheckUnix
+ 
+   let lines = [
+       \ 'call setline(1, range(20))',
+       \ 'func OpenTerm()',
+       \ '  set noruler',
+       \ "  call term_start('cat', #{vertical: 1, " .. a:highlight_opt .. "})",
+       \ ] + a:open_cmds + [
+       \ 'endfunc',
+       \ ] + a:highlight_cmds
+   call writefile(lines, 'XtermStart')
+   let buf = RunVimInTerminal('-S XtermStart', #{rows: 15})
+   call TermWait(buf, 100)
+   call term_sendkeys(buf, ":call OpenTerm()\<CR>")
+   call TermWait(buf, 50)
+   call term_sendkeys(buf, "hello\<CR>")
+   call VerifyScreenDump(buf, 'Test_terminal_color_' .. a:group_name, {})
+ 
+   call term_sendkeys(buf, "\<C-D>")
+   call TermWait(buf, 50)
+   call StopVimInTerminal(buf)
+   call delete('XtermStart')
+ endfunc
+ 
+ func Test_terminal_color_Terminal()
+   call Terminal_color("Terminal", [
+   \ "highlight Terminal ctermfg=blue ctermbg=yellow",
+   \ ], "", [])
+ endfunc
+ 
+ func Test_terminal_color_group()
+   call Terminal_color("MyTermCol", [
+   \ "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue",
+   \ ], "term_highlight: 'MyTermCol',", [])
+ endfunc
+ 
+ func Test_terminal_color_wincolor()
+   call Terminal_color("MyWinCol", [
+   \ "highlight MyWinCol ctermfg=red ctermbg=darkyellow",
+   \ ], "", [
+   \ 'set wincolor=MyWinCol',
+   \ ])
+ endfunc
+ 
+ func Test_terminal_color_group_over_Terminal()
+   call Terminal_color("MyTermCol_over_Terminal", [
+   \ "highlight Terminal ctermfg=blue ctermbg=yellow",
+   \ "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue",
+   \ ], "term_highlight: 'MyTermCol',", [])
+ endfunc
+ 
+ func Test_terminal_color_wincolor_over_group()
+   call Terminal_color("MyWinCol_over_group", [
+   \ "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue",
+   \ "highlight MyWinCol ctermfg=red ctermbg=darkyellow",
+   \ ], "term_highlight: 'MyTermCol',", [
+   \ 'set wincolor=MyWinCol',
+   \ ])
+ endfunc
+ 
+ func Test_terminal_color_wincolor_split()
+   CheckRunVimInTerminal
+   CheckUnix
+ 
+   let lines = [
+       \ 'call setline(1, range(20))',
+       \ 'func OpenTerm()',
+       \ '  set noruler',
+       \ "  call term_start('cat', #{vertical: 1, term_highlight: 
'MyTermCol'})",
+       \ 'endfunc',
+   \ 'highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue',
+   \ 'highlight MyWinCol ctermfg=red ctermbg=darkyellow',
+   \ 'highlight MyWinCol2 ctermfg=black ctermbg=blue',
+       \ ]
+   call writefile(lines, 'XtermStart')
+   let buf = RunVimInTerminal('-S XtermStart', #{rows: 15})
+   call TermWait(buf, 100)
+   call term_sendkeys(buf, ":call OpenTerm()\<CR>")
+   call TermWait(buf, 50)
+   call term_sendkeys(buf, "hello\<CR>")
+   call TermWait(buf, 50)
+ 
+   call term_sendkeys(buf, "\<C-W>:split\<CR>")
+   call term_sendkeys(buf, "\<C-W>:set wincolor=MyWinCol\<CR>")
+   call VerifyScreenDump(buf, 'Test_terminal_wincolor_split_MyWinCol', {})
+ 
+   call term_sendkeys(buf, "\<C-W>b:2sb\<CR>")
+   call term_sendkeys(buf, "\<C-W>:set wincolor=MyWinCol2\<CR>")
+   call VerifyScreenDump(buf, 'Test_terminal_wincolor_split_MyWinCol2', {})
+ 
+   call term_sendkeys(buf, "\<C-D>")
+   call TermWait(buf, 50)
+   call StopVimInTerminal(buf)
+   call delete('XtermStart')
+ endfunc
+ 
+ func Test_terminal_color_transp_Terminal()
+   call Terminal_color("transp_Terminal", [
+   \ "highlight Terminal ctermfg=blue",
+   \ ], "", [])
+ endfunc
+ 
+ func Test_terminal_color_transp_group()
+   call Terminal_color("transp_MyTermCol", [
+   \ "highlight MyTermCol ctermfg=darkgreen",
+   \ ], "term_highlight: 'MyTermCol',", [])
+ endfunc
+ 
+ func Test_terminal_color_transp_wincolor()
+   call Terminal_color("transp_MyWinCol", [
+   \ "highlight MyWinCol ctermfg=red",
+   \ ], "", [
+   \ 'set wincolor=MyWinCol',
+   \ ])
+ endfunc
+ 
+ func Test_terminal_color_gui_Terminal()
+   CheckFeature termguicolors
+   call Terminal_color("gui_Terminal", [
+   \ "set termguicolors",
+   \ "highlight Terminal guifg=#3344ff guibg=#b0a700",
+   \ ], "", [])
+ endfunc
+ 
+ func Test_terminal_color_gui_group()
+   CheckFeature termguicolors
+   call Terminal_color("gui_MyTermCol", [
+   \ "set termguicolors",
+   \ "highlight MyTermCol guifg=#007800 guibg=#6789ff",
+   \ ], "term_highlight: 'MyTermCol',", [])
+ endfunc
+ 
+ func Test_terminal_color_gui_wincolor()
+   CheckFeature termguicolors
+   call Terminal_color("gui_MyWinCol", [
+   \ "set termguicolors",
+   \ "highlight MyWinCol guifg=#fe1122 guibg=#818100",
+   \ ], "", [
+   \ 'set wincolor=MyWinCol',
+   \ ])
+ endfunc
+ 
+ func Test_terminal_color_gui_transp_Terminal()
+   CheckFeature termguicolors
+   call Terminal_color("gui_transp_Terminal", [
+   \ "set termguicolors",
+   \ "highlight Terminal guifg=#3344ff",
+   \ ], "", [])
+ endfunc
+ 
+ func Test_terminal_color_gui_transp_group()
+   CheckFeature termguicolors
+   call Terminal_color("gui_transp_MyTermCol", [
+   \ "set termguicolors",
+   \ "highlight MyTermCol guifg=#007800",
+   \ ], "term_highlight: 'MyTermCol',", [])
+ endfunc
+ 
+ func Test_terminal_color_gui_transp_wincolor()
+   CheckFeature termguicolors
+   call Terminal_color("gui_transp_MyWinCol", [
+   \ "set termguicolors",
+   \ "highlight MyWinCol guifg=#fe1122",
+   \ ], "", [
+   \ 'set wincolor=MyWinCol',
+   \ ])
+ endfunc
+ 
  func Test_terminal_in_popup()
    CheckRunVimInTerminal
  
***************
*** 180,186 ****
  endfunc
  
  " Check a terminal in popup window with different colors
! func Terminal_in_popup_colored(group_name, highlight_cmd, highlight_opt)
    CheckRunVimInTerminal
    CheckUnix
  
--- 351,357 ----
  endfunc
  
  " Check a terminal in popup window with different colors
! func Terminal_in_popup_color(group_name, highlight_cmds, highlight_opt, 
popup_cmds, popup_opt)
    CheckRunVimInTerminal
    CheckUnix
  
***************
*** 189,198 ****
        \ 'func OpenTerm()',
        \ "  let s:buf = term_start('cat', #{hidden: 1, "
        \ .. a:highlight_opt .. "})",
!       \ '  let g:winid = popup_create(s:buf, #{ border: []})',
        \ 'endfunc',
!       \ a:highlight_cmd,
!       \ ]
    call writefile(lines, 'XtermPopup')
    let buf = RunVimInTerminal('-S XtermPopup', #{rows: 15})
    call TermWait(buf, 100)
--- 360,370 ----
        \ 'func OpenTerm()',
        \ "  let s:buf = term_start('cat', #{hidden: 1, "
        \ .. a:highlight_opt .. "})",
!       \ '  let g:winid = popup_create(s:buf, #{border: [], '
!   \ .. a:popup_opt .. '})',
!   \ ] + a:popup_cmds + [
        \ 'endfunc',
!       \ ] + a:highlight_cmds
    call writefile(lines, 'XtermPopup')
    let buf = RunVimInTerminal('-S XtermPopup', #{rows: 15})
    call TermWait(buf, 100)
***************
*** 210,221 ****
    call delete('XtermPopup')
  endfunc
  
! func Test_terminal_in_popup_colored_Terminal()
!   call Terminal_in_popup_colored("Terminal", "highlight Terminal ctermfg=blue 
ctermbg=yellow", "")
  endfunc
  
! func Test_terminal_in_popup_colored_group()
!   call Terminal_in_popup_colored("MyTermCol", "highlight MyTermCol 
ctermfg=darkgreen ctermbg=lightblue", "term_highlight: 'MyTermCol',")
  endfunc
  
  func Test_double_popup_terminal()
--- 382,521 ----
    call delete('XtermPopup')
  endfunc
  
! func Test_terminal_in_popup_color_Terminal()
!   call Terminal_in_popup_color("Terminal", [
!   \ "highlight Terminal ctermfg=blue ctermbg=yellow",
!   \ ], "", [], "")
! endfunc
! 
! func Test_terminal_in_popup_color_group()
!   call Terminal_in_popup_color("MyTermCol", [
!   \ "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue",
!   \ ], "term_highlight: 'MyTermCol',", [], "")
! endfunc
! 
! func Test_terminal_in_popup_color_wincolor()
!   call Terminal_in_popup_color("MyWinCol", [
!   \ "highlight MyWinCol ctermfg=red ctermbg=darkyellow",
!   \ ], "", [
!   \ 'call setwinvar(g:winid, "&wincolor", "MyWinCol")',
!   \ ], "")
! endfunc
! 
! func Test_terminal_in_popup_color_popup_highlight()
!   call Terminal_in_popup_color("MyPopupHlCol", [
!   \ "highlight MyPopupHlCol ctermfg=cyan ctermbg=green",
!   \ ], "", [], "highlight: 'MyPopupHlCol'")
! endfunc
! 
! func Test_terminal_in_popup_color_group_over_Terminal()
!   call Terminal_in_popup_color("MyTermCol_over_Terminal", [
!   \ "highlight Terminal ctermfg=blue ctermbg=yellow",
!   \ "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue",
!   \ ], "term_highlight: 'MyTermCol',", [], "")
! endfunc
! 
! func Test_terminal_in_popup_color_wincolor_over_group()
!   call Terminal_in_popup_color("MyWinCol_over_group", [
!   \ "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue",
!   \ "highlight MyWinCol ctermfg=red ctermbg=darkyellow",
!   \ ], "term_highlight: 'MyTermCol',", [
!   \ 'call setwinvar(g:winid, "&wincolor", "MyWinCol")',
!   \ ], "")
! endfunc
! 
! func Test_terminal_in_popup_color_transp_Terminal()
!   call Terminal_in_popup_color("transp_Terminal", [
!   \ "highlight Terminal ctermfg=blue",
!   \ ], "", [], "")
! endfunc
! 
! func Test_terminal_in_popup_color_transp_group()
!   call Terminal_in_popup_color("transp_MyTermCol", [
!   \ "highlight MyTermCol ctermfg=darkgreen",
!   \ ], "term_highlight: 'MyTermCol',", [], "")
! endfunc
! 
! func Test_terminal_in_popup_color_transp_wincolor()
!   call Terminal_in_popup_color("transp_MyWinCol", [
!   \ "highlight MyWinCol ctermfg=red",
!   \ ], "", [
!   \ 'call setwinvar(g:winid, "&wincolor", "MyWinCol")',
!   \ ], "")
! endfunc
! 
! func Test_terminal_in_popup_color_transp_popup_highlight()
!   call Terminal_in_popup_color("transp_MyPopupHlCol", [
!   \ "highlight MyPopupHlCol ctermfg=cyan",
!   \ ], "", [], "highlight: 'MyPopupHlCol'")
! endfunc
! 
! func Test_terminal_in_popup_color_gui_Terminal()
!   CheckFeature termguicolors
!   call Terminal_in_popup_color("gui_Terminal", [
!   \ "set termguicolors",
!   \ "highlight Terminal guifg=#3344ff guibg=#b0a700",
!   \ ], "", [], "")
! endfunc
! 
! func Test_terminal_in_popup_color_gui_group()
!   CheckFeature termguicolors
!   call Terminal_in_popup_color("gui_MyTermCol", [
!   \ "set termguicolors",
!   \ "highlight MyTermCol guifg=#007800 guibg=#6789ff",
!   \ ], "term_highlight: 'MyTermCol',", [], "")
! endfunc
! 
! func Test_terminal_in_popup_color_gui_wincolor()
!   CheckFeature termguicolors
!   call Terminal_in_popup_color("gui_MyWinCol", [
!   \ "set termguicolors",
!   \ "highlight MyWinCol guifg=#fe1122 guibg=#818100",
!   \ ], "", [
!   \ 'call setwinvar(g:winid, "&wincolor", "MyWinCol")',
!   \ ], "")
! endfunc
! 
! func Test_terminal_in_popup_color_gui_popup_highlight()
!   CheckFeature termguicolors
!   call Terminal_in_popup_color("gui_MyPopupHlCol", [
!   \ "set termguicolors",
!   \ "highlight MyPopupHlCol guifg=#00e8f0 guibg=#126521",
!   \ ], "", [], "highlight: 'MyPopupHlCol'")
! endfunc
! 
! func Test_terminal_in_popup_color_gui_transp_Terminal()
!   CheckFeature termguicolors
!   call Terminal_in_popup_color("gui_transp_Terminal", [
!   \ "set termguicolors",
!   \ "highlight Terminal guifg=#3344ff",
!   \ ], "", [], "")
! endfunc
! 
! func Test_terminal_in_popup_color_gui_transp_group()
!   CheckFeature termguicolors
!   call Terminal_in_popup_color("gui_transp_MyTermCol", [
!   \ "set termguicolors",
!   \ "highlight MyTermCol guifg=#007800",
!   \ ], "term_highlight: 'MyTermCol',", [], "")
! endfunc
! 
! func Test_terminal_in_popup_color_gui_transp_wincolor()
!   CheckFeature termguicolors
!   call Terminal_in_popup_color("gui_transp_MyWinCol", [
!   \ "set termguicolors",
!   \ "highlight MyWinCol guifg=#fe1122",
!   \ ], "", [
!   \ 'call setwinvar(g:winid, "&wincolor", "MyWinCol")',
!   \ ], "")
  endfunc
  
! func Test_terminal_in_popup_color_gui_transp_popup_highlight()
!   CheckFeature termguicolors
!   call Terminal_in_popup_color("gui_transp_MyPopupHlCol", [
!   \ "set termguicolors",
!   \ "highlight MyPopupHlCol guifg=#00e8f0",
!   \ ], "", [], "highlight: 'MyPopupHlCol'")
  endfunc
  
  func Test_double_popup_terminal()
***************
*** 411,417 ****
    call TermWait(buf, 50)
    call assert_equal('yellow', readfile('Xbuf')[0])
  
!   " Test for selecting text using doubleclick
    call delete('Xbuf')
    call test_setmouse(1, 11)
    call term_sendkeys(buf, "\<LeftMouse>\<LeftRelease>\<LeftMouse>")
--- 711,717 ----
    call TermWait(buf, 50)
    call assert_equal('yellow', readfile('Xbuf')[0])
  
!   " Test for selecting text using double click
    call delete('Xbuf')
    call test_setmouse(1, 11)
    call term_sendkeys(buf, "\<LeftMouse>\<LeftRelease>\<LeftMouse>")
***************
*** 431,437 ****
    call TermWait(buf, 50)
    call assert_equal("vim emacs sublime nano\n", readfile('Xbuf')[0])
  
!   " Test for selecting a block using qudraple click
    call delete('Xbuf')
    call test_setmouse(1, 11)
    call term_sendkeys(buf, 
"\<LeftMouse>\<LeftRelease>\<LeftMouse>\<LeftRelease>\<LeftMouse>\<LeftRelease>\<LeftMouse>")
--- 731,737 ----
    call TermWait(buf, 50)
    call assert_equal("vim emacs sublime nano\n", readfile('Xbuf')[0])
  
!   " Test for selecting a block using quadruple click
    call delete('Xbuf')
    call test_setmouse(1, 11)
    call term_sendkeys(buf, 
"\<LeftMouse>\<LeftRelease>\<LeftMouse>\<LeftRelease>\<LeftMouse>\<LeftRelease>\<LeftMouse>")
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_MyTermCol.dump        
2021-11-20 13:45:17.118795303 +0000
--- src/testdir/dumps/Test_terminal_color_MyTermCol.dump        2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+ |h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+ > +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|2+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|3+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|4+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|5+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|6+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|7+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|8+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|9+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|0| @34
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&@1| @34
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|2| @34
+ |!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| 
|N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_MyTermCol_over_Terminal.dump
  2021-11-20 13:45:17.122795291 +0000
--- src/testdir/dumps/Test_terminal_color_MyTermCol_over_Terminal.dump  
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+ |h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+ > +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|2+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|3+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|4+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|5+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|6+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|7+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|8+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|9+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|0| @34
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&@1| @34
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|2| @34
+ |!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| 
|N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_MyWinCol.dump 
2021-11-20 13:45:17.126795280 +0000
--- src/testdir/dumps/Test_terminal_color_MyWinCol.dump 2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+ |h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+ > +0#ff404010#e0e0004@36||+1#0000000#ffffff0|2+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|3+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|4+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|5+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|6+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|7+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|8+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|9+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&|0| @34
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&@1| @34
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&|2| @34
+ |!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| 
|N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_MyWinCol_over_group.dump  
    2021-11-20 13:45:17.130795265 +0000
--- src/testdir/dumps/Test_terminal_color_MyWinCol_over_group.dump      
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+ |h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+ > +0#ff404010#e0e0004@36||+1#0000000#ffffff0|2+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|3+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|4+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|5+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|6+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|7+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|8+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|9+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&|0| @34
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&@1| @34
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&|2| @34
+ |!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| 
|N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_Terminal.dump 
2021-11-20 13:45:17.134795253 +0000
--- src/testdir/dumps/Test_terminal_color_Terminal.dump 2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#4040ff13#ffff4012|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+ |h+0#4040ff13#ffff4012|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+ > +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|2+0&&| @35
+ | +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|3+0&&| @35
+ | +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|4+0&&| @35
+ | +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|5+0&&| @35
+ | +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|6+0&&| @35
+ | +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|7+0&&| @35
+ | +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|8+0&&| @35
+ | +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|9+0&&| @35
+ | +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|1+0&&|0| @34
+ | +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|1+0&&@1| @34
+ | +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|1+0&&|2| @34
+ |!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| 
|N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_gui_MyTermCol.dump    
2021-11-20 13:45:17.138795240 +0000
--- src/testdir/dumps/Test_terminal_color_gui_MyTermCol.dump    2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#007800255#6789ff255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+ |h+0#007800255#6789ff255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+ > +0#007800255#6789ff255@36||+1#0000000#ffffff0|2+0&&| @35
+ | +0#007800255#6789ff255@36||+1#0000000#ffffff0|3+0&&| @35
+ | +0#007800255#6789ff255@36||+1#0000000#ffffff0|4+0&&| @35
+ | +0#007800255#6789ff255@36||+1#0000000#ffffff0|5+0&&| @35
+ | +0#007800255#6789ff255@36||+1#0000000#ffffff0|6+0&&| @35
+ | +0#007800255#6789ff255@36||+1#0000000#ffffff0|7+0&&| @35
+ | +0#007800255#6789ff255@36||+1#0000000#ffffff0|8+0&&| @35
+ | +0#007800255#6789ff255@36||+1#0000000#ffffff0|9+0&&| @35
+ | +0#007800255#6789ff255@36||+1#0000000#ffffff0|1+0&&|0| @34
+ | +0#007800255#6789ff255@36||+1#0000000#ffffff0|1+0&&@1| @34
+ | +0#007800255#6789ff255@36||+1#0000000#ffffff0|1+0&&|2| @34
+ |!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| 
@23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_gui_MyWinCol.dump     
2021-11-20 13:45:17.142795229 +0000
--- src/testdir/dumps/Test_terminal_color_gui_MyWinCol.dump     2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#fe1122255#818100255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+ |h+0#fe1122255#818100255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+ > +0#fe1122255#818100255@36||+1#0000000#ffffff0|2+0&&| @35
+ | +0#fe1122255#818100255@36||+1#0000000#ffffff0|3+0&&| @35
+ | +0#fe1122255#818100255@36||+1#0000000#ffffff0|4+0&&| @35
+ | +0#fe1122255#818100255@36||+1#0000000#ffffff0|5+0&&| @35
+ | +0#fe1122255#818100255@36||+1#0000000#ffffff0|6+0&&| @35
+ | +0#fe1122255#818100255@36||+1#0000000#ffffff0|7+0&&| @35
+ | +0#fe1122255#818100255@36||+1#0000000#ffffff0|8+0&&| @35
+ | +0#fe1122255#818100255@36||+1#0000000#ffffff0|9+0&&| @35
+ | +0#fe1122255#818100255@36||+1#0000000#ffffff0|1+0&&|0| @34
+ | +0#fe1122255#818100255@36||+1#0000000#ffffff0|1+0&&@1| @34
+ | +0#fe1122255#818100255@36||+1#0000000#ffffff0|1+0&&|2| @34
+ |!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| 
@23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_gui_Terminal.dump     
2021-11-20 13:45:17.146795214 +0000
--- src/testdir/dumps/Test_terminal_color_gui_Terminal.dump     2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#3344ff255#b0a700255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+ |h+0#3344ff255#b0a700255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+ > +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|2+0&&| @35
+ | +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|3+0&&| @35
+ | +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|4+0&&| @35
+ | +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|5+0&&| @35
+ | +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|6+0&&| @35
+ | +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|7+0&&| @35
+ | +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|8+0&&| @35
+ | +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|9+0&&| @35
+ | +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|1+0&&|0| @34
+ | +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|1+0&&@1| @34
+ | +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|1+0&&|2| @34
+ |!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| 
@23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_gui_transp_MyTermCol.dump 
    2021-11-20 13:45:17.150795202 +0000
--- src/testdir/dumps/Test_terminal_color_gui_transp_MyTermCol.dump     
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#007800255#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35
+ |h+0#007800255&|e|l@1|o| @31||+1#0000000&|1+0&&| @35
+ > +0#007800255&@36||+1#0000000&|2+0&&| @35
+ | +0#007800255&@36||+1#0000000&|3+0&&| @35
+ | +0#007800255&@36||+1#0000000&|4+0&&| @35
+ | +0#007800255&@36||+1#0000000&|5+0&&| @35
+ | +0#007800255&@36||+1#0000000&|6+0&&| @35
+ | +0#007800255&@36||+1#0000000&|7+0&&| @35
+ | +0#007800255&@36||+1#0000000&|8+0&&| @35
+ | +0#007800255&@36||+1#0000000&|9+0&&| @35
+ | +0#007800255&@36||+1#0000000&|1+0&&|0| @34
+ | +0#007800255&@36||+1#0000000&|1+0&&@1| @34
+ | +0#007800255&@36||+1#0000000&|1+0&&|2| @34
+ |!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| 
@23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_gui_transp_MyWinCol.dump  
    2021-11-20 13:45:17.154795189 +0000
--- src/testdir/dumps/Test_terminal_color_gui_transp_MyWinCol.dump      
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#fe1122255#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35
+ |h+0#fe1122255&|e|l@1|o| @31||+1#0000000&|1+0&&| @35
+ > +0#fe1122255&@36||+1#0000000&|2+0&&| @35
+ | +0#fe1122255&@36||+1#0000000&|3+0&&| @35
+ | +0#fe1122255&@36||+1#0000000&|4+0&&| @35
+ | +0#fe1122255&@36||+1#0000000&|5+0&&| @35
+ | +0#fe1122255&@36||+1#0000000&|6+0&&| @35
+ | +0#fe1122255&@36||+1#0000000&|7+0&&| @35
+ | +0#fe1122255&@36||+1#0000000&|8+0&&| @35
+ | +0#fe1122255&@36||+1#0000000&|9+0&&| @35
+ | +0#fe1122255&@36||+1#0000000&|1+0&&|0| @34
+ | +0#fe1122255&@36||+1#0000000&|1+0&&@1| @34
+ | +0#fe1122255&@36||+1#0000000&|1+0&&|2| @34
+ |!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| 
@23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_gui_transp_Terminal.dump  
    2021-11-20 13:45:17.158795178 +0000
--- src/testdir/dumps/Test_terminal_color_gui_transp_Terminal.dump      
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#3344ff255#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35
+ |h+0#3344ff255&|e|l@1|o| @31||+1#0000000&|1+0&&| @35
+ > +0#3344ff255&@36||+1#0000000&|2+0&&| @35
+ | +0#3344ff255&@36||+1#0000000&|3+0&&| @35
+ | +0#3344ff255&@36||+1#0000000&|4+0&&| @35
+ | +0#3344ff255&@36||+1#0000000&|5+0&&| @35
+ | +0#3344ff255&@36||+1#0000000&|6+0&&| @35
+ | +0#3344ff255&@36||+1#0000000&|7+0&&| @35
+ | +0#3344ff255&@36||+1#0000000&|8+0&&| @35
+ | +0#3344ff255&@36||+1#0000000&|9+0&&| @35
+ | +0#3344ff255&@36||+1#0000000&|1+0&&|0| @34
+ | +0#3344ff255&@36||+1#0000000&|1+0&&@1| @34
+ | +0#3344ff255&@36||+1#0000000&|1+0&&|2| @34
+ |!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| 
@23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_transp_MyTermCol.dump 
2021-11-20 13:45:17.162795163 +0000
--- src/testdir/dumps/Test_terminal_color_transp_MyTermCol.dump 2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#00e0003#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35
+ |h+0#00e0003&|e|l@1|o| @31||+1#0000000&|1+0&&| @35
+ > +0#00e0003&@36||+1#0000000&|2+0&&| @35
+ | +0#00e0003&@36||+1#0000000&|3+0&&| @35
+ | +0#00e0003&@36||+1#0000000&|4+0&&| @35
+ | +0#00e0003&@36||+1#0000000&|5+0&&| @35
+ | +0#00e0003&@36||+1#0000000&|6+0&&| @35
+ | +0#00e0003&@36||+1#0000000&|7+0&&| @35
+ | +0#00e0003&@36||+1#0000000&|8+0&&| @35
+ | +0#00e0003&@36||+1#0000000&|9+0&&| @35
+ | +0#00e0003&@36||+1#0000000&|1+0&&|0| @34
+ | +0#00e0003&@36||+1#0000000&|1+0&&@1| @34
+ | +0#00e0003&@36||+1#0000000&|1+0&&|2| @34
+ |!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| 
|N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_transp_MyWinCol.dump  
2021-11-20 13:45:17.166795151 +0000
--- src/testdir/dumps/Test_terminal_color_transp_MyWinCol.dump  2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#ff404010#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35
+ |h+0#ff404010&|e|l@1|o| @31||+1#0000000&|1+0&&| @35
+ > +0#ff404010&@36||+1#0000000&|2+0&&| @35
+ | +0#ff404010&@36||+1#0000000&|3+0&&| @35
+ | +0#ff404010&@36||+1#0000000&|4+0&&| @35
+ | +0#ff404010&@36||+1#0000000&|5+0&&| @35
+ | +0#ff404010&@36||+1#0000000&|6+0&&| @35
+ | +0#ff404010&@36||+1#0000000&|7+0&&| @35
+ | +0#ff404010&@36||+1#0000000&|8+0&&| @35
+ | +0#ff404010&@36||+1#0000000&|9+0&&| @35
+ | +0#ff404010&@36||+1#0000000&|1+0&&|0| @34
+ | +0#ff404010&@36||+1#0000000&|1+0&&@1| @34
+ | +0#ff404010&@36||+1#0000000&|1+0&&|2| @34
+ |!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| 
|N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_color_transp_Terminal.dump  
2021-11-20 13:45:17.170795138 +0000
--- src/testdir/dumps/Test_terminal_color_transp_Terminal.dump  2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#4040ff13#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35
+ |h+0#4040ff13&|e|l@1|o| @31||+1#0000000&|1+0&&| @35
+ > +0#4040ff13&@36||+1#0000000&|2+0&&| @35
+ | +0#4040ff13&@36||+1#0000000&|3+0&&| @35
+ | +0#4040ff13&@36||+1#0000000&|4+0&&| @35
+ | +0#4040ff13&@36||+1#0000000&|5+0&&| @35
+ | +0#4040ff13&@36||+1#0000000&|6+0&&| @35
+ | +0#4040ff13&@36||+1#0000000&|7+0&&| @35
+ | +0#4040ff13&@36||+1#0000000&|8+0&&| @35
+ | +0#4040ff13&@36||+1#0000000&|9+0&&| @35
+ | +0#4040ff13&@36||+1#0000000&|1+0&&|0| @34
+ | +0#4040ff13&@36||+1#0000000&|1+0&&@1| @34
+ | +0#4040ff13&@36||+1#0000000&|1+0&&|2| @34
+ |!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| 
|N|a|m|e|]| |[|+|]| @23
+ |:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_MyPopupHlCol.dump     
2021-11-20 13:45:17.174795128 +0000
--- src/testdir/dumps/Test_terminal_popup_MyPopupHlCol.dump     2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0#40ffff15#40ff4011|═@19|╗| +0#0000000#ffffff0@26
+ |5| @24|║+0#40ffff15#40ff4011|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+ |6| @24|║+0#40ffff15#40ff4011|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+ |7| @24|║+0#40ffff15#40ff4011> @19|║| +0#0000000#ffffff0@26
+ |8| @24|║+0#40ffff15#40ff4011| @19|║| +0#0000000#ffffff0@26
+ |9| @24|║+0#40ffff15#40ff4011| @19|║| +0#0000000#ffffff0@26
+ |1|0| @23|╚+0#40ffff15#40ff4011|═@19|╝| +0#0000000#ffffff0@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_MyTermCol_over_Terminal.dump
  2021-11-20 13:45:17.178795112 +0000
--- src/testdir/dumps/Test_terminal_popup_MyTermCol_over_Terminal.dump  
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26
+ |5| @24|║+0#0000001#ffd7ff255|h+0#00e0003#5fd7ff255|e|l@1|o| 
@14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+ |6| @24|║+0#0000001#ffd7ff255|h+0#00e0003#5fd7ff255|e|l@1|o| 
@14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+ |7| @24|║+0#0000001#ffd7ff255> +0#00e0003#5fd7ff255@19|║+0#0000001#ffd7ff255| 
+0#0000000#ffffff0@26
+ |8| @24|║+0#0000001#ffd7ff255| +0#00e0003#5fd7ff255@19|║+0#0000001#ffd7ff255| 
+0#0000000#ffffff0@26
+ |9| @24|║+0#0000001#ffd7ff255| +0#00e0003#5fd7ff255@19|║+0#0000001#ffd7ff255| 
+0#0000000#ffffff0@26
+ |1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_MyWinCol.dump 
2021-11-20 13:45:17.182795100 +0000
--- src/testdir/dumps/Test_terminal_popup_MyWinCol.dump 2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0#ff404010#e0e0004|═@19|╗| +0#0000000#ffffff0@26
+ |5| @24|║+0#ff404010#e0e0004|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+ |6| @24|║+0#ff404010#e0e0004|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+ |7| @24|║+0#ff404010#e0e0004> @19|║| +0#0000000#ffffff0@26
+ |8| @24|║+0#ff404010#e0e0004| @19|║| +0#0000000#ffffff0@26
+ |9| @24|║+0#ff404010#e0e0004| @19|║| +0#0000000#ffffff0@26
+ |1|0| @23|╚+0#ff404010#e0e0004|═@19|╝| +0#0000000#ffffff0@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_MyWinCol_over_group.dump  
    2021-11-20 13:45:17.186795087 +0000
--- src/testdir/dumps/Test_terminal_popup_MyWinCol_over_group.dump      
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0#ff404010#e0e0004|═@19|╗| +0#0000000#ffffff0@26
+ |5| @24|║+0#ff404010#e0e0004|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+ |6| @24|║+0#ff404010#e0e0004|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+ |7| @24|║+0#ff404010#e0e0004> @19|║| +0#0000000#ffffff0@26
+ |8| @24|║+0#ff404010#e0e0004| @19|║| +0#0000000#ffffff0@26
+ |9| @24|║+0#ff404010#e0e0004| @19|║| +0#0000000#ffffff0@26
+ |1|0| @23|╚+0#ff404010#e0e0004|═@19|╝| +0#0000000#ffffff0@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_gui_MyPopupHlCol.dump 
2021-11-20 13:45:17.190795075 +0000
--- src/testdir/dumps/Test_terminal_popup_gui_MyPopupHlCol.dump 2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0#00e8f0255#126521255|═@19|╗| +0#0000000#ffffff0@26
+ |5| @24|║+0#00e8f0255#126521255|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+ |6| @24|║+0#00e8f0255#126521255|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+ |7| @24|║+0#00e8f0255#126521255> @19|║| +0#0000000#ffffff0@26
+ |8| @24|║+0#00e8f0255#126521255| @19|║| +0#0000000#ffffff0@26
+ |9| @24|║+0#00e8f0255#126521255| @19|║| +0#0000000#ffffff0@26
+ |1|0| @23|╚+0#00e8f0255#126521255|═@19|╝| +0#0000000#ffffff0@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_gui_MyTermCol.dump    
2021-11-20 13:45:17.194795064 +0000
--- src/testdir/dumps/Test_terminal_popup_gui_MyTermCol.dump    2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0&#ff8bff255|═@19|╗| +0&#ffffff0@26
+ |5| @24|║+0&#ff8bff255|h+0#007800255#6789ff255|e|l@1|o| 
@14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+ |6| @24|║+0&#ff8bff255|h+0#007800255#6789ff255|e|l@1|o| 
@14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+ |7| @24|║+0&#ff8bff255> +0#007800255#6789ff255@19|║+0#0000000#ff8bff255| 
+0&#ffffff0@26
+ |8| @24|║+0&#ff8bff255| +0#007800255#6789ff255@19|║+0#0000000#ff8bff255| 
+0&#ffffff0@26
+ |9| @24|║+0&#ff8bff255| +0#007800255#6789ff255@19|║+0#0000000#ff8bff255| 
+0&#ffffff0@26
+ |1|0| @23|╚+0&#ff8bff255|═@19|╝| +0&#ffffff0@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_gui_MyWinCol.dump     
2021-11-20 13:45:17.194795064 +0000
--- src/testdir/dumps/Test_terminal_popup_gui_MyWinCol.dump     2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0#fe1122255#818100255|═@19|╗| +0#0000000#ffffff0@26
+ |5| @24|║+0#fe1122255#818100255|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+ |6| @24|║+0#fe1122255#818100255|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+ |7| @24|║+0#fe1122255#818100255> @19|║| +0#0000000#ffffff0@26
+ |8| @24|║+0#fe1122255#818100255| @19|║| +0#0000000#ffffff0@26
+ |9| @24|║+0#fe1122255#818100255| @19|║| +0#0000000#ffffff0@26
+ |1|0| @23|╚+0#fe1122255#818100255|═@19|╝| +0#0000000#ffffff0@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_gui_Terminal.dump     
2021-11-20 13:45:17.198795049 +0000
--- src/testdir/dumps/Test_terminal_popup_gui_Terminal.dump     2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0&#ff8bff255|═@19|╗| +0&#ffffff0@26
+ |5| @24|║+0&#ff8bff255|h+0#3344ff255#b0a700255|e|l@1|o| 
@14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+ |6| @24|║+0&#ff8bff255|h+0#3344ff255#b0a700255|e|l@1|o| 
@14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+ |7| @24|║+0&#ff8bff255> +0#3344ff255#b0a700255@19|║+0#0000000#ff8bff255| 
+0&#ffffff0@26
+ |8| @24|║+0&#ff8bff255| +0#3344ff255#b0a700255@19|║+0#0000000#ff8bff255| 
+0&#ffffff0@26
+ |9| @24|║+0&#ff8bff255| +0#3344ff255#b0a700255@19|║+0#0000000#ff8bff255| 
+0&#ffffff0@26
+ |1|0| @23|╚+0&#ff8bff255|═@19|╝| +0&#ffffff0@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_gui_transp_MyPopupHlCol.dump
  2021-11-20 13:45:17.202795037 +0000
--- src/testdir/dumps/Test_terminal_popup_gui_transp_MyPopupHlCol.dump  
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0#00e8f0255&|═@19|╗| +0#0000000&@26
+ |5| @24|║+0#00e8f0255&|h|e|l@1|o| @14|║| +0#0000000&@26
+ |6| @24|║+0#00e8f0255&|h|e|l@1|o| @14|║| +0#0000000&@26
+ |7| @24|║+0#00e8f0255&> @19|║| +0#0000000&@26
+ |8| @24|║+0#00e8f0255&| @19|║| +0#0000000&@26
+ |9| @24|║+0#00e8f0255&| @19|║| +0#0000000&@26
+ |1|0| @23|╚+0#00e8f0255&|═@19|╝| +0#0000000&@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_gui_transp_MyTermCol.dump 
    2021-11-20 13:45:17.206795024 +0000
--- src/testdir/dumps/Test_terminal_popup_gui_transp_MyTermCol.dump     
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0&#ff8bff255|═@19|╗| +0&#ffffff0@26
+ |5| @24|║+0&#ff8bff255|h+0#007800255#ffffff0|e|l@1|o| 
@14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+ |6| @24|║+0&#ff8bff255|h+0#007800255#ffffff0|e|l@1|o| 
@14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+ |7| @24|║+0&#ff8bff255> +0#007800255#ffffff0@19|║+0#0000000#ff8bff255| 
+0&#ffffff0@26
+ |8| @24|║+0&#ff8bff255| +0#007800255#ffffff0@19|║+0#0000000#ff8bff255| 
+0&#ffffff0@26
+ |9| @24|║+0&#ff8bff255| +0#007800255#ffffff0@19|║+0#0000000#ff8bff255| 
+0&#ffffff0@26
+ |1|0| @23|╚+0&#ff8bff255|═@19|╝| +0&#ffffff0@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_gui_transp_MyWinCol.dump  
    2021-11-20 13:45:17.210795013 +0000
--- src/testdir/dumps/Test_terminal_popup_gui_transp_MyWinCol.dump      
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0#fe1122255&|═@19|╗| +0#0000000&@26
+ |5| @24|║+0#fe1122255&|h|e|l@1|o| @14|║| +0#0000000&@26
+ |6| @24|║+0#fe1122255&|h|e|l@1|o| @14|║| +0#0000000&@26
+ |7| @24|║+0#fe1122255&> @19|║| +0#0000000&@26
+ |8| @24|║+0#fe1122255&| @19|║| +0#0000000&@26
+ |9| @24|║+0#fe1122255&| @19|║| +0#0000000&@26
+ |1|0| @23|╚+0#fe1122255&|═@19|╝| +0#0000000&@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_gui_transp_Terminal.dump  
    2021-11-20 13:45:17.214794998 +0000
--- src/testdir/dumps/Test_terminal_popup_gui_transp_Terminal.dump      
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0&#ff8bff255|═@19|╗| +0&#ffffff0@26
+ |5| @24|║+0&#ff8bff255|h+0#3344ff255#ffffff0|e|l@1|o| 
@14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+ |6| @24|║+0&#ff8bff255|h+0#3344ff255#ffffff0|e|l@1|o| 
@14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+ |7| @24|║+0&#ff8bff255> +0#3344ff255#ffffff0@19|║+0#0000000#ff8bff255| 
+0&#ffffff0@26
+ |8| @24|║+0&#ff8bff255| +0#3344ff255#ffffff0@19|║+0#0000000#ff8bff255| 
+0&#ffffff0@26
+ |9| @24|║+0&#ff8bff255| +0#3344ff255#ffffff0@19|║+0#0000000#ff8bff255| 
+0&#ffffff0@26
+ |1|0| @23|╚+0&#ff8bff255|═@19|╝| +0&#ffffff0@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_transp_MyPopupHlCol.dump  
    2021-11-20 13:45:17.218794986 +0000
--- src/testdir/dumps/Test_terminal_popup_transp_MyPopupHlCol.dump      
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0#40ffff15&|═@19|╗| +0#0000000&@26
+ |5| @24|║+0#40ffff15&|h|e|l@1|o| @14|║| +0#0000000&@26
+ |6| @24|║+0#40ffff15&|h|e|l@1|o| @14|║| +0#0000000&@26
+ |7| @24|║+0#40ffff15&> @19|║| +0#0000000&@26
+ |8| @24|║+0#40ffff15&| @19|║| +0#0000000&@26
+ |9| @24|║+0#40ffff15&| @19|║| +0#0000000&@26
+ |1|0| @23|╚+0#40ffff15&|═@19|╝| +0#0000000&@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_transp_MyTermCol.dump 
2021-11-20 13:45:17.222794973 +0000
--- src/testdir/dumps/Test_terminal_popup_transp_MyTermCol.dump 2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26
+ |5| @24|║+0#0000001#ffd7ff255|h+0#00e0003#ffffff0|e|l@1|o| 
@14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+ |6| @24|║+0#0000001#ffd7ff255|h+0#00e0003#ffffff0|e|l@1|o| 
@14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+ |7| @24|║+0#0000001#ffd7ff255> +0#00e0003#ffffff0@19|║+0#0000001#ffd7ff255| 
+0#0000000#ffffff0@26
+ |8| @24|║+0#0000001#ffd7ff255| +0#00e0003#ffffff0@19|║+0#0000001#ffd7ff255| 
+0#0000000#ffffff0@26
+ |9| @24|║+0#0000001#ffd7ff255| +0#00e0003#ffffff0@19|║+0#0000001#ffd7ff255| 
+0#0000000#ffffff0@26
+ |1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_transp_MyWinCol.dump  
2021-11-20 13:45:17.226794962 +0000
--- src/testdir/dumps/Test_terminal_popup_transp_MyWinCol.dump  2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0#ff404010&|═@19|╗| +0#0000000&@26
+ |5| @24|║+0#ff404010&|h|e|l@1|o| @14|║| +0#0000000&@26
+ |6| @24|║+0#ff404010&|h|e|l@1|o| @14|║| +0#0000000&@26
+ |7| @24|║+0#ff404010&> @19|║| +0#0000000&@26
+ |8| @24|║+0#ff404010&| @19|║| +0#0000000&@26
+ |9| @24|║+0#ff404010&| @19|║| +0#0000000&@26
+ |1|0| @23|╚+0#ff404010&|═@19|╝| +0#0000000&@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** ../vim-8.2.3627/src/testdir/dumps/Test_terminal_popup_transp_Terminal.dump  
2021-11-20 13:45:17.230794947 +0000
--- src/testdir/dumps/Test_terminal_popup_transp_Terminal.dump  2021-11-20 
13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |3| @73
+ |4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26
+ |5| @24|║+0#0000001#ffd7ff255|h+0#4040ff13#ffffff0|e|l@1|o| 
@14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+ |6| @24|║+0#0000001#ffd7ff255|h+0#4040ff13#ffffff0|e|l@1|o| 
@14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+ |7| @24|║+0#0000001#ffd7ff255> +0#4040ff13#ffffff0@19|║+0#0000001#ffd7ff255| 
+0#0000000#ffffff0@26
+ |8| @24|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@19|║+0#0000001#ffd7ff255| 
+0#0000000#ffffff0@26
+ |9| @24|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@19|║+0#0000001#ffd7ff255| 
+0#0000000#ffffff0@26
+ |1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26
+ |1@1| @72
+ |1|2| @72
+ |1|3| @72
+ @75
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol.dump    
    2021-11-20 13:45:17.234794935 +0000
--- src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol.dump        
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+ |h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+ > +0#ff404010#e0e0004@36||+1#0000000#ffffff0|2+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|3+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|4+0&&| @35
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0|5+0&&| @35
+ |!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| 
@22||+1#0000000#ffffff0|6+0&&| @35
+ |h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|7+0&&| @35
+ |h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|8+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|9+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|0| @34
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&@1| @34
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|2| @34
+ |!+0#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| 
|N|a|m|e|]| |[|+|]| @23
+ |:+0&&|s|e|t| |w|i|n|c|o|l|o|r|=|M|y|W|i|n|C|o|l| @52
*** 
../vim-8.2.3627/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol2.dump   
    2021-11-20 13:45:17.238794922 +0000
--- src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol2.dump       
2021-11-20 13:29:36.454251921 +0000
***************
*** 0 ****
--- 1,15 ----
+ |h+0#ff404010#e0e0004|e|l@1|o| 
@31||+1#0000000#ffffff0|h+0#0000001#4040ff13|e|l@1|o| @31
+ |h+0#ff404010#e0e0004|e|l@1|o| 
@31||+1#0000000#ffffff0|h+0#0000001#4040ff13|e|l@1|o| @31
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0> +0#0000001#4040ff13@36
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0| +0#0000001#4040ff13@36
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0| +0#0000001#4040ff13@36
+ | +0#ff404010#e0e0004@36||+1#0000000#ffffff0| +0#0000001#4040ff13@36
+ |!+0#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| 
@22||+1#0000000#ffffff0|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @22
+ |h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+ |h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|2+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|3+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|4+0&&| @35
+ | +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|5+0&&| @35
+ |!+0#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| 
|N|a|m|e|]| |[|+|]| @23
+ |:+0&&|s|e|t| |w|i|n|c|o|l|o|r|=|M|y|W|i|n|C|o|l|2| @51
*** ../vim-8.2.3627/src/version.c       2021-11-20 11:13:53.201671127 +0000
--- src/version.c       2021-11-20 13:44:53.294871191 +0000
***************
*** 759,760 ****
--- 759,762 ----
  {   /* Add new patch number below this line */
+ /**/
+     3628,
  /**/

-- 
Save the plankton - eat a whale.

 /// 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/20211120134831.C88381C15D4%40moolenaar.net.

Raspunde prin e-mail lui