aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2019-09-09 23:41:45 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2019-09-09 23:41:45 +0530
commita064818acf4a3632934421fb94ea84cab059d59f (patch)
tree73024b59c83690d6455f32e9c7db834bfd140a02 /src
parent7621078d52da266371483e45a2b79bb020cb50c0 (diff)
downloadnnn-a064818acf4a3632934421fb94ea84cab059d59f.tar.gz
Fold only long paths
Diffstat (limited to 'src')
-rw-r--r--src/nnn.c39
1 files changed, 23 insertions, 16 deletions
diff --git a/src/nnn.c b/src/nnn.c
index b820d0d..f9a6321 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -549,7 +549,7 @@ static char *xitoa(uint val)
#ifdef KEY_RESIZE
/* Clear the old prompt */
-static inline void clearoldprompt()
+static inline void clearoldprompt(void)
{
move(xlines - 1, 0);
clrtoeol();
@@ -3152,9 +3152,10 @@ static void redraw(char *path)
int ncols = (xcols <= PATH_MAX) ? xcols : PATH_MAX;
int lastln = xlines, onscreen = xlines - 4;
int i, attrs;
+ size_t len = strlen(path);
char buf[12];
char c;
- char *ptr = path, *base = xbasename(path);
+ char *ptr = path, *base;
--lastln;
@@ -3204,28 +3205,34 @@ static void redraw(char *path)
printw("\b] "); /* 10 chars printed in total for contexts - "[1 2 3 4] " */
attron(A_UNDERLINE);
- /* No text wrapping in cwd line, store the truncating char in c */
- c = path[ncols - 11];
- path[ncols - 11] = '\0';
/* Print path */
- if (base - ptr <= 1)
- printw("%s\n\n", path);
+ if ((len + 11) <= (size_t)ncols)
+ addnstr(path, ncols - 11);
else {
- base = base - 1;
- while (ptr < base) {
- if (*ptr == '/') {
- addch(*ptr);
- addch(*(++ptr));
+ base = xbasename(path);
+ if ((base - ptr) <= 1)
+ addnstr(path, ncols - 11);
+ else {
+ len = 0;
+ --base;
+ while (ptr < base) {
+ if (*ptr == '/') {
+ addch(*ptr);
+ addch(*(++ptr));
+ len += 2; /* 2 characters added */
+ }
+ ++ptr;
}
- ++ptr;
- }
- printw("/%s\n\n", base + 1);
+ addnstr(base, ncols - (11 + len + 1));
+ }
}
+ /* Go to first entry */
+ move(2, 0);
+
attroff(A_UNDERLINE);
- path[ncols - 11] = c; /* Restore c */
/* Calculate the number of cols available to print entry name */
if (cfg.showdetail) {