summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-02-27 13:04:59 +0100
committerBram Moolenaar <Bram@vim.org>2018-02-27 13:04:59 +0100
commit33ef5bb0e4ea9a049c4311cfe59d1926dcb963a4 (patch)
treeb3f1e306768ebcc6fd6f63e6988da27f95d7a3f6
parent9271d058c92c94b696eed5da24a69c077f42bc91 (diff)
patch 8.0.1543: with 'termguicolors' Normal color doesn't work correctlyv8.0.1543
Problem: With 'termguicolors' Normal color doesn't work correctly. Solution: Set cterm_normal_bg_gui_color and cterm_normal_fg_color always. (Kazunobu Kuriyama, closes #981, closes #2332)
-rw-r--r--src/syntax.c50
-rw-r--r--src/version.c2
2 files changed, 26 insertions, 26 deletions
diff --git a/src/syntax.c b/src/syntax.c
index 89941b6259..8c11c2b643 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -8411,10 +8411,10 @@ highlight_clear(int idx)
void
set_normal_colors(void)
{
-#ifdef FEAT_GUI
-# ifdef FEAT_TERMGUICOLORS
+# ifdef FEAT_GUI
+# ifdef FEAT_TERMGUICOLORS
if (gui.in_use)
-# endif
+# endif
{
if (set_group_colors((char_u *)"Normal",
&gui.norm_pixel, &gui.back_pixel,
@@ -8423,27 +8423,27 @@ set_normal_colors(void)
gui_mch_new_colors();
must_redraw = CLEAR;
}
-# ifdef FEAT_GUI_X11
+# ifdef FEAT_GUI_X11
if (set_group_colors((char_u *)"Menu",
&gui.menu_fg_pixel, &gui.menu_bg_pixel,
TRUE, FALSE, FALSE))
{
-# ifdef FEAT_MENU
+# ifdef FEAT_MENU
gui_mch_new_menu_colors();
-# endif
+# endif
must_redraw = CLEAR;
}
-# ifdef FEAT_BEVAL_GUI
+# ifdef FEAT_BEVAL_GUI
if (set_group_colors((char_u *)"Tooltip",
&gui.tooltip_fg_pixel, &gui.tooltip_bg_pixel,
FALSE, FALSE, TRUE))
{
-# ifdef FEAT_TOOLBAR
+# ifdef FEAT_TOOLBAR
gui_mch_new_tooltip_colors();
-# endif
+# endif
must_redraw = CLEAR;
}
-# endif
+# endif
if (set_group_colors((char_u *)"Scrollbar",
&gui.scroll_fg_pixel, &gui.scroll_bg_pixel,
FALSE, FALSE, FALSE))
@@ -8451,13 +8451,13 @@ set_normal_colors(void)
gui_new_scrollbar_colors();
must_redraw = CLEAR;
}
-# endif
+# endif
}
-#endif
-#ifdef FEAT_TERMGUICOLORS
-# ifdef FEAT_GUI
- else
# endif
+# ifdef FEAT_TERMGUICOLORS
+# ifdef FEAT_GUI
+ else
+# endif
{
int idx;
@@ -8466,19 +8466,20 @@ set_normal_colors(void)
{
gui_do_one_color(idx, FALSE, FALSE);
- if (HL_TABLE()[idx].sg_gui_fg != INVALCOLOR)
+ /* If the normal fg or bg color changed a complete redraw is
+ * required. */
+ if (cterm_normal_fg_gui_color != HL_TABLE()[idx].sg_gui_fg
+ || cterm_normal_bg_gui_color != HL_TABLE()[idx].sg_gui_bg)
{
+ /* if the GUI color is INVALCOLOR then we use the default cterm
+ * color */
cterm_normal_fg_gui_color = HL_TABLE()[idx].sg_gui_fg;
- must_redraw = CLEAR;
- }
- if (HL_TABLE()[idx].sg_gui_bg != INVALCOLOR)
- {
cterm_normal_bg_gui_color = HL_TABLE()[idx].sg_gui_bg;
must_redraw = CLEAR;
}
}
}
-#endif
+# endif
}
#endif
@@ -9867,9 +9868,10 @@ syn_get_final_id(int hl_id)
return hl_id;
}
-#if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
+#if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS) || defined(PROTO)
/*
* Call this function just after the GUI has started.
+ * Also called when 'termguicolors' was set, gui.in_use will be FALSE then.
* It finds the font and color handles for the highlighting groups.
*/
void
@@ -9878,12 +9880,8 @@ highlight_gui_started(void)
int idx;
/* First get the colors from the "Normal" and "Menu" group, if set */
-# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
-# ifdef FEAT_TERMGUICOLORS
if (USE_24BIT)
-# endif
set_normal_colors();
-# endif
for (idx = 0; idx < highlight_ga.ga_len; ++idx)
gui_do_one_color(idx, FALSE, FALSE);
diff --git a/src/version.c b/src/version.c
index 462f746e21..09dcc57d91 100644
--- a/src/version.c
+++ b/src/version.c
@@ -779,6 +779,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1543,
+/**/
1542,
/**/
1541,