mirror of
https://github.com/neovim/neovim.git
synced 2025-10-05 17:36:29 +00:00
fix(terminal): never propagate $COLORTERM from outer env (#26440)
If $COLORTERM is "truecolor" but the user sets 'notermguicolors', propagating $COLORTERM to :terminal usually doesn't work well.
This commit is contained in:
@@ -3898,12 +3898,13 @@ static void f_jobresize(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
||||
rettv->vval.v_number = 1;
|
||||
}
|
||||
|
||||
static const char *ignored_env_vars[] = {
|
||||
static const char *pty_ignored_env_vars[] = {
|
||||
#ifndef MSWIN
|
||||
"COLUMNS",
|
||||
"LINES",
|
||||
"TERMCAP",
|
||||
"COLORFGBG",
|
||||
"COLORTERM",
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
@@ -3943,9 +3944,9 @@ static dict_T *create_environment(const dictitem_T *job_env, const bool clear_en
|
||||
// child process. We're removing them here so the user can still decide
|
||||
// they want to explicitly set them.
|
||||
for (size_t i = 0;
|
||||
i < ARRAY_SIZE(ignored_env_vars) && ignored_env_vars[i];
|
||||
i < ARRAY_SIZE(pty_ignored_env_vars) && pty_ignored_env_vars[i];
|
||||
i++) {
|
||||
dictitem_T *dv = tv_dict_find(env, ignored_env_vars[i], -1);
|
||||
dictitem_T *dv = tv_dict_find(env, pty_ignored_env_vars[i], -1);
|
||||
if (dv) {
|
||||
tv_dict_item_remove(env, dv);
|
||||
}
|
||||
@@ -3953,10 +3954,6 @@ static dict_T *create_environment(const dictitem_T *job_env, const bool clear_en
|
||||
#ifndef MSWIN
|
||||
// Set COLORTERM to "truecolor" if termguicolors is set
|
||||
if (p_tgc) {
|
||||
dictitem_T *dv = tv_dict_find(env, S_LEN("COLORTERM"));
|
||||
if (dv) {
|
||||
tv_dict_item_remove(env, dv);
|
||||
}
|
||||
tv_dict_add_str(env, S_LEN("COLORTERM"), "truecolor");
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user