commit bdbd182c65cee58c2d09374a93a9ca3425e4ab7b
parent cffcd655e955767b069266a9ee32e32f534da665
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date: Mon, 1 Nov 2021 12:54:47 +0530
Handle plugin selection early
Diffstat:
| M | src/nnn.c | | | 59 | ++++++++++++++++++++++++++++++----------------------------- |
1 file changed, 30 insertions(+), 29 deletions(-)
diff --git a/src/nnn.c b/src/nnn.c
@@ -6896,6 +6896,36 @@ nochange:
printwait(messages[MSG_UNSUPPORTED], &presel);
goto nochange;
}
+
+ /* Handle plugin selection mode */
+ if (g_state.runplugin) {
+ g_state.runplugin = 0;
+ /* Must be in plugin dir and same context to select plugin */
+ if ((g_state.runctx == cfg.curctx) && !strcmp(path, plgpath)) {
+ endselection(FALSE);
+ /* Copy path so we can return back to earlier dir */
+ xstrsncpy(path, rundir, PATH_MAX);
+ rundir[0] = '\0';
+ clearfilter();
+
+ if (chdir(path) == -1
+ || !run_plugin(&path, pent->name,
+ runfile, &lastname, &lastdir)) {
+ DPRINTF_S("plugin failed!");
+ }
+
+ if (g_state.picked)
+ return EXIT_SUCCESS;
+
+ if (runfile[0]) {
+ xstrsncpy(lastname, runfile, NAME_MAX + 1);
+ runfile[0] = '\0';
+ }
+ setdirwatch();
+ goto begin;
+ }
+ }
+
#ifndef NOFIFO
if (g_state.fifomode && (sel == SEL_OPEN)) {
send_to_explorer(&presel); /* Write selection to explorer fifo */
@@ -6936,35 +6966,6 @@ nochange:
goto nochange;
}
- /* Handle plugin selection mode */
- if (g_state.runplugin) {
- g_state.runplugin = 0;
- /* Must be in plugin dir and same context to select plugin */
- if ((g_state.runctx == cfg.curctx) && !strcmp(path, plgpath)) {
- endselection(FALSE);
- /* Copy path so we can return back to earlier dir */
- xstrsncpy(path, rundir, PATH_MAX);
- rundir[0] = '\0';
- clearfilter();
-
- if (chdir(path) == -1
- || !run_plugin(&path, pent->name,
- runfile, &lastname, &lastdir)) {
- DPRINTF_S("plugin failed!");
- }
-
- if (g_state.picked)
- return EXIT_SUCCESS;
-
- if (runfile[0]) {
- xstrsncpy(lastname, runfile, NAME_MAX + 1);
- runfile[0] = '\0';
- }
- setdirwatch();
- goto begin;
- }
- }
-
if (!sb.st_size) {
printwait(messages[MSG_EMPTY_FILE], &presel);
goto nochange;