diff options
| -rw-r--r-- | ui-terminal-curses.c | 4 | ||||
| -rw-r--r-- | ui-terminal-vt100.c | 4 | ||||
| -rw-r--r-- | ui.h | 2 | ||||
| -rw-r--r-- | vis.c | 7 |
4 files changed, 16 insertions, 1 deletions
diff --git a/ui-terminal-curses.c b/ui-terminal-curses.c index 59f5bc3..e5ab853 100644 --- a/ui-terminal-curses.c +++ b/ui-terminal-curses.c @@ -289,3 +289,7 @@ static void ui_curses_free(UiTerm *term) { ui_curses_suspend(term); endwin(); } + +bool is_default_color(CellColor c) { + return c == CELL_COLOR_DEFAULT; +} diff --git a/ui-terminal-vt100.c b/ui-terminal-vt100.c index b584276..3ef2740 100644 --- a/ui-terminal-vt100.c +++ b/ui-terminal-vt100.c @@ -215,3 +215,7 @@ static void ui_vt100_free(UiTerm *tui) { ui_vt100_suspend(tui); buffer_release(&vtui->buf); } + +bool is_default_color(CellColor c) { + return c.index == ((CellColor) CELL_COLOR_DEFAULT).index; +} @@ -115,4 +115,6 @@ struct UiWin { int (*window_height)(UiWin*); }; +bool is_default_color(CellColor c); + #endif @@ -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; |
