Browse Source

Mechanism to skip dir refresh after running plugin

master
Arun Prakash Jana 5 years ago
parent
commit
f25f062537
No known key found for this signature in database GPG Key ID: A75979F35C080412
2 changed files with 20 additions and 0 deletions
  1. +9
    -0
      plugins/README.md
  2. +11
    -0
      src/nnn.c

+ 9
- 0
plugins/README.md View File

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



+ 11
- 0
src/nnn.c View File

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


Loading…
Cancel
Save