diff options
| author | 2017-03-30 10:44:26 +0530 | |
|---|---|---|
| committer | 2017-03-30 10:47:06 +0530 | |
| commit | 055439f23e35627a37eda910ec656dab1ab079d8 (patch) | |
| tree | 11d8fe4e38d55f00161fc6a90a6d277ca65648e6 | |
| parent | 187835c2bb28d1a065a5a8ca13eaf72423fd9e23 (diff) | |
| download | nnn-055439f23e35627a37eda910ec656dab1ab079d8.tar.gz | |
Use reverse video in detail view
1. Highlight the currently selected item in reverse video.
2. Fix: remember the current item when toggling detail view.
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | noice.c | 28 |
2 files changed, 20 insertions, 9 deletions
@@ -49,6 +49,7 @@ I chose to fork noice because: - modification time - human-readable file size - number of entries in current directory + - current item in reverse video - 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) @@ -42,6 +42,7 @@ #define TOUPPER(ch) \ (((ch) >= 'a' && (ch) <= 'z') ? ((ch) - 'a' + 'A') : (ch)) #define MAX_LEN 1024 +#define cur(flag) (flag ? CURSR : EMPTY) struct assoc { char *regex; /* Regex to match on filename */ @@ -454,29 +455,35 @@ void printent_long(struct entry *ent, int active) { static char buf[18]; - static struct tm *p; + const static struct tm *p; p = localtime(&ent->t); strftime(buf, 18, "%b %d %H:%M %Y", p); + if (active) + attron(A_REVERSE); + if (S_ISDIR(ent->mode)) - printw("%s%-32.32s D %-18.18s\n", active ? CURSR : EMPTY, ent->name, buf); + printw("%s%-32.32s D %-18.18s\n", cur(active), ent->name, buf); else if (S_ISLNK(ent->mode)) - printw("%s%-32.32s L %-18.18s\n", active ? CURSR : EMPTY, ent->name, buf); + printw("%s%-32.32s L %-18.18s\n", cur(active), ent->name, buf); else if (S_ISSOCK(ent->mode)) - printw("%s%-32.32s S %-18.18s\n", active ? CURSR : EMPTY, ent->name, buf); + printw("%s%-32.32s S %-18.18s\n", cur(active), ent->name, buf); else if (S_ISFIFO(ent->mode)) - printw("%s%-32.32s F %-18.18s\n", active ? CURSR : EMPTY, ent->name, buf); + printw("%s%-32.32s F %-18.18s\n", cur(active), ent->name, buf); else if (S_ISBLK(ent->mode)) - printw("%s%-32.32s B %-18.18s\n", active ? CURSR : EMPTY, ent->name, buf); + printw("%s%-32.32s B %-18.18s\n", cur(active), ent->name, buf); else if (S_ISCHR(ent->mode)) - printw("%s%-32.32s C %-18.18s\n", active ? CURSR : EMPTY, ent->name, buf); + printw("%s%-32.32s C %-18.18s\n", cur(active), ent->name, buf); else if (ent->mode & S_IXUSR) - printw("%s%-32.32s E %-18.18s %s\n", active ? CURSR : EMPTY, ent->name, + printw("%s%-32.32s E %-18.18s %s\n", cur(active), ent->name, buf, coolsize(ent->size)); else - printw("%s%-32.32s R %-18.18s %s\n", active ? CURSR : EMPTY, ent->name, + printw("%s%-32.32s R %-18.18s %s\n", cur(active), ent->name, buf, coolsize(ent->size)); + + if (active) + attroff(A_REVERSE); } int @@ -845,6 +852,9 @@ nochange: case SEL_DETAIL: showdetail = !showdetail; showdetail ? (printptr = &printent_long) : (printptr = &printent); + /* Save current */ + if (ndents > 0) + mkpath(path, dents[cur].name, oldpath, sizeof(oldpath)); goto begin; case SEL_FSIZE: sizeorder = !sizeorder; |