X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=selector.cc;h=ebbd0214f7d068926bfc0ef6389ca370dc62b4d1;hb=0a66c657ac6a8c10207164fbd0444ca09db6684c;hp=d36c8363c7e66348b122bb68f7945d7d9efeef9a;hpb=10836361b425af2fd602d4fe6adb12c8037f99d9;p=selector.git diff --git a/selector.cc b/selector.cc index d36c836..ebbd021 100644 --- a/selector.cc +++ b/selector.cc @@ -24,7 +24,7 @@ // To use it as a super-history-search for bash: // -// alias h='./selector -i -b -v -f <(history)' +// alias h='selector -d -i -b -v -f <(history)' // This software is highly Linux-specific, but I would be glad to get // patches to make it work on other OS @@ -207,12 +207,12 @@ int next_visible(int current_line, int nb_lines, char **lines, matcher_t *matche void update_screen(int *current_line, int *temporary_line, int motion, int nb_lines, char **lines, - char *pattern_list) { + char *pattern) { char buffer[buffer_size]; matcher_t matcher; - initialize_matcher(use_regexp, &matcher, pattern_list); + initialize_matcher(use_regexp, &matcher, pattern); // We now take care of printing the lines per se @@ -358,7 +358,7 @@ void update_screen(int *current_line, int *temporary_line, int motion, sprintf(buffer, "%d/%d pattern: %s%s", nb_printed_lines, nb_lines, - pattern_list, + pattern, use_regexp ? " [regexp]" : ""); for(int k = strlen(buffer); k < console_width; k++) buffer[k] = ' '; @@ -487,7 +487,8 @@ int main(int argc, char **argv) { if(show_help || error) { cerr << "Selector version " << VERSION << "-R" << REVISION_NUMBER << endl - << "Written by Francois Fleuret " + << "Written by Francois Fleuret ." + << endl << endl << argv[0] << " [-h]" @@ -562,10 +563,10 @@ int main(int argc, char **argv) { } } - char patterns[buffer_size]; - patterns[0] = '\0'; - int patterns_point; - patterns_point = 0; + char pattern[buffer_size]; + pattern[0] = '\0'; + int pattern_point; + pattern_point = 0; initscr(); @@ -596,7 +597,7 @@ int main(int argc, char **argv) { int key; int current_line = 0, temporary_line = 0; - update_screen(¤t_line, &temporary_line, 0, nb_lines, lines, patterns); + update_screen(¤t_line, &temporary_line, 0, nb_lines, lines, pattern); do { @@ -605,15 +606,15 @@ int main(int argc, char **argv) { int motion = 0; if(key >= ' ' && key <= '~') { - patterns[patterns_point++] = key; - patterns[patterns_point] = '\0'; + pattern[pattern_point++] = key; + pattern[pattern_point] = '\0'; } else if(key == KEY_BACKSPACE || key == '' || key == '' || key == KEY_DC || key == '') { - if(patterns_point > 0) { - patterns_point--; - patterns[patterns_point] = '\0'; + if(pattern_point > 0) { + pattern_point--; + pattern[pattern_point] = '\0'; } } @@ -633,6 +634,10 @@ int main(int argc, char **argv) { motion = -10; } + else if(key == KEY_DOWN || key == '') { + motion = 1; + } + else if(key == KEY_UP || key == '') { motion = -1; } @@ -642,16 +647,12 @@ int main(int argc, char **argv) { } else if(key == '') { - patterns_point = 0; - patterns[patterns_point] = '\0'; - } - - else if(key == KEY_DOWN || key == '') { - motion = 1; + pattern_point = 0; + pattern[pattern_point] = '\0'; } update_screen(¤t_line, &temporary_line, motion, - nb_lines, lines, patterns); + nb_lines, lines, pattern); } while(key != '\n' && key != KEY_ENTER && key != '');