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) {
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;