diff options
author | sin <sin@2f30.org> | 2015-01-31 22:02:59 +0000 |
---|---|---|
committer | sin <sin@2f30.org> | 2015-01-31 22:02:59 +0000 |
commit | a63aac0b11c1bc8e54eed95f2fce6fd6dbb41ca8 (patch) | |
tree | 6f22018882a7eba4eae9ae6e4accfb6a552e4903 | |
parent | 6735c1f9796a5d06d39ed78538d64a6ba26008f9 (diff) | |
download | nnn-a63aac0b11c1bc8e54eed95f2fce6fd6dbb41ca8.tar.gz |
Add 't' command to sort output by entry's mtime
-rw-r--r-- | config.def.h | 1 | ||||
-rw-r--r-- | noice.1 | 2 | ||||
-rw-r--r-- | noice.c | 10 |
3 files changed, 13 insertions, 0 deletions
diff --git a/config.def.h b/config.def.h index 996436f..3b12199 100644 --- a/config.def.h +++ b/config.def.h @@ -47,4 +47,5 @@ struct key bindings[] = { { '!', SEL_SH }, /* Change dir */ { 'c', SEL_CD }, + { 't', SEL_MTIME }, }; @@ -47,6 +47,8 @@ Change filter (see below for more information). Enter filter-as-you-type mode. .It Ic c Change into the given directory. +.It Ic t +Sort by time modified. .It Ic ! Spawn shell in current directory. .It Ic q @@ -56,6 +56,7 @@ enum action { SEL_PGUP, SEL_SH, SEL_CD, + SEL_MTIME, }; struct key { @@ -68,8 +69,11 @@ struct key { struct entry { char *name; mode_t mode; + time_t t; }; +int mtimeorder; + /* * Layout: * .--------- @@ -231,6 +235,8 @@ entrycmp(const void *va, const void *vb) a = (struct entry *)va; b = (struct entry *)vb; + if (mtimeorder) + return b->t - a->t; return strcmp(a->name, b->name); } @@ -487,6 +493,7 @@ dentfill(char *path, struct entry **dents, if (r == -1) printerr(1, "lstat"); (*dents)[n].mode = sb.st_mode; + (*dents)[n].t = sb.st_mtime; n++; } @@ -809,6 +816,9 @@ moretyping: filter = xstrdup(ifilter); /* Reset filter */ DPRINTF_S(path); goto out; + case SEL_MTIME: + mtimeorder = !mtimeorder; + goto out; } } |