aboutsummaryrefslogtreecommitdiffstats
path: root/nnn.c
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2017-09-02 14:02:29 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2017-09-02 14:02:29 +0530
commit056a79635ab90e0faf94389d7ef6edf56934823f (patch)
treea8b58169d6b104a97e9079a996f88542edb5788f /nnn.c
parentd0e4c0aac2d3d552f0771f71dccb315868eea0f5 (diff)
downloadnnn-056a79635ab90e0faf94389d7ef6edf56934823f.tar.gz
Disable dircolor if no sub-directories
Diffstat (limited to 'nnn.c')
-rw-r--r--nnn.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/nnn.c b/nnn.c
index c215230..4ca3e56 100644
--- a/nnn.c
+++ b/nnn.c
@@ -1158,6 +1158,15 @@ readinput(void)
return g_buf[0] ? g_buf : NULL;
}
+static void
+resetdircolor(mode_t mode)
+{
+ if (cfg.dircolor && !S_ISDIR(mode)) {
+ attroff(COLOR_PAIR(1) | A_BOLD);
+ cfg.dircolor = 0;
+ }
+}
+
/*
* Replace escape characters in a string with '?'
* Adjust string length to maxcols if > 0;
@@ -1202,6 +1211,9 @@ printent(struct entry *ent, int sel, uint namecols)
pname = unescape(ent->name, namecols);
+ /* Directories are always shown on top */
+ resetdircolor(ent->mode);
+
if (S_ISDIR(ent->mode))
printw("%s%s/\n", CURSYM(sel), pname);
else if (S_ISLNK(ent->mode))
@@ -1214,12 +1226,6 @@ printent(struct entry *ent, int sel, uint namecols)
printw("%s%s*\n", CURSYM(sel), pname);
else
printw("%s%s\n", CURSYM(sel), pname);
-
- /* Dirs are always shown on top */
- if (cfg.dircolor && !S_ISDIR(ent->mode)) {
- attroff(COLOR_PAIR(1) | A_BOLD);
- cfg.dircolor = 0;
- }
}
static char *
@@ -1254,6 +1260,9 @@ printent_long(struct entry *ent, int sel, uint namecols)
strftime(buf, 18, "%d-%m-%Y %H:%M", localtime(&ent->t));
pname = unescape(ent->name, namecols);
+ /* Directories are always shown on top */
+ resetdircolor(ent->mode);
+
if (sel)
attron(A_REVERSE);
@@ -1293,12 +1302,6 @@ printent_long(struct entry *ent, int sel, uint namecols)
printw("%s%-16.16s %8.8s %s\n", CURSYM(sel), buf, coolsize(ent->blocks << 9), pname);
}
- /* Dirs are always shown on top */
- if (cfg.dircolor && !S_ISDIR(ent->mode)) {
- attroff(COLOR_PAIR(1) | A_BOLD);
- cfg.dircolor = 0;
- }
-
if (sel)
attroff(A_REVERSE);
}