aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/os/pty_process_unix.c
diff options
context:
space:
mode:
authorThomas Fehér <thomas.feher@yahoo.de>2020-09-12 07:43:35 +0200
committerThomas Fehér <thomas.feher@yahoo.de>2020-11-26 18:36:22 +0100
commitd8963c434f01e6a7316fa5a1dad35f95c7ca73b7 (patch)
treef3096eb2bfd34445d26283b5e14b9730bbb5dc34 /src/nvim/os/pty_process_unix.c
parenta6bd52d877875deecb65d367bca8eda5d89fb8bc (diff)
downloadrneovim-d8963c434f01e6a7316fa5a1dad35f95c7ca73b7.tar.gz
rneovim-d8963c434f01e6a7316fa5a1dad35f95c7ca73b7.tar.bz2
rneovim-d8963c434f01e6a7316fa5a1dad35f95c7ca73b7.zip
Fix colors in terminal by maintaining COLORTERM
Fixes https://github.com/neovim/neovim/issues/10836
Diffstat (limited to 'src/nvim/os/pty_process_unix.c')
-rw-r--r--src/nvim/os/pty_process_unix.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/nvim/os/pty_process_unix.c b/src/nvim/os/pty_process_unix.c
index f0bc13783c..4d7d9a45df 100644
--- a/src/nvim/os/pty_process_unix.c
+++ b/src/nvim/os/pty_process_unix.c
@@ -160,8 +160,21 @@ static void init_child(PtyProcess *ptyproc)
os_unsetenv("COLUMNS");
os_unsetenv("LINES");
os_unsetenv("TERMCAP");
- os_unsetenv("COLORTERM");
os_unsetenv("COLORFGBG");
+ // setting COLORTERM to "truecolor" if termguicolors is set and 256
+ // otherwise, but only if it was set in the parent terminal at all
+ if (os_env_exists("COLORTERM")) {
+ const char *colorterm = os_getenv("COLORTERM");
+ if (colorterm != NULL) {
+ if (p_tgc) {
+ os_setenv("COLORTERM", "truecolor", 1);
+ } else {
+ os_setenv("COLORTERM", "256", 1);
+ }
+ } else {
+ os_unsetenv("COLORTERM");
+ }
+ }
signal(SIGCHLD, SIG_DFL);
signal(SIGHUP, SIG_DFL);