aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2018-12-08 11:51:22 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2018-12-08 11:51:22 +0530
commitd029918282d447be435ec17e776ccff797dc4bec (patch)
tree2a6aaa2d681a5c8e927e8ef57684fb28e7d69f14
parent1a29b4ef36e58dc182f8831f3c7b995ca58a7b52 (diff)
downloadnnn-d029918282d447be435ec17e776ccff797dc4bec.tar.gz
Group similar options in browse()
-rw-r--r--src/nnn.c88
-rw-r--r--src/nnn.h4
2 files changed, 39 insertions, 53 deletions
diff --git a/src/nnn.c b/src/nnn.c
index e4ed61c..0591c07 100644
--- 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) {
diff --git a/src/nnn.h b/src/nnn.h
index 3aa1eb4..c0c818b 100644
--- 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 */