From dd8062da09a47dfb4c1520bf3d23742b7103c00d Mon Sep 17 00:00:00 2001 From: Francois Fleuret Date: Tue, 7 Feb 2012 18:05:38 +0100 Subject: [PATCH] Added the -j option to indicate truncated lines. --- bash-selector.sh | 4 ++-- selector.1 | 3 +++ selector.c | 36 +++++++++++++++++++++++++++++++----- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/bash-selector.sh b/bash-selector.sh index dc1ae57..68a024b 100755 --- a/bash-selector.sh +++ b/bash-selector.sh @@ -37,7 +37,7 @@ fi ###################################################################### function selector-history () { - selector --bash -u -c 7,4,0,3 -q <(history) + selector --bash -j -u -c 7,4,0,3 -q <(history) } ###################################################################### @@ -71,7 +71,7 @@ function selector-cd () { function selector-cd-search () { PATH_TEMP=$(mktemp /tmp/selector-cd-path.XXXXXX) - selector -u -t "cd" -l 1000 -d -i -c 7,2,0,3 -o ${PATH_TEMP} -q ${SELECTOR_CD_HISTORY} + selector -j -u -t "cd" -l 1000 -d -i -c 7,2,0,3 -o ${PATH_TEMP} -q ${SELECTOR_CD_HISTORY} NEW_PATH="$(cat ${PATH_TEMP} | sed -e 's!~!'${HOME}'!')" if [[ -s "${NEW_PATH}" ]]; then selector-cd "$(cat ${PATH_TEMP} | sed -e 's!^~!'${HOME}'!')" diff --git a/selector.1 b/selector.1 index 44bd32a..29d44cc 100644 --- a/selector.1 +++ b/selector.1 @@ -93,6 +93,9 @@ start in regexp mode \fB-a\fR, \fB--case-sensitive\fR start in case sensitive mode .TP +\fB-j\fR, \fB--show-long-lines\fR +print three dots at the end of truncated lines +.TP \fB-u\fR, \fB--upper-case-makes-case-sensitive\fR using an upper case in the matching string makes the matching case-sensitive 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; -- 2.39.5