From: Austin Ray <austin@austinray.io> Date: Wed, 25 Apr 2018 10:34:04 +0000 (-0400) Subject: Respect environment VISUAL and EDITOR variables X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e215b591fedbe2cede32f8be97166b4b34d33373;p=neomutt Respect environment VISUAL and EDITOR variables * Respect environment VISUAL and EDITOR variables Commit 0ef255e repositioned where Neomutt set its standard defaults in init.c to after the logic for loading the VISUAL and EDITOR variables. As a result, Neomutt overrides the values it retrieved from the environment with the ones from the configuration file. This matches the desired precedence of config->environment->code. However, if `editor` is not set in the configuration file then Neomutt does not retrieve EDITOR and VISUAL again. This results in Neomutt falling back to the editor specified in the code. Thus the precedence is config->code. This commit returns the standard default set loop to its initial location allowing for the environment variables to be usable. Fixes #1162 --- diff --git a/init.c b/init.c index 08e23b20b..c440b8b78 100644 --- a/init.c +++ b/init.c @@ -3905,11 +3905,22 @@ int mutt_init(int skip_sys_rc, struct ListHead *commands) Matches = mutt_mem_calloc(MatchesListsize, sizeof(char *)); + /* Set standard defaults */ + for (int i = 0; MuttVars[i].name; i++) + { + set_default(&MuttVars[i]); + restore_default(&MuttVars[i]); + } + /* "$mailcap_path" precedence: config file, environment, code */ - MailcapPath = mutt_str_strdup(mutt_str_getenv("MAILCAPS")); + const char *env_mc = mutt_str_getenv("MAILCAPS"); + if (env_mc) + MailcapPath = mutt_str_strdup(env_mc); /* "$tmpdir" precedence: config file, environment, code */ - Tmpdir = mutt_str_strdup(mutt_str_getenv("TMPDIR")); + const char *env_tmp = mutt_str_getenv("TMPDIR"); + if (env_tmp) + Tmpdir = mutt_str_strdup(env_tmp); /* "$visual", "$editor" precedence: config file, environment, code */ const char *env_ed = mutt_str_getenv("VISUAL"); @@ -3921,13 +3932,6 @@ int mutt_init(int skip_sys_rc, struct ListHead *commands) mutt_str_replace(&Visual, env_ed); } - /* Set standard defaults */ - for (int i = 0; MuttVars[i].name; i++) - { - set_default(&MuttVars[i]); - restore_default(&MuttVars[i]); - } - CurrentMenu = MENU_MAIN; #ifndef LOCALES_HACK