X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?p=selector.git;a=blobdiff_plain;f=selector.c;h=3246a0055c39d7d237f3b3a4969c99be137a10d3;hp=638aaadb327df0677c38fe2bef3c56bf697b246a;hb=dd8062da09a47dfb4c1520bf3d23742b7103c00d;hpb=95a9c82083efd41a6b0af175ef89c7095abf5dde diff --git a/selector.c b/selector.c index 638aaad..3246a00 100644 --- a/selector.c +++ b/selector.c @@ -66,6 +66,7 @@ int case_sensitive = 0; char *title = 0; int error_flash = 0; int upper_caps_makes_case_sensitive = 0; +int show_long_lines = 0; int attr_modeline, attr_focus_line, attr_error; @@ -188,6 +189,8 @@ void usage(FILE *out) { fprintf(out, " start in regexp mode\n"); fprintf(out, " -a, --case-sensitive\n"); fprintf(out, " start in case sensitive mode\n"); + fprintf(out, " -j, --show-long-lines\n"); + fprintf(out, " print three dots at the end of truncated lines\n"); fprintf(out, " -u, --upper-case-makes-case-sensitive\n"); fprintf(out, " using an upper case character in the matching string makes\n"); fprintf(out, " the matching case-sensitive\n"); @@ -602,15 +605,33 @@ void update_screen(int *current_focus_line, int *displayed_focus_line, /* Highlight the highlighted line ... */ if(l == new_focus_line) { - while(k < console_width) { - buffer[k++] = ' '; + if(show_long_lines && k >= console_width) { + if(console_width >= 4) { + buffer[console_width - 4] = ' '; + buffer[console_width - 3] = '.'; + buffer[console_width - 2] = '.'; + buffer[console_width - 1] = '.'; + } + } else { + while(k < console_width) { + buffer[k++] = ' '; + } } attron(attr_focus_line); addnstr(buffer, console_width); attroff(attr_focus_line); } else { - buffer[k++] = '\n'; - buffer[k++] = '\0'; + if(show_long_lines && k >= console_width) { + if(console_width >= 4) { + buffer[console_width - 4] = ' '; + buffer[console_width - 3] = '.'; + buffer[console_width - 2] = '.'; + buffer[console_width - 1] = '.'; + } + } else { + buffer[k++] = '\n'; + buffer[k++] = '\0'; + } /* clrtoeol(); */ addnstr(buffer, console_width); } @@ -803,6 +824,7 @@ static struct option long_options[] = { { "remove-duplicates", no_argument, 0, 'd' }, { "regexp", no_argument, 0, 'e' }, { "case-sensitive", no_argument, 0, 'a' }, + { "show-long-lines", no_argument, 0, 'j'}, { "upper-case-makes-case-sensitive", no_argument, 0, 'u' }, { "title", 1, 0, 't' }, { "number-of-lines", 1, 0, 'l' }, @@ -845,7 +867,7 @@ int main(int argc, char **argv) { strcpy(output_filename, ""); - while ((c = getopt_long(argc, argv, "o:s:x:vwmqf:ibzdeaunt:l:c:-h", + while ((c = getopt_long(argc, argv, "o:s:x:vwmqf:ibzdeajunt:l:c:-h", long_options, NULL)) != -1) { switch(c) { @@ -902,6 +924,10 @@ int main(int argc, char **argv) { case_sensitive = 1; break; + case 'j': + show_long_lines = 1; + break; + case 'u': upper_caps_makes_case_sensitive = 1; break;