From c400a19268228d1d09cb933de2ed831b3fb6e80b Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Sat, 19 Jan 2019 21:22:03 +0530 Subject: [PATCH] Combine cases SEL_CDHOME, SEL_CDBEGIN, SEL_CDLAST, SEL_VISIT --- src/nnn.c | 46 ++++++++++++++++------------------------------ src/nnn.h | 6 +++--- 2 files changed, 19 insertions(+), 33 deletions(-) diff --git a/src/nnn.c b/src/nnn.c index 65f6c432..4c8351c1 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -2826,14 +2826,21 @@ nochange: cur = ndents - 1; break; case SEL_CDHOME: - dir = getenv("HOME"); - if (dir == NULL) { - clearprompt(); - goto nochange; - } // fallthrough + dir = xgetenv("HOME", path); // fallthrough case SEL_CDBEGIN: if (sel == SEL_CDBEGIN) - dir = ipath; + dir = ipath; // fallthrough + case SEL_CDLAST: + if (sel == SEL_CDLAST) + dir = lastdir; // fallthrough + case SEL_VISIT: + if (sel == SEL_VISIT) + dir = mark; + + if (dir[0] == '\0') { + printmsg("not set"); + goto nochange; + } if (!xdiraccess(dir)) goto nochange; @@ -2841,33 +2848,12 @@ nochange: if (strcmp(path, dir) == 0) break; + /* SEL_CDLAST: dir pointing to lastdir */ + xstrlcpy(newpath, dir, PATH_MAX); + /* Save last working directory */ xstrlcpy(lastdir, path, PATH_MAX); - xstrlcpy(path, dir, PATH_MAX); - lastname[0] = '\0'; - DPRINTF_S(path); - setdirwatch(); - goto begin; - case SEL_CDLAST: // fallthrough - case SEL_VISIT: - if (sel == SEL_VISIT) { - if (strcmp(mark, path) == 0) - break; - tmp = mark; - } else - tmp = lastdir; - - if (tmp[0] == '\0') { - printmsg("not set"); - goto nochange; - } - - if (!xdiraccess(tmp)) - goto nochange; - - xstrlcpy(newpath, tmp, PATH_MAX); - xstrlcpy(lastdir, path, PATH_MAX); xstrlcpy(path, newpath, PATH_MAX); lastname[0] = '\0'; DPRINTF_S(path); diff --git a/src/nnn.h b/src/nnn.h index 9a2930fb..adccfc6b 100644 --- a/src/nnn.h +++ b/src/nnn.h @@ -48,6 +48,7 @@ enum action { SEL_CDHOME, SEL_CDBEGIN, SEL_CDLAST, + SEL_VISIT, SEL_LEADER, SEL_CYCLE, SEL_CTX1, @@ -55,7 +56,6 @@ enum action { SEL_CTX3, SEL_CTX4, SEL_PIN, - SEL_VISIT, SEL_FLTR, SEL_MFLTR, SEL_TOGGLEDOT, @@ -141,6 +141,8 @@ static struct key bindings[] = { { '&', SEL_CDBEGIN }, /* Last visited dir */ { '-', SEL_CDLAST }, + /* Visit marked directory */ + { CONTROL('W'), SEL_VISIT }, /* Leader key */ { CONTROL('_'), SEL_LEADER }, { '`', SEL_LEADER }, @@ -154,8 +156,6 @@ static struct key bindings[] = { { '4', SEL_CTX4 }, /* Mark a path to visit later */ { 'b', SEL_PIN }, - /* Visit marked directory */ - { CONTROL('W'), SEL_VISIT }, /* Filter */ { '/', SEL_FLTR }, /* Toggle filter mode */