From 3d2caf861d5e7f6e7399a1b574134821c356d75c Mon Sep 17 00:00:00 2001 From: me Date: Wed, 13 Dec 2023 15:42:48 +0300 Subject: [PATCH] Setting PWD: set on use case, not on browse This moves setting PWD environment variable closer to the places where child process (that needs PWD correctly set) is started instead of start it on browse. --- patches/restorepreview/mainline.diff | 2 +- src/nnn.c | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/patches/restorepreview/mainline.diff b/patches/restorepreview/mainline.diff index 7bd643dd..cd2f49df 100644 --- a/patches/restorepreview/mainline.diff +++ b/patches/restorepreview/mainline.diff @@ -238,7 +238,7 @@ index 0388b23c..66d3316a 100644 case SEL_PROMPT: + if (g_state.previewer) + notify_fifo(FALSE, TRUE); - r = handle_cmd(sel, newpath); + r = handle_cmd(sel, path, newpath); + if (g_state.previewer) { + pkey = previewkey; + goto run_plugin; diff --git a/src/nnn.c b/src/nnn.c index 735db388..77829dc6 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -5237,7 +5237,7 @@ static void show_help(const char *path) unlink(g_tmpfpath); } -static void setexports(void) +static void setexports(const char *path) { char dvar[] = "d0"; char fvar[] = "f0"; @@ -5261,6 +5261,7 @@ static void setexports(void) } setenv("NNN_INCLUDE_HIDDEN", xitoa(cfg.showhidden), 1); setenv("NNN_PREFER_SELECTION", xitoa(cfg.prefersel), 1); + setenv("PWD", path, 1); } static void run_cmd_as_plugin(const char *file, uchar_t flags) @@ -5391,7 +5392,7 @@ static bool run_plugin(char **path, const char *file, char *runfile, char **last g_state.pluginit = 1; } - setexports(); + setexports(*path); /* Check for run-cmd-as-plugin mode */ if (*file == '!') { @@ -5565,14 +5566,14 @@ static bool prompt_run(void) return ret; } -static bool handle_cmd(enum action sel, char *newpath) +static bool handle_cmd(enum action sel, char *path, char *newpath) { endselection(FALSE); if (sel == SEL_LAUNCH) return launch_app(newpath); - setexports(); + setexports(path); if (sel == SEL_PROMPT) return prompt_run(); @@ -6835,8 +6836,6 @@ begin: setdirwatch(); } - setenv("PWD", path, TRUE); - #ifndef NOX11 xterm_cfg(path); #endif @@ -7969,7 +7968,7 @@ nochange: case SEL_SHELL: // fallthrough case SEL_LAUNCH: // fallthrough case SEL_PROMPT: - r = handle_cmd(sel, newpath); + r = handle_cmd(sel, path, newpath); /* Continue in type-to-nav mode, if enabled */ if (cfg.filtermode)