From bae3c238adad2b9bbfc6a8ad340caab1c6149ed4 Mon Sep 17 00:00:00 2001 From: Gennadiy Volkov Date: Sun, 8 Mar 2020 19:55:17 +1100 Subject: color-column: Don't change fg/bg if not set explicitly eg. if your long line is a comment with green fg, and you set your column color bg red while not specifying the fg, then the result is green fg on red bg. Prior to this change the result would be default fg on red bg, thus one char in the long line of green text would look odd/wrong. Of course if you do explicitly set the column color fg to default in your theme then the result will not be what you expect - ideally we need an UNSPECIFIED color type instead of relying on DEFAULT. --- vis.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'vis.c') diff --git a/vis.c b/vis.c index 3cca4fa..72447a1 100644 --- a/vis.c +++ b/vis.c @@ -27,6 +27,8 @@ #include "util.h" #include "vis-core.h" #include "sam.h" +#include "ui.h" + static void macro_replay(Vis *vis, const Macro *macro); static void macro_replay_internal(Vis *vis, const Macro *macro); @@ -294,7 +296,10 @@ static void window_draw_colorcolumn(Win *win) { /* This screen line contains the cell we want to highlight */ if (cc <= line_cols + width) { - l->cells[(cc - 1) - line_cols].style = style; + CellStyle *orig = &l->cells[cc - 1 - line_cols].style; + orig->attr = style.attr; + orig->fg = is_default_color(style.fg) ? orig->fg : style.fg; + orig->bg = is_default_color(style.bg) ? orig->bg : style.bg; line_cc_set = true; } else { line_cols += width; -- cgit v1.2.3