Show directories first

This commit is contained in:
Arun Prakash Jana 2017-04-02 01:48:33 +05:30
parent 0e82544199
commit 951d323616
No known key found for this signature in database
GPG key ID: A75979F35C080412
2 changed files with 17 additions and 4 deletions

View file

@ -54,11 +54,12 @@ I chose to fork because:
- current item in reverse video - current item in reverse video
- number of items in current directory - number of items in current directory
- full name of currently selected file - full name of currently selected file
- Directories first
- Sort numeric names in numeric order
- Case-insensitive alphabetic content listing instead of upper case first - 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) - 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) - Removed navigation restriction with relative paths (and let permissions handle it)
- Sort entries by file size (largest to smallest) - 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`) - Shortcut to invoke file name copier (set using environment variable `NNN_COPIER`)
- File associations - File associations
- Environment variable `NNN_OPENER` to let desktop opener handle it all. E.g.: - Environment variable `NNN_OPENER` to let desktop opener handle it all. E.g.:

18
nnn.c
View file

@ -395,13 +395,25 @@ visible(regex_t *regex, char *file)
static int static int
entrycmp(const void *va, const void *vb) 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) if (mtimeorder)
return ((pEntry)vb)->t - ((pEntry)va)->t; return pb->t - pa->t;
if (sizeorder) 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 static void