nnn

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

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:
Msrc/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;