From: Arun Prakash Jana Date: Mon, 1 Nov 2021 07:24:47 +0000 (+0530) Subject: Handle plugin selection early X-Git-Tag: v4.4~23 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=bdbd182c65cee58c2d09374a93a9ca3425e4ab7b;p=nnn.git Handle plugin selection early --- diff --git a/src/nnn.c b/src/nnn.c index 97177537..020cba43 100644 --- 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;