diff options
author | Thomas Fehér <thomas.feher@yahoo.de> | 2020-09-12 07:43:35 +0200 |
---|---|---|
committer | Thomas Fehér <thomas.feher@yahoo.de> | 2020-11-26 18:36:22 +0100 |
commit | d8963c434f01e6a7316fa5a1dad35f95c7ca73b7 (patch) | |
tree | f3096eb2bfd34445d26283b5e14b9730bbb5dc34 /src/nvim/os/pty_process_unix.c | |
parent | a6bd52d877875deecb65d367bca8eda5d89fb8bc (diff) | |
download | rneovim-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.c | 15 |
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); |