diff --git a/src/nnn.c b/src/nnn.c index 1b5041e0..0fca4d78 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -2332,7 +2332,6 @@ static char *get_lsperms(mode_t mode) static void printent(const struct entry *ent, int sel, uint namecols) { wchar_t *wstr; - unescape(ent->name, namecols, &wstr); char ind = '\0'; switch (ent->mode & S_IFMT) { @@ -2360,6 +2359,11 @@ static void printent(const struct entry *ent, int sel, uint namecols) break; } + if (!ind) + ++namecols; + + unescape(ent->name, namecols, &wstr); + /* Directories are always shown on top */ resetdircolor(ent->flags); @@ -2390,6 +2394,10 @@ static void printent_long(const struct entry *ent, int sel, uint namecols) permbuf[2] = '0' + (ent->mode & 7); permbuf[3] = '\0'; + /* Add a column if no indicator is needed */ + if (S_ISREG(ent->mode) && !(ent->mode & 0100)) + ++namecols; + /* Trim escape chars from name */ const char *pname = unescape(ent->name, namecols, NULL);