]> Sergey Matveev's repositories - nnn.git/commitdiff
Export current entry name as NN
authorArun Prakash Jana <engineerarun@gmail.com>
Sat, 28 Sep 2019 09:48:09 +0000 (15:18 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 28 Sep 2019 11:03:22 +0000 (16:33 +0530)
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
src/nnn.c

index 397cdeee9dbfc4a6e4bab42ac457a55e607dbfae..80037e768057464e41b7e3c0f89abee5927936a8 100644 (file)
--- 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)
index 4e5ed5925787caec37641b9e7338df03853c69fc..17eec56a0ed3489e75a9c5ce64a16507f3d9108f 100644 (file)
--- 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 */