diff --git a/src/nnn.c b/src/nnn.c index 07863d53..7890a24f 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -2806,11 +2806,12 @@ nochange: DPRINTF_S(path); setdirwatch(); goto begin; - case SEL_LEADER: - fd = get_input(NULL); // fallthrough + case SEL_LEADER: // fallthrough case SEL_CYCLE: if (sel == SEL_CYCLE) fd = '>'; + else + fd = get_input(NULL); switch (fd) { case 'q': // fallthrough @@ -2996,12 +2997,10 @@ nochange: r = TRUE; spawn(pager, pager_arg, dents[cur].name, path, F_NORMAL); break; - case SEL_LOCK: + default: /* SEL_LOCK */ r = TRUE; spawn(utils[LOCKER], NULL, NULL, NULL, F_NORMAL | F_SIGINT); break; - default: /* unreachable */ - goto nochange; } if (!r) { @@ -3246,21 +3245,21 @@ nochange: char *ptr = NULL, *ptr1 = NULL, *ptr2 = NULL; switch (sel) { - case SEL_OPEN: - tmp = xreadline(NULL, "open with: "); - break; - case SEL_RENAME: - tmp = xreadline(dents[cur].name, ""); - break; case SEL_LAUNCH: tmp = xreadline(NULL, "launch: "); break; case SEL_ARCHIVE: tmp = xreadline(dents[cur].name, "name: "); break; - default: + case SEL_OPEN: + tmp = xreadline(NULL, "open with: "); + break; + case SEL_NEW: tmp = xreadline(NULL, "name: "); break; + default: /* SEL_RENAME */ + tmp = xreadline(dents[cur].name, ""); + break; } if (tmp == NULL || tmp[0] == '\0') @@ -3280,16 +3279,6 @@ nochange: } switch (sel) { - case SEL_OPEN: - getprogarg(tmp, &ptr); - mkpath(path, dents[cur].name, newpath, PATH_MAX); - spawn(tmp, ptr, newpath, path, r); - break; - case SEL_RENAME: - /* Skip renaming to same name */ - if (strcmp(tmp, dents[cur].name) == 0) - goto nochange; - break; case SEL_LAUNCH: { uint args = 0; @@ -3323,6 +3312,16 @@ nochange: spawn(utils[APACK], tmp, dents[cur].name, path, F_NORMAL); break; + case SEL_OPEN: + getprogarg(tmp, &ptr); + mkpath(path, dents[cur].name, newpath, PATH_MAX); + spawn(tmp, ptr, newpath, path, r); + break; + case SEL_RENAME: + /* Skip renaming to same name */ + if (strcmp(tmp, dents[cur].name) == 0) + goto nochange; + break; default: break; } @@ -3436,12 +3435,12 @@ nochange: if (S_ISDIR(sb.st_mode)) { cfg.runscript ^= 1; if (!cfg.runscript && rundir[0]) { - /* If toggled, switch to original directory */ + /* If toggled, and still in the script dir, + switch to original directory */ if (strcmp(path, runpath) == 0) { xstrlcpy(path, rundir, PATH_MAX); xstrlcpy(lastname, runfile, NAME_MAX); - rundir[0] = '\0'; - runfile[0] = '\0'; + rundir[0] = runfile[0] = '\0'; setdirwatch(); goto begin; }