mirror of
https://github.com/jarun/nnn.git
synced 2024-11-28 05:41:31 +00:00
Simpler regular listing
This commit is contained in:
parent
5c7aaa6d0d
commit
98e3f22cb4
|
@ -44,7 +44,7 @@ I chose to fork noice because:
|
|||
### Fork toppings
|
||||
|
||||
- Behaviour and navigation
|
||||
- Optional detailed view with file type and size (default: disabled)
|
||||
- Optional detail view with file type and size (default: disabled)
|
||||
- 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)
|
||||
- Sort entries by file size (largest to smallest)
|
||||
|
@ -98,7 +98,7 @@ Start noice (default: current directory):
|
|||
| `~` | jump to home dir |
|
||||
| `/`, `&` | filter dir contents |
|
||||
| `c` | show change dir prompt |
|
||||
| 'd' | toggle detail view |
|
||||
| `d` | toggle detail view |
|
||||
| `.` | toggle hide dot files |
|
||||
| `s` | toggle sort by file size |
|
||||
| `t` | toggle sort by modified time |
|
||||
|
|
48
noice.c
48
noice.c
|
@ -420,38 +420,18 @@ mkpath(char *dir, char *name, char *out, size_t n)
|
|||
void
|
||||
printent(struct entry *ent, int active)
|
||||
{
|
||||
char name[PATH_MAX];
|
||||
unsigned int maxlen = COLS - strlen(CURSR) - 1;
|
||||
char cm = 0;
|
||||
|
||||
/* Copy name locally */
|
||||
strlcpy(name, ent->name, sizeof(name));
|
||||
|
||||
if (S_ISDIR(ent->mode)) {
|
||||
cm = '/';
|
||||
maxlen--;
|
||||
} else if (S_ISLNK(ent->mode)) {
|
||||
cm = '@';
|
||||
maxlen--;
|
||||
} else if (S_ISSOCK(ent->mode)) {
|
||||
cm = '=';
|
||||
maxlen--;
|
||||
} else if (S_ISFIFO(ent->mode)) {
|
||||
cm = '|';
|
||||
maxlen--;
|
||||
} else if (ent->mode & S_IXUSR) {
|
||||
cm = '*';
|
||||
maxlen--;
|
||||
}
|
||||
|
||||
/* No text wrapping in entries */
|
||||
if (strlen(name) > maxlen)
|
||||
name[maxlen] = '\0';
|
||||
|
||||
if (cm == 0)
|
||||
printw("%s%s\n", active ? CURSR : EMPTY, name);
|
||||
if (S_ISDIR(ent->mode))
|
||||
printw("%s%s/\n", active ? CURSR : EMPTY, ent->name);
|
||||
else if (S_ISLNK(ent->mode))
|
||||
printw("%s%s@\n", active ? CURSR : EMPTY, ent->name);
|
||||
else if (S_ISSOCK(ent->mode))
|
||||
printw("%s%s=\n", active ? CURSR : EMPTY, ent->name);
|
||||
else if (S_ISFIFO(ent->mode))
|
||||
printw("%s%s|\n", active ? CURSR : EMPTY, ent->name);
|
||||
else if (ent->mode & S_IXUSR)
|
||||
printw("%s%s*\n", active ? CURSR : EMPTY, ent->name);
|
||||
else
|
||||
printw("%s%s%c\n", active ? CURSR : EMPTY, name, cm);
|
||||
printw("%s%s\n", active ? CURSR : EMPTY, ent->name);
|
||||
}
|
||||
|
||||
char*
|
||||
|
@ -485,9 +465,11 @@ printent_long(struct entry *ent, int active)
|
|||
else if (S_ISCHR(ent->mode))
|
||||
printw("%s%-32.32s C\n", active ? CURSR : EMPTY, ent->name);
|
||||
else if (ent->mode & S_IXUSR)
|
||||
printw("%s%-32.32s E %s\n", active ? CURSR : EMPTY, ent->name, coolsize(ent->size));
|
||||
printw("%s%-32.32s E %s\n", active ? CURSR : EMPTY, ent->name,
|
||||
coolsize(ent->size));
|
||||
else
|
||||
printw("%s%-32.32s R %s\n", active ? CURSR : EMPTY, ent->name, coolsize(ent->size));
|
||||
printw("%s%-32.32s R %s\n", active ? CURSR : EMPTY, ent->name,
|
||||
coolsize(ent->size));
|
||||
}
|
||||
|
||||
int
|
||||
|
|
Loading…
Reference in a new issue