nnn.c | 10 ++++++++-- diff --git a/nnn.c b/nnn.c index e12e1471fa32ea51ba3e1ccd56820e655254aeaa..fedd65bfb0e74f2eb12dda1a8b89542db8126d96 100644 --- a/nnn.c +++ b/nnn.c @@ -1065,13 +1065,18 @@ char *bin, *dir, *tmp, *run, *env; struct stat sb; regex_t re; int r, fd; + enum action sel = SEL_RUNARG + 1; xstrlcpy(path, ipath, sizeof(path)); xstrlcpy(fltr, ifilter, sizeof(fltr)); oldpath[0] = '\0'; newpath[0] = '\0'; begin: - r = populate(path, oldpath, fltr); + + if (sel == SEL_GOIN && S_ISDIR(sb.st_mode)) + r = populate(path, NULL, fltr); + else + r = populate(path, oldpath, fltr); if (r == -1) { printwarn(); goto nochange; @@ -1080,7 +1085,8 @@ for (;;) { redraw(path); nochange: - switch (nextsel(&run, &env)) { + sel = nextsel(&run, &env); + switch (sel) { case SEL_QUIT: dentfree(dents); return;