]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.2.0906: when setting 'termguicolors' SpellBad is no longer red v8.2.0906
authorBram Moolenaar <Bram@vim.org>
Fri, 5 Jun 2020 17:36:57 +0000 (19:36 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 5 Jun 2020 17:36:57 +0000 (19:36 +0200)
Problem:    When setting 'termguicolors' SpellBad is no longer red.
Solution:   Only use the RGB guisp color for cterm when using the "underline"
            or "undercurl" attributes to avoid the background color to be
            cleared. Also make t_8u empty when the termresponse indicates a
            real xterm. (closes #6207)

src/highlight.c
src/term.c
src/version.c

index 9ce610293c2db45ed3ec0970a59f486b756c8c57..6291f24aca72508761feef9b0c34203603463184 100644 (file)
@@ -2929,7 +2929,12 @@ set_hl_attr(
 #  endif
        at_en.ae_u.cterm.fg_rgb = GUI_MCH_GET_RGB2(sgp->sg_gui_fg);
        at_en.ae_u.cterm.bg_rgb = GUI_MCH_GET_RGB2(sgp->sg_gui_bg);
-       at_en.ae_u.cterm.ul_rgb = GUI_MCH_GET_RGB2(sgp->sg_gui_sp);
+       // Only use the underline/undercurl color when used, it may clear the
+       // background color if not supported.
+       if (sgp->sg_cterm & (HL_UNDERLINE | HL_UNDERCURL))
+           at_en.ae_u.cterm.ul_rgb = GUI_MCH_GET_RGB2(sgp->sg_gui_sp);
+       else
+           at_en.ae_u.cterm.ul_rgb = INVALCOLOR;
        if (at_en.ae_u.cterm.fg_rgb == INVALCOLOR
                && at_en.ae_u.cterm.bg_rgb == INVALCOLOR)
        {
index c024fcece333e0955ba5a59a1f575e4ac98feb30..b4b5c091a83836b9a6de2c58c8071adadff17d56 100644 (file)
@@ -4819,6 +4819,11 @@ not_enough:
                        if (version < 95)
                            is_not_xterm = TRUE;
 
+                       // With the real Xterm setting the underline RGB color
+                       // clears the background color, disable "t_8u".
+                       if (!is_not_xterm && *T_8U != NUL)
+                           T_8U = empty_option;
+
                        // Only request the cursor style if t_SH and t_RS are
                        // set. Only supported properly by xterm since version
                        // 279 (otherwise it returns 0x18).
index 377928c1a0630ecaefb65dd06e8f078e620a770f..05301068270b567603d3737adf9ff286a434b1f8 100644 (file)
@@ -746,6 +746,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    906,
 /**/
     905,
 /**/