From d8963c434f01e6a7316fa5a1dad35f95c7ca73b7 Mon Sep 17 00:00:00 2001 From: Thomas Fehér Date: Sat, 12 Sep 2020 07:43:35 +0200 Subject: Fix colors in terminal by maintaining COLORTERM Fixes https://github.com/neovim/neovim/issues/10836 --- src/nvim/os/pty_process_unix.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/nvim/os/pty_process_unix.c') 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); -- cgit