Fold only long paths

This commit is contained in:
Arun Prakash Jana 2019-09-09 23:41:45 +05:30
parent 7621078d52
commit a064818acf
No known key found for this signature in database
GPG Key ID: A75979F35C080412
1 changed files with 23 additions and 16 deletions

View File

@ -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) {