nnn

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 951d32361699ede7d42f06f72cd3b3813a0be71c
parent 0e82544199866ce217a2a6e8dd50f553fa5cc582
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date:   Sun,  2 Apr 2017 01:48:33 +0530

Show directories first

Diffstat:
MREADME.md | 3++-
Mnnn.c | 18+++++++++++++++---
2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md @@ -54,11 +54,12 @@ I chose to fork because: - current item in reverse video - number of items in current directory - full name of currently selected file + - Directories first + - Sort numeric names in numeric order - Case-insensitive alphabetic content listing instead of upper case first - Roll over at the first and last entries of a directory (with Up/Down keys) - Removed navigation restriction with relative paths (and let permissions handle it) - Sort entries by file size (largest to smallest) - - Sort numeric names in numeric order - Shortcut to invoke file name copier (set using environment variable `NNN_COPIER`) - File associations - Environment variable `NNN_OPENER` to let desktop opener handle it all. E.g.: diff --git a/nnn.c b/nnn.c @@ -395,13 +395,25 @@ visible(regex_t *regex, char *file) static int entrycmp(const void *va, const void *vb) { + static pEntry pa, pb; + + pa = (pEntry)va; + pb = (pEntry)vb; + + /* Sort directories first */ + if (S_ISDIR(pb->mode) && !S_ISDIR(pa->mode)) + return 1; + else if (S_ISDIR(pa->mode) && !S_ISDIR(pb->mode)) + return -1; + + /* Do the actual sorting */ if (mtimeorder) - return ((pEntry)vb)->t - ((pEntry)va)->t; + return pb->t - pa->t; if (sizeorder) - return ((pEntry)vb)->size - ((pEntry)va)->size; + return pb->size - pa->size; - return xstricmp(((pEntry)va)->name, ((pEntry)vb)->name); + return xstricmp(pa->name, pb->name); } static void