From 8563ec5cb28f43060eacac0d7b0f27ecee78c9fc Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Fri, 31 Mar 2017 21:17:50 +0530 Subject: [PATCH] Revamp detail mode If a filename has Unicode chars, the alignment is broken. Hence moving name to the last column. This also makes the view compact. Moving block and char dev indicators in the space for size. --- nnn.c | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/nnn.c b/nnn.c index b4415ab4..7234af84 100644 --- a/nnn.c +++ b/nnn.c @@ -458,7 +458,6 @@ printent_long(struct entry *ent, int active) { static char buf[18]; const static struct tm *p; - static char name[PATH_MAX + 2]; p = localtime(&ent->t); strftime(buf, 18, "%b %d %H:%M %Y", p); @@ -466,29 +465,22 @@ printent_long(struct entry *ent, int active) if (active) attron(A_REVERSE); - if (S_ISDIR(ent->mode)) { - sprintf(name, "%s/", ent->name); - printw("%s%-32.32s %-18.18s\n", cur(active), name, buf); - } else if (S_ISLNK(ent->mode)) { - sprintf(name, "%s@", ent->name); - printw("%s%-32.32s %-18.18s\n", cur(active), name, buf); - } else if (S_ISSOCK(ent->mode)) { - sprintf(name, "%s=", ent->name); - printw("%s%-32.32s %-18.18s\n", cur(active), name, buf); - } else if (S_ISFIFO(ent->mode)) { - sprintf(name, "%s|", ent->name); - printw("%s%-32.32s %-18.18s\n", cur(active), name, buf); - } else if (S_ISBLK(ent->mode)) - printw("%s%-32.32s b %-18.18s\n", cur(active), ent->name, buf); + if (S_ISDIR(ent->mode)) + printw("%s%-17.17s %s/\n", cur(active), buf, ent->name); + else if (S_ISLNK(ent->mode)) + printw("%s%-17.17s %s@\n", cur(active), buf, ent->name); + else if (S_ISSOCK(ent->mode)) + printw("%s%-17.17s %s=\n", cur(active), buf, ent->name); + else if (S_ISFIFO(ent->mode)) + printw("%s%-17.17s %s|\n", cur(active), buf, ent->name); + else if (S_ISBLK(ent->mode)) + printw("%s%-17.17s b %s\n", cur(active), buf, ent->name); else if (S_ISCHR(ent->mode)) - printw("%s%-32.32s c %-18.18s\n", cur(active), ent->name, buf); - else if (ent->mode & S_IXUSR) { - sprintf(name, "%s*", ent->name); - printw("%s%-32.32s %-18.18s %s\n", cur(active), name, - buf, coolsize(ent->size)); - } else - printw("%s%-32.32s %-18.18s %s\n", cur(active), ent->name, - buf, coolsize(ent->size)); + printw("%s%-17.17s c %s\n", cur(active), buf, ent->name); + else if (ent->mode & S_IXUSR) + printw("%s%-17.17s %8.8s %s*\n", cur(active), buf, coolsize(ent->size), ent->name); + else + printw("%s%-17.17s %8.8s %s\n", cur(active), buf, coolsize(ent->size), ent->name); if (active) attroff(A_REVERSE);