Thumbnail

rani/cscroll.git

Clone URL: https://git.buni.party/rani/cscroll.git

commit a7d64b4ba7f82d3ff031a74d1cb6ce43ba70d072 Author: rani <clagv.randomgames@gmail.com> Date: Sat Jan 28 18:35:08 2023 +0000 Print as many characters of cwd can fit on screen before shortening with an ellipsis diff --git a/src/main.c b/src/main.c index c55dccf..ffc2d07 100644 --- a/src/main.c +++ b/src/main.c @@ -14623 +14659 @@ int main(int argc, char ** argv) {   first_f--;   last_f--;   } - - // print path at top - addch('\n'); - if (in_home_subdir) { - addch('~'); - // cwd == homedir - if (cwd[homedir_len] == '\0') addch('/'); - else addstr(cwd + homedir_len); - } else addstr(cwd);   + // computer however many characters of cwd will be printed + int cwd_len = 0; + if (in_home_subdir) cwd_len = strlen(cwd) - homedir_len + 1; + else cwd_len = strlen(cwd); + + // print cwd at top + if (cwd_len >= COLS) { + char * p = cwd + (cwd_len - COLS); + if (in_home_subdir) { + addch('~'); + p += homedir_len; + } + + // there is not enough room for an elipsis, + // just print whatever is left + if (p + 5 > cwd + strlen(cwd)) { + //addstr(p); + } else { + p += 5; // strlen("/...") + addch('/'); + attron(A_DIM); + addstr("..."); + attroff(A_DIM); + addstr(p); + } + // write the full path regularly + } else { + char * p = cwd; + if (in_home_subdir) { + addch('~'); + p += homedir_len; + } + + if (!*p) addch('/'); + else addstr(p); + } + + addch('\n'); + bool printed_info = false;   if (permission_denied) { + printed_info = true;   attron(COLOR_PAIR(RED)); - printw("\tPermission Denied"); + addstr("Permission Denied");   attroff(COLOR_PAIR(RED));   } - if (cutting) printw(" cut"); - printw("\n\n"); + if (cutting) { + printed_info = true; + if (permission_denied) padstr(2); + addstr("Cut"); + } + if (printed_info) addch('\n'); + addch('\n');     // print files   for (size_t i = first_f; i < last_f; i++) {