2014-11-08 10:31:40 (UTC-02:00)
Marcel Rodrigues <marcelgmr@gmail.com>
Select last visited directory when going up.
diff --git a/rover.c b/rover.c index 27c3193..7ae8a27 100644 --- a/rover.c +++ b/rover.c @@ -282,11 +282,31 @@ main() cd(); } else if (!strcmp(key, RVK_CD_UP)) { + char *dirname, first; if (strlen(rover.cwd) == 1) continue; rover.cwd[strlen(rover.cwd) - 1] = '\0'; - *(strrchr(rover.cwd, '/') + 1) = '\0'; + dirname = strrchr(rover.cwd, '/') + 1; + first = dirname[0]; + dirname[0] = '\0'; cd(); + if ((rover.flags & SHOW_DIRS) && + ((rover.flags & SHOW_HIDDEN) || (first != '.')) + ) { + dirname[0] = first; + dirname[strlen(dirname)] = '/'; + while (strcmp(rover.fnames[rover.fsel], dirname)) + rover.fsel++; + if (rover.nfiles > HEIGHT) { + rover.scroll = rover.fsel - (HEIGHT >> 1); + if (rover.scroll < 0) + rover.scroll = 0; + if (rover.scroll > rover.nfiles - HEIGHT) + rover.scroll = rover.nfiles - HEIGHT; + } + dirname[0] = '\0'; + update_browser(); + } } else if (!strcmp(key, RVK_HOME)) { strcpy(rover.cwd, getenv("HOME"));