Browse Source

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
master
Arun Prakash Jana 5 years ago
parent
commit
e80b9b3c6a
No known key found for this signature in database GPG Key ID: A75979F35C080412
2 changed files with 14 additions and 4 deletions
  1. +3
    -2
      README.md
  2. +11
    -2
      src/nnn.c

+ 3
- 2
README.md View File

@@ -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)


+ 11
- 2
src/nnn.c View File

@@ -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 */


Loading…
Cancel
Save