patch 8.2.2830: terminal colors are not updated when 'background' is set
Problem: Terminal colors are not updated when 'background' is set.
Solution: Call term_update_colors() for all terminals. (Marcin Szamotulski,
closes #8171, closes #8150)
diff --git a/src/terminal.c b/src/terminal.c
index ce9f64b..7fbff46 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -4590,9 +4590,9 @@
* Called when 'wincolor' was set.
*/
void
-term_update_colors(void)
+term_update_colors(term_T *term)
{
- term_T *term = curwin->w_buffer->b_term;
+ win_T *wp;
if (term->tl_vterm == NULL)
return;
@@ -4602,7 +4602,21 @@
&term->tl_default_color.fg,
&term->tl_default_color.bg);
- redraw_later(NOT_VALID);
+ 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);
}
/*
@@ -5939,7 +5953,7 @@
l = rettv->vval.v_list;
FOR_ALL_TERMS(tp)
- if (tp != NULL && tp->tl_buffer != NULL)
+ if (tp->tl_buffer != NULL)
if (list_append_number(l,
(varnumber_T)tp->tl_buffer->b_fnum) == FAIL)
return;