From e80b9b3c6a2a91165ba77972452dca9de752d3c6 Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Sat, 28 Sep 2019 15:18:09 +0530 Subject: [PATCH] Export current entry name as NN The current file or dir name is exported in env var NN before running a cmd at the command prompt or spawning a shell. Export current file name as NCUR --- README.md | 5 +++-- src/nnn.c | 13 +++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 397cdeee..80037e76 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ ## Index - [Introduction](#introduction) +- [Wiki, resources](#wiki-resources) - [Features](#features) - [Quickstart](#quickstart) - [Installation](#installation) @@ -49,9 +50,9 @@ If you prefer a lightweight system or productivity-boosting utilities, `nnn` is It runs smoothly on the Raspberry Pi, Termux on Android, Linux, macOS, BSD, Cygwin and Linux subsystem for Windows. `nnn` works seamlessly with DEs and GUI utilities. -#### Important links +## Wiki, resources -1. [Wiki](https://github.com/jarun/nnn/wiki): operational concepts, how tos, use cases, chronology and insights +1. [Wiki](https://github.com/jarun/nnn/wiki) (concepts, how-tos, use cases, chronology and insights) 2. [Performance numbers](https://github.com/jarun/nnn/wiki/Performance) 3. [Plugin repository and docs](https://github.com/jarun/nnn/tree/master/plugins) 4. [(neo)vim plugin](https://github.com/mcchrish/nnn.vim) diff --git a/src/nnn.c b/src/nnn.c index 4e5ed592..17eec56a 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -421,12 +421,14 @@ static const char * const env_cfg[] = { #define VISUAL 1 #define EDITOR 2 #define PAGER 3 +#define NCUR 4 static const char * const envs[] = { "SHELL", "VISUAL", "EDITOR", "PAGER", + "NN", }; /* Event handling */ @@ -1113,6 +1115,12 @@ static int spawn(char *file, char *arg1, char *arg2, const char *dir, uchar flag return retstatus; } +static void prompt_run(char *cmd, const char *cur, const char *path) +{ + setenv(envs[NCUR], cur, 1); + spawn(shell, "-c", cmd, path, F_CLI | F_CMD); +} + /* Get program name from env var, else return fallback program */ static char *xgetenv(const char *name, char *fallback) { @@ -1739,7 +1747,7 @@ static int filterentries(char *path) /* If there's a filter, try a command on ^P */ if (cfg.filtercmd && *ch == CONTROL('P') && len > 1) { - spawn(shell, "-c", pln, path, F_CLI | F_CMD); + prompt_run(pln, (ndents ? dents[cur].name : ""), path); continue; } @@ -4407,6 +4415,7 @@ nochange: goto nochange; break; case SEL_SHELL: + setenv(envs[NCUR], (ndents ? dents[cur].name : ""), 1); spawn(shell, NULL, NULL, path, F_CLI); break; case SEL_PLUGKEY: // fallthrough @@ -4490,7 +4499,7 @@ nochange: } #endif if (tmp && tmp[0]) // NOLINT - spawn(shell, "-c", tmp, path, F_CLI | F_CMD); + prompt_run(tmp, (ndents ? dents[cur].name : ""), path); } /* Continue in navigate-as-you-type mode, if enabled */