]> Sergey Matveev's repositories - nnn.git/commitdiff
Combine cases
authorArun Prakash Jana <engineerarun@gmail.com>
Sat, 19 Jan 2019 15:52:03 +0000 (21:22 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 19 Jan 2019 15:52:03 +0000 (21:22 +0530)
SEL_CDHOME, SEL_CDBEGIN, SEL_CDLAST, SEL_VISIT

src/nnn.c
src/nnn.h

index 65f6c432a7ae413a34ebddbf4900bd146fca8bb6..4c8351c13d468c6b37ce8eb3fc1df2e940362eef 100644 (file)
--- 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);
index 9a2930fb4e03d651124a9676aeb8e31d25c31002..adccfc6be1228d6e2e8116beb893d1ce4619a90e 100644 (file)
--- 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 */