From 869de7c6270c50481499c201aa16aa5bc3a56739 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Fri, 17 Apr 2026 01:18:20 +0200 Subject: Curses: fixed rendering bright/light colors on 8-color terminals * Scinterm was simply rendering them as black, thus effectively breaking the Linux and FreeBSD vts with terminal.tes. * I was considering to render light black as white on 8-color terminals, so it's always readable. However, if you add in A_BOLD there is a good chance that the color will end up grey - at least it does in the virtual terminals (consoles). * There is no need to use bright colors in the Scintilla view defaults. E.g. 0xFFFFF is "light white". However on 8-color terminals this will be rendered like white anyway. The new defaults are closer to what terminal.tes does. --- .gitmodules | 2 +- contrib/scinterm | 2 +- lib/colors/terminal.tes | 1 + src/interface-curses/interface.c | 6 ++++++ src/view.c | 4 ++-- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 841ce77..af9fd68 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,7 +4,7 @@ ignore = untracked [submodule "scinterm"] path = contrib/scinterm - url = https://github.com/orbitalquark/scinterm.git + url = https://github.com/rhaberkorn/scinterm.git [submodule "lexilla"] path = contrib/lexilla url = https://github.com/ScintillaOrg/lexilla.git diff --git a/contrib/scinterm b/contrib/scinterm index 7f5b0e2..70691fa 160000 --- a/contrib/scinterm +++ b/contrib/scinterm @@ -1 +1 @@ -Subproject commit 7f5b0e2bdfb23a2806ed0cf9c6d25c1f37c0392e +Subproject commit 70691faf4242525cad987da11a7c4912d8006917 diff --git a/lib/colors/terminal.tes b/lib/colors/terminal.tes index ea048aa..39c5bac 100644 --- a/lib/colors/terminal.tes +++ b/lib/colors/terminal.tes @@ -9,6 +9,7 @@ Q[color.white]U[color.selback] !* Also used for popups *! [color.calltip] 0,Q[color.lwhite],Q[color.black]  +!* Due to the bold attribute this should be grey even on 8-color terminals *! [color.comment] 1,Q[color.black],Q[color.lblack]  [color.number] 0,Q[color.black],Q[color.cyan]  [color.keyword] 1,Q[color.black],Q[color.lwhite]  diff --git a/src/interface-curses/interface.c b/src/interface-curses/interface.c index 569b13a..b30e5dc 100644 --- a/src/interface-curses/interface.c +++ b/src/interface-curses/interface.c @@ -156,6 +156,12 @@ static inline gboolean teco_interface_check_key(gint key); * The 8 bright colors (if terminal supports at * least 16 colors), else they are identical to * the non-bright colors (default curses colors). + * + * As a consequence a light black (grey) foreground + * on black background might be invisible on 8 color + * terminals. + * If you add in A_BOLD, there is a good chance that + * the text will still become grey. */ #define COLOR_LBLACK COLOR_LIGHT(COLOR_BLACK) #define COLOR_LRED COLOR_LIGHT(COLOR_RED) diff --git a/src/view.c b/src/view.c index a522d1c..25c134d 100644 --- a/src/view.c +++ b/src/view.c @@ -112,9 +112,9 @@ teco_view_setup(teco_view_t *ctx) teco_view_ssm(ctx, SCI_SETCARETFORE, 0xFFFFFF, 0); teco_view_ssm(ctx, SCI_SETSELFORE, TRUE, 0x000000); - teco_view_ssm(ctx, SCI_SETSELBACK, TRUE, 0xFFFFFF); + teco_view_ssm(ctx, SCI_SETSELBACK, TRUE, 0xC0C0C0); - teco_view_ssm(ctx, SCI_STYLESETFORE, STYLE_DEFAULT, 0xFFFFFF); + teco_view_ssm(ctx, SCI_STYLESETFORE, STYLE_DEFAULT, 0xC0C0C0); teco_view_ssm(ctx, SCI_STYLESETBACK, STYLE_DEFAULT, 0x000000); teco_view_ssm(ctx, SCI_STYLESETFONT, STYLE_DEFAULT, (sptr_t)"Monospace"); teco_view_ssm(ctx, SCI_STYLECLEARALL, 0, 0); -- cgit v1.2.3