summaryrefslogtreecommitdiffstats
path: root/src/highlight.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-06-05 19:36:57 +0200
committerBram Moolenaar <Bram@vim.org>2020-06-05 19:36:57 +0200
commitea563cc22be043ff91dcbdf2878c3d1fd944e573 (patch)
treeb6c9d2a302d2d74ee22235a880a0148ddb5b47aa /src/highlight.c
parente0c3c3d6cbb6f356058f28ecbdf3438411222083 (diff)
patch 8.2.0906: when setting 'termguicolors' SpellBad is no longer redv8.2.0906
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)
Diffstat (limited to 'src/highlight.c')
-rw-r--r--src/highlight.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/highlight.c b/src/highlight.c
index 9ce610293c..6291f24aca 100644
--- a/src/highlight.c
+++ b/src/highlight.c
@@ -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)
{