]> Sergey Matveev's repositories - nnn.git/commitdiff
Group similar options in browse()
authorArun Prakash Jana <engineerarun@gmail.com>
Sat, 8 Dec 2018 06:21:22 +0000 (11:51 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 8 Dec 2018 06:21:22 +0000 (11:51 +0530)
src/nnn.c
src/nnn.h

index e4ed61c589e94a35b48d57e9f8073703a25118cb..0591c07b4babf0da67a2062fc05fcfc548fd0392 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -2017,13 +2017,13 @@ static bool handle_archive(char *fpath, char *arg, char *dir)
  * the binary size by around a hundred bytes. This would only
  * have increased as we keep adding new options.
  */
-static int show_help(char *path)
+static bool show_help(char *path)
 {
        if (g_tmpfpath[0])
                xstrlcpy(g_tmpfpath + g_tmpfplen - 1, "/.nnnXXXXXX", HOME_LEN_MAX - g_tmpfplen);
        else {
                printmsg(messages[STR_NOHOME_ID]);
-               return -1;
+               return FALSE;
        }
 
        int i = 0, fd = mkstemp(g_tmpfpath);
@@ -2062,7 +2062,7 @@ static int show_help(char *path)
              "eR  Run custom script     L  Lock terminal\n"};
 
        if (fd == -1)
-               return -1;
+               return FALSE;
 
        start = end = helpstr;
        while (*end) {
@@ -2134,7 +2134,7 @@ static int show_help(char *path)
        get_output(NULL, 0, "cat", g_tmpfpath, NULL, TRUE);
        unlink(g_tmpfpath);
        refresh();
-       return 0;
+       return TRUE;
 }
 
 static int sum_bsizes(const char *fpath, const struct stat *sb,
@@ -2933,17 +2933,19 @@ nochange:
                                goto nochange;
                        }
                        break;
-               case SEL_LIST: // fallthrough
-               case SEL_EXTRACT: // fallthrough
                case SEL_MEDIA: // fallthrough
                case SEL_FMEDIA: // fallthrough
+               case SEL_ARCHIVELS: // fallthrough
+               case SEL_EXTRACT: // fallthrough
+               case SEL_RENAMEALL: // fallthrough
                case SEL_RUNEDIT: // fallthrough
-               case SEL_RUNPAGE: // fallthrough
+               case SEL_RUNPAGE:
+                       if (!ndents)
+                               break; // fallthrough
+               case SEL_REDRAW: // fallthrough
+               case SEL_HELP: // fallthrough
                case SEL_LOCK:
                {
-                       if (!ndents)
-                               break;
-
                        mkpath(path, dents[cur].name, newpath, PATH_MAX);
 
                        switch(sel) {
@@ -2953,12 +2955,23 @@ nochange:
                        case SEL_FMEDIA:
                                r = show_mediainfo(newpath, "-f");
                                break;
-                       case SEL_LIST:
+                       case SEL_ARCHIVELS:
                                r = handle_archive(newpath, "-l", path);
                                break;
                        case SEL_EXTRACT:
                                r = handle_archive(newpath, "-x", path);
                                break;
+                       case SEL_REDRAW:
+                               if (ndents)
+                                       copycurname();
+                               goto begin;
+                       case SEL_RENAMEALL:
+                               if ((r = getutil(utils[VIDIR])))
+                                       spawn(utils[VIDIR], ".", NULL, path, F_NORMAL);
+                               break;
+                       case SEL_HELP:
+                               r = show_help(path);
+                               break;
                        case SEL_RUNEDIT:
                                r = TRUE;
                                spawn(editor, editor_arg, dents[cur].name, path, F_NORMAL);
@@ -2971,29 +2984,26 @@ nochange:
                                r = TRUE;
                                spawn(utils[LOCKER], NULL, NULL, NULL, F_NORMAL | F_SIGINT);
                                break;
-                       default:
-                               r = TRUE;
-                               break;
+                       default: /* unreachable */
+                               goto nochange;
                        }
 
-                       if (r == FALSE) {
-                               printmsg("utility missing");
+                       if (!r) {
+                               printmsg("required utility missing");
                                goto nochange;
                        }
 
-                       /* In case of successful archive extract, reload contents */
-                       if (sel == SEL_EXTRACT) {
-                               /* Continue in navigate-as-you-type mode, if enabled */
-                               if (cfg.filtermode)
-                                       presel = FILTER;
+                       /* In case of successful operation, reload contents */
 
-                               /* Save current */
-                               copycurname();
+                       /* Continue in navigate-as-you-type mode, if enabled */
+                       if (cfg.filtermode)
+                               presel = FILTER;
 
-                               /* Repopulate as directory content may have changed */
-                               goto begin;
-                       }
-                       break;
+                       /* Save current */
+                       copycurname();
+
+                       /* Repopulate as directory content may have changed */
+                       goto begin;
                }
                case SEL_FSIZE:
                        cfg.sizeorder ^= 1;
@@ -3043,11 +3053,6 @@ nochange:
                        if (ndents)
                                copycurname();
                        goto begin;
-               case SEL_REDRAW:
-                       /* Save current */
-                       if (ndents)
-                               copycurname();
-                       goto begin;
                case SEL_COPY:
                        if (!ndents)
                                goto nochange;
@@ -3374,25 +3379,6 @@ nochange:
                        close(fd);
                        xstrlcpy(lastname, tmp, NAME_MAX + 1);
                        goto begin;
-               case SEL_RENAMEALL:
-                       if (!getutil(utils[VIDIR])) {
-                               printmsg("utility missing");
-                               goto nochange;
-                       }
-
-                       spawn(utils[VIDIR], ".", NULL, path, F_NORMAL);
-
-                       /* Save current */
-                       if (ndents)
-                               copycurname();
-                       goto begin;
-               case SEL_HELP:
-                       show_help(path);
-
-                       /* Continue in navigate-as-you-type mode, if enabled */
-                       if (cfg.filtermode)
-                               presel = FILTER;
-                       break;
                case SEL_RUN: // fallthrough
                case SEL_RUNSCRIPT:
                        if (sel == SEL_RUNSCRIPT) {
index 3aa1eb427c9619c08f97b45a7bee1323e043d7e8..c0c818b1b2d74101e4171a646cf3c10e756ec3bc 100644 (file)
--- a/src/nnn.h
+++ b/src/nnn.h
@@ -61,7 +61,7 @@ enum action {
        SEL_FMEDIA,
        SEL_LAUNCH,
        SEL_ARCHIVE,
-       SEL_LIST,
+       SEL_ARCHIVELS,
        SEL_EXTRACT,
        SEL_FSIZE,  /* file size */
        SEL_ASIZE,  /* apparent size */
@@ -170,7 +170,7 @@ static struct key bindings[] = {
        /* Create archive */
        { 'f',            SEL_ARCHIVE },
        /* List archive */
-       { 'F',            SEL_LIST },
+       { 'F',            SEL_ARCHIVELS },
        /* Extract archive */
        { CONTROL('F'),   SEL_EXTRACT },
        /* Toggle sort by size */