nnn

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit f25f0625376657956607d6b0e3392a648a86179e
parent 7d171368ad1059e9112d2542c70de0405fb2e6f1
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date:   Fri, 20 Dec 2019 11:53:42 +0530

Mechanism to skip dir refresh after running plugin

Diffstat:
Mplugins/README.md | 9+++++++++
Msrc/nnn.c | 11+++++++++++
2 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/plugins/README.md b/plugins/README.md @@ -77,6 +77,14 @@ Now plugin `fzopen` can be run with the keybind <kbd>;o</kbd>, `mocplay` can be **Method 2:** Use the _pick plugin_ shortcut to visit the plugin directory and execute a plugin. Repeating the same shortcut cancels the operation and puts you back in the original directory. +#### Skip directory refresh after running a plugin + +`nnn` refreshes a directory after running a plugin by key (Method 1 above) to reflect any chanegs in the directory by the plugin. However, there are scenarios where this isn't desired, say while running the `mediainfo` plugin on some filtered files. To achive this, add a `-` before the plugin name, e.g.: + + export NNN_PLUG='o:fzopen;m:-mediainfo;p:mocplay; + +Now `nnn` will not refresh the directory after running the `mediainfo` plugin. + ## Running commands as plugin To assign keys to arbitrary non-background cli commands (non-shell-interpreted) and invoke like plugins, add `_` (underscore) before the command. @@ -98,6 +106,7 @@ Notes: 1. Use single quotes for `$NNN_PLUG` so `$nnn` is not interpreted 2. `$nnn` should be the last argument (IF you want to pass the hovered file name) 3. (_Again_) add `_` before the command +4. To disable directory refresh after running a command as plugin prefix the command with `-_` ## Access level of plugins diff --git a/src/nnn.c b/src/nnn.c @@ -5259,6 +5259,12 @@ nochange: goto nochange; } + if (tmp[0] == '-' && tmp[1]) { + ++tmp; + r = FALSE; /* Do not refresh dir after completion */ + } else + r = TRUE; + if (!run_selected_plugin(&path, tmp, newpath, (ndents ? dents[cur].name : NULL), &lastname, &lastdir)) { @@ -5266,6 +5272,11 @@ nochange: goto nochange; } + if (!r) { + clearprompt(); + goto nochange; + } + if (ndents) copycurname(); } else {