]> Sergey Matveev's repositories - nnn.git/commitdiff
Incorporate PR #368
authorArun Prakash Jana <engineerarun@gmail.com>
Fri, 8 Nov 2019 13:45:53 +0000 (19:15 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Fri, 8 Nov 2019 13:45:53 +0000 (19:15 +0530)
src/nnn.c

index 9a2f05e390dc043dce466fc03385ab0ea9950122..0fc42f43ff300b846deae3009705fd6c212b5b76 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -3424,7 +3424,7 @@ static bool run_selected_plugin(char **path, const char *file, char *newpath, ch
        if (len > 1) {
                int ctx = g_buf[0] - '0';
 
-               if (ctx == 0) {
+               if (ctx == 0 || ctx == cfg.curctx + 1) {
                        xstrlcpy(*lastdir, *path, PATH_MAX);
                        xstrlcpy(*path, g_buf + 1, PATH_MAX);
                } else if (ctx >= 1 && ctx <= CTX_MAX) {
@@ -4966,18 +4966,20 @@ nochange:
                                        if (tmp[0] == '_' && tmp[1]) {
                                                xstrlcpy(newpath, ++tmp, PATH_MAX);
                                                flag = F_CLI | F_CONFIRM;
-                                               tmp = NULL;
+                                               spawn(newpath, (ndents ? dents[cur].name : NULL),
+                                                     NULL, path, flag);
                                        } else {
-                                               mkpath(plugindir, tmp, newpath);
-                                               tmp = path;
-                                       }
+                                               xstrlcpy(rundir, path, PATH_MAX);
+                                               xstrlcpy(path, plugindir, PATH_MAX);
+                                               if (!run_selected_plugin(&path, tmp, newpath, rundir,
+                                                               (ndents ? dents[cur].name : NULL),
+                                                               &lastname, &lastdir))
+                                                       goto nochange;
 
-                                       spawn(newpath, (ndents ? dents[cur].name : NULL),
-                                             tmp, path, flag);
+                                       }
 
-                                       if (cfg.filtermode)
-                                               presel = FILTER;
-                                       goto nochange;
+                                       setdirwatch();
+                                       goto begin;
                                }
 
                                cfg.runplugin ^= 1;