aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nnn.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/nnn.c b/nnn.c
index c54c112..ea26f70 100644
--- a/nnn.c
+++ b/nnn.c
@@ -1196,11 +1196,11 @@ unescape(const char *str, uint maxcols)
}
static void
-printent(struct entry *ent, int sel)
+printent(struct entry *ent, int sel, uint namecols)
{
static char *pname;
- pname = unescape(ent->name, COLS - 5);
+ pname = unescape(ent->name, namecols);
if (S_ISDIR(ent->mode))
printw("%s%s/\n", CURSYM(sel), pname);
@@ -1247,12 +1247,12 @@ coolsize(off_t size)
}
static void
-printent_long(struct entry *ent, int sel)
+printent_long(struct entry *ent, int sel, uint namecols)
{
static char buf[18], *pname;
strftime(buf, 18, "%d-%m-%Y %H:%M", localtime(&ent->t));
- pname = unescape(ent->name, COLS - 32);
+ pname = unescape(ent->name, namecols);
if (sel)
attron(A_REVERSE);
@@ -1303,7 +1303,7 @@ printent_long(struct entry *ent, int sel)
attroff(A_REVERSE);
}
-static void (*printptr)(struct entry *ent, int sel) = &printent_long;
+static void (*printptr)(struct entry *ent, int sel, uint namecols) = &printent_long;
static char
get_fileind(mode_t mode, char *desc)
@@ -1943,7 +1943,6 @@ redraw(char *path)
DPRINTF_D(cur);
DPRINTF_S(path);
- /* No text wrapping in cwd line */
if (!realpath(path, g_buf)) {
printwarn();
return;
@@ -1953,6 +1952,11 @@ redraw(char *path)
if (ncols > PATH_MAX)
ncols = PATH_MAX;
+ /* No text wrapping in cwd line */
+ /* Show CWD: - xstrlen(CWD) - 1 = 6 */
+ g_buf[ncols - 6] = '\0';
+ printw(CWD "%s\n\n", g_buf);
+
/* Fallback to light mode if less than 35 columns */
if (ncols < 35 && cfg.showdetail) {
cfg.showdetail ^= 1;
@@ -1960,10 +1964,11 @@ redraw(char *path)
mode_changed = TRUE;
}
-
- /* Show CWD: - xstrlen(CWD) - 1 = 6 */
- g_buf[ncols - 6] = '\0';
- printw(CWD "%s\n\n", g_buf);
+ /* Calculate the number of cols available to print entry name */
+ if (cfg.showdetail)
+ ncols -= 32;
+ else
+ ncols -= 5;
if (cfg.showcolor) {
attron(COLOR_PAIR(1) | A_BOLD);
@@ -1973,17 +1978,17 @@ redraw(char *path)
/* Print listing */
if (cur < (nlines >> 1)) {
for (i = 0; i < nlines; ++i)
- printptr(&dents[i], i == cur);
+ printptr(&dents[i], i == cur, ncols);
} else if (cur >= ndents - (nlines >> 1)) {
for (i = ndents - nlines; i < ndents; ++i)
- printptr(&dents[i], i == cur);
+ printptr(&dents[i], i == cur, ncols);
} else {
static int odd;
odd = ISODD(nlines);
nlines >>= 1;
for (i = cur - nlines; i < cur + nlines + odd; ++i)
- printptr(&dents[i], i == cur);
+ printptr(&dents[i], i == cur, ncols);
}
/* Must reset e.g. no files in dir */