aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2019-12-28 11:15:38 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2019-12-28 11:15:38 +0530
commite3e6e1671a294ba7ad46b4ed780fae064e65904a (patch)
treeff50595fd1ab8085ce046afdcb2e1008bfe4689e /src
parentd13fea6fa26ff9e9940cde310a90d21482bcaaa2 (diff)
downloadnnn-e3e6e1671a294ba7ad46b4ed780fae064e65904a.tar.gz
Keybind v for version sort
Diffstat (limited to 'src')
-rw-r--r--src/nnn.c31
-rw-r--r--src/nnn.h3
2 files changed, 22 insertions, 12 deletions
diff --git a/src/nnn.c b/src/nnn.c
index 5ab9393..fc244ae 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -3517,8 +3517,8 @@ static void show_help(const char *path)
"1FILES\n"
"b^O Open with...%-12cn Create new/link\n"
"cD File details%-12cd Detail view toggle\n"
- "ca Sel all%-13c^R F2 Rename/duplicate\n"
- "5Space ^J Sel toggle%-14cr Batch rename\n"
+ "cr Batch rename%-8c^R F2 Rename/duplicate\n"
+ "5Space ^J Sel toggle%-14ca Sel all\n"
"9m ^K Sel range, clear%-8cM List sel\n"
"cP Copy sel here%-11cK Edit sel\n"
"cV Move sel here%-11cw Copy/move sel as\n"
@@ -3526,9 +3526,9 @@ static void show_help(const char *path)
"cf Archive%-14co ^F Archive ops\n"
"ce Edit in EDITOR%-10cp Open in PAGER\n"
"1ORDER TOGGLES\n"
- "cA Apparent du%-13cS du\n"
+ "cS Disk usage%-14cA Apparent du\n"
"cz Size%-20ct Time\n"
- "cE Extension%-1c\n"
+ "cv version%-17cE Extension\n"
"1MISC\n"
"9! ^] Shell%-17c; x Plugin key\n"
"cC Execute file%-9ci ^V Pick plugin\n"
@@ -4237,7 +4237,7 @@ static void redraw(char *path)
}
if (ndents) {
- char sort[] = "\0 ";
+ char sort[] = "\0 \0";
pEntry pent = &dents[cur];
if (cfg.mtimeorder)
@@ -4247,6 +4247,9 @@ static void redraw(char *path)
else if (cfg.extnorder)
sort[0] = 'E';
+ if (cmpfn == &xstrverscasecmp)
+ sort[0] ? (sort[1] = 'V', sort[2] = ' ') : (sort[0] = 'V');
+
/* Get the file extension for regular files */
if (S_ISREG(pent->mode)) {
i = (int)strlen(pent->name);
@@ -4782,7 +4785,8 @@ nochange:
case SEL_ASIZE: // fallthrough
case SEL_BSIZE: // fallthrough
case SEL_EXTN: // fallthrough
- case SEL_MTIME:
+ case SEL_MTIME: // fallthrough
+ case SEL_VERSION:
switch (sel) {
case SEL_MFLTR:
cfg.filtermode ^= 1;
@@ -4844,13 +4848,16 @@ nochange:
cfg.apparentsz = 0;
cfg.blkorder = 0;
break;
- default: /* SEL_MTIME */
+ case SEL_MTIME:
cfg.mtimeorder ^= 1;
cfg.sizeorder = 0;
cfg.apparentsz = 0;
cfg.blkorder = 0;
cfg.extnorder = 0;
break;
+ default: /* SEL_VERSION */
+ cmpfn = (cmpfn == &xstrverscasecmp) ? &xstricmp : &xstrverscasecmp;
+ break;
}
clearfilter();
@@ -5540,8 +5547,8 @@ static void usage(void)
" -s name load session by name\n"
" -S du mode\n"
" -t no dir auto-select\n"
- " -v show version\n"
- " -V version sort\n"
+ " -v version sort\n"
+ " -V show version\n"
" -x notis, sel to system clipboard\n"
" -h show help\n\n"
"v%s\n%s\n", __func__, VERSION, GENERAL_INFO);
@@ -5758,11 +5765,11 @@ int main(int argc, char *argv[])
check_key_collision();
return _SUCCESS;
case 'v':
- fprintf(stdout, "%s\n", VERSION);
- return _SUCCESS;
- case 'V':
cmpfn = &xstrverscasecmp;
break;
+ case 'V':
+ fprintf(stdout, "%s\n", VERSION);
+ return _SUCCESS;
case 'x':
cfg.x11 = 1;
break;
diff --git a/src/nnn.h b/src/nnn.h
index 4db7d95..c8afb96 100644
--- a/src/nnn.h
+++ b/src/nnn.h
@@ -72,6 +72,7 @@ enum action {
SEL_BSIZE, /* block size */
SEL_EXTN, /* order by extension */
SEL_MTIME,
+ SEL_VERSION,
SEL_REDRAW,
SEL_SEL,
SEL_SELMUL,
@@ -194,6 +195,8 @@ static struct key bindings[] = {
{ 'E', SEL_EXTN },
/* Toggle sort by time */
{ 't', SEL_MTIME },
+ /* Toggle version sort */
+ { 'v', SEL_VERSION },
/* Redraw window */
{ CONTROL('L'), SEL_REDRAW },
{ KEY_F(5), SEL_REDRAW },