mirror of
https://github.com/jarun/nnn.git
synced 2025-01-24 01:36:53 +00:00
Fix build break
This commit is contained in:
parent
742759f32d
commit
c974690482
|
@ -206,6 +206,7 @@ When `nnn` executes a plugin, it does the following:
|
||||||
2. `$2`: The working directory (might differ from `$PWD` in case of symlinked paths; non-canonical).
|
2. `$2`: The working directory (might differ from `$PWD` in case of symlinked paths; non-canonical).
|
||||||
3. `$3`: The picker mode output file (`-` for stdout) if `nnn` is executed as a file picker.
|
3. `$3`: The picker mode output file (`-` for stdout) if `nnn` is executed as a file picker.
|
||||||
- Sets the environment variable `NNN_PIPE` used to control `nnn` active directory.
|
- Sets the environment variable `NNN_PIPE` used to control `nnn` active directory.
|
||||||
|
- Exports the [special variables](https://github.com/jarun/nnn/wiki/Concepts#special-variables).
|
||||||
|
|
||||||
Plugins can also read the `.selection` file in the config directory.
|
Plugins can also read the `.selection` file in the config directory.
|
||||||
|
|
||||||
|
|
56
src/nnn.c
56
src/nnn.c
|
@ -5051,6 +5051,30 @@ static void show_help(const char *path)
|
||||||
unlink(g_tmpfpath);
|
unlink(g_tmpfpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void setexports(void)
|
||||||
|
{
|
||||||
|
char dvar[] = "d0";
|
||||||
|
char fvar[] = "f0";
|
||||||
|
|
||||||
|
if (ndents) {
|
||||||
|
setenv(envs[ENV_NCUR], pdents[cur].name, 1);
|
||||||
|
xstrsncpy(g_ctx[cfg.curctx].c_name, pdents[cur].name, NAME_MAX + 1);
|
||||||
|
} else if (g_ctx[cfg.curctx].c_name[0])
|
||||||
|
g_ctx[cfg.curctx].c_name[0] = '\0';
|
||||||
|
|
||||||
|
for (uchar_t i = 0; i < CTX_MAX; ++i) {
|
||||||
|
if (g_ctx[i].c_cfg.ctxactive) {
|
||||||
|
dvar[1] = fvar[1] = '1' + i;
|
||||||
|
setenv(dvar, g_ctx[i].c_path, 1);
|
||||||
|
|
||||||
|
if (g_ctx[i].c_name[0]) {
|
||||||
|
mkpath(g_ctx[i].c_path, g_ctx[i].c_name, g_buf);
|
||||||
|
setenv(fvar, g_buf, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static bool run_cmd_as_plugin(const char *file, char *runfile, uchar_t flags)
|
static bool run_cmd_as_plugin(const char *file, char *runfile, uchar_t flags)
|
||||||
{
|
{
|
||||||
size_t len;
|
size_t len;
|
||||||
|
@ -5186,6 +5210,8 @@ static bool run_plugin(char **path, const char *file, char *runfile, char **last
|
||||||
g_state.pluginit = 1;
|
g_state.pluginit = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setexports();
|
||||||
|
|
||||||
/* Check for run-cmd-as-plugin mode */
|
/* Check for run-cmd-as-plugin mode */
|
||||||
if (*file == '!') {
|
if (*file == '!') {
|
||||||
flags = F_MULTI | F_CONFIRM;
|
flags = F_MULTI | F_CONFIRM;
|
||||||
|
@ -5310,30 +5336,6 @@ static bool prompt_run(void)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setexports(char *buf)
|
|
||||||
{
|
|
||||||
char dvar[] = "d0";
|
|
||||||
char fvar[] = "f0";
|
|
||||||
|
|
||||||
if (ndents) {
|
|
||||||
setenv(envs[ENV_NCUR], pdents[cur].name, 1);
|
|
||||||
xstrsncpy(g_ctx[cfg.curctx].c_name, pdents[cur].name, NAME_MAX + 1);
|
|
||||||
} else if (g_ctx[cfg.curctx].c_name[0])
|
|
||||||
g_ctx[cfg.curctx].c_name[0] = '\0';
|
|
||||||
|
|
||||||
for (uchar_t i = 0; i < CTX_MAX; ++i) {
|
|
||||||
if (g_ctx[i].c_cfg.ctxactive) {
|
|
||||||
dvar[1] = fvar[1] = '1' + i;
|
|
||||||
setenv(dvar, g_ctx[i].c_path, 1);
|
|
||||||
|
|
||||||
if (g_ctx[i].c_name[0]) {
|
|
||||||
mkpath(g_ctx[i].c_path, g_ctx[i].c_name, buf);
|
|
||||||
setenv(fvar, buf, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool handle_cmd(enum action sel, char *newpath)
|
static bool handle_cmd(enum action sel, char *newpath)
|
||||||
{
|
{
|
||||||
endselection(FALSE);
|
endselection(FALSE);
|
||||||
|
@ -5341,7 +5343,7 @@ static bool handle_cmd(enum action sel, char *newpath)
|
||||||
if (sel == SEL_LAUNCH)
|
if (sel == SEL_LAUNCH)
|
||||||
return launch_app(newpath);
|
return launch_app(newpath);
|
||||||
|
|
||||||
setexports(newpath);
|
setexports();
|
||||||
|
|
||||||
if (sel == SEL_PROMPT)
|
if (sel == SEL_PROMPT)
|
||||||
return prompt_run();
|
return prompt_run();
|
||||||
|
@ -6800,8 +6802,6 @@ nochange:
|
||||||
rundir[0] = '\0';
|
rundir[0] = '\0';
|
||||||
clearfilter();
|
clearfilter();
|
||||||
|
|
||||||
setexports(newpath);
|
|
||||||
|
|
||||||
if (chdir(path) == -1
|
if (chdir(path) == -1
|
||||||
|| !run_plugin(&path, pent->name,
|
|| !run_plugin(&path, pent->name,
|
||||||
runfile, &lastname, &lastdir)) {
|
runfile, &lastname, &lastdir)) {
|
||||||
|
@ -7536,8 +7536,6 @@ nochange:
|
||||||
} else
|
} else
|
||||||
r = TRUE;
|
r = TRUE;
|
||||||
|
|
||||||
setexports(newpath);
|
|
||||||
|
|
||||||
if (!run_plugin(&path, tmp, (ndents ? pdents[cur].name : NULL),
|
if (!run_plugin(&path, tmp, (ndents ? pdents[cur].name : NULL),
|
||||||
&lastname, &lastdir)) {
|
&lastname, &lastdir)) {
|
||||||
printwait(messages[MSG_FAILED], &presel);
|
printwait(messages[MSG_FAILED], &presel);
|
||||||
|
|
Loading…
Reference in a new issue