summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2020-06-14 03:51:24 +0000
committerEli Zaretskii <eliz@gnu.org>2020-06-20 11:16:14 +0300
commit50f489b5dc59ba8eacd6dc5bdee98da690a61f2f (patch)
tree0d14e5c3931116e3bc2f98a45dc8c24dee7cf429
parented08512978812220045ff12941d78b99ed32323f (diff)
downloademacs-50f489b5dc59ba8eacd6dc5bdee98da690a61f2f.tar.gz
Add fallback for 24-bit terminal color via COLORTERM=truecolor
* src/term.c (init_tty): When COLORTERM=truecolor is defined, override setaf/setab/colors terminfo capabilities with 24-bit color support. * doc/misc/efaq.texi (Colors on a TTY): Mention the possibility to enable 24-bit color via the COLORTERM environment variable. (Bug#41846) Copyright-paperwork-exempt: yes
-rw-r--r--doc/misc/efaq.texi4
-rw-r--r--src/term.c9
2 files changed, 13 insertions, 0 deletions
diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi
index f5f01848f77..8f7ed715b52 100644
--- a/doc/misc/efaq.texi
+++ b/doc/misc/efaq.texi
@@ -1595,6 +1595,10 @@ xterm-direct2 xterm with direct-color indexing (old)
xterm-direct xterm with direct-color indexing
@end example
+If Terminfo database is not available, but 24-bit direct color mode is
+supported, it can still be enabled by defining the environment
+variable @env{COLORTERM} to @samp{truecolor}.
+
Terminals with @samp{RGB} capability treat pixels #000001 - #000007 as
indexed colors to maintain backward compatibility with applications
that are unaware of direct color mode. Therefore the seven darkest
diff --git a/src/term.c b/src/term.c
index 94bf013f4a0..5cbb092ad17 100644
--- a/src/term.c
+++ b/src/term.c
@@ -4168,6 +4168,15 @@ use the Bourne shell command 'TERM=...; export TERM' (C-shell:\n\
could return 32767. */
tty->TN_max_colors = 16777216;
}
+ /* Fall back to xterm+direct (semicolon version) if requested
+ by the COLORTERM environment variable. */
+ else if ((bg = getenv("COLORTERM")) != NULL
+ && strcasecmp(bg, "truecolor") == 0)
+ {
+ tty->TS_set_foreground = "\033[%?%p1%{8}%<%t3%p1%d%e38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%d%;m";
+ tty->TS_set_background = "\033[%?%p1%{8}%<%t4%p1%d%e48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%d%;m";
+ tty->TN_max_colors = 16777216;
+ }
}
#endif