From 287c4f215525607851ea65c0c5887cabac16b43f Mon Sep 17 00:00:00 2001 From: Francois Fleuret Date: Wed, 15 Apr 2009 08:03:47 +0200 Subject: [PATCH] Cosmetics. --- Makefile | 4 ++-- REVISION_NUMBER | 2 +- mkdeb.sh | 14 +++++++------- selector.1 | 35 +++++++++++++++++++---------------- selector.cc | 37 +++++++++++++++++++++++-------------- 5 files changed, 52 insertions(+), 40 deletions(-) diff --git a/Makefile b/Makefile index c753693..822005c 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # -# selector is a simple shell command for selection of strings with a -# dynamic pattern-matching. +# selector is a simple command line utility for selection of strings +# with a dynamic pattern-matching. # # Copyright (c) 2009 Francois Fleuret # Written by Francois Fleuret diff --git a/REVISION_NUMBER b/REVISION_NUMBER index b4f334f..fba7ed5 100644 --- a/REVISION_NUMBER +++ b/REVISION_NUMBER @@ -1 +1 @@ -141 +143 diff --git a/mkdeb.sh b/mkdeb.sh index 55ef95e..291c677 100755 --- a/mkdeb.sh +++ b/mkdeb.sh @@ -1,8 +1,8 @@ #!/bin/bash # -# selector is a simple shell command for selection of strings with a -# dynamic pattern-matching. +# selector is a simple command line utility for selection of strings +# with a dynamic pattern-matching. # # Copyright (c) 2009 Francois Fleuret # Written by Francois Fleuret @@ -47,11 +47,11 @@ Version: ${VERSION} Maintainer: Francois Fleuret Architecture: i386 Depends: ${LIB_DEPENDS} -Description: A command line for dynamic string-matching - This is a command line for dynamic string selection. As you type a - list of substrings separated by ';', or a regexp, the display is - updated in real time to show only the matching lines. The main usage - of selector is as an efficient search in the shell command +Description: A command line utility for dynamic string-matching + This is a command line utility for dynamic string selection. As you + type a list of substrings separated by ';', or a regexp, the display + is updated in real time to show only the matching lines. The main + usage of selector is as an efficient search in the shell command history. With the correct option, it will inject the selected line into the tty input buffer, hence allowing the user to edit the line and execute it as a standard command. diff --git a/selector.1 b/selector.1 index c349ace..903c428 100644 --- a/selector.1 +++ b/selector.1 @@ -1,31 +1,30 @@ .TH "SELECTOR" "1" .SH "NAME" -selector - A simple command line for dynamic pattern selection +selector - A simple command line utility for dynamic pattern selection .SH "SYNOPSIS" .PP \fBselector\fP [\fBoptions\fP] [ [ ...]] .SH "DESCRIPTION" .PP -\fBselector\fP is a command line dynamic string selection. As you type -a list of strings separated by ';' or a regexp, the display is updated -in real time to show only the lines containing all the said strings, -or matching the regexp. - -The ^R key switches between the standard multi-substring mode and the -regexp mode, and ^I between the case-sensitive and case-insensitive -modes. +\fBselector\fP is a command line utility for dynamic string +selection. As you type a list of strings separated by ';' or a regexp, +the display is updated in real time to show only the lines containing +all the said strings, or matching the regexp. The main usage of selector is as an efficient search in the shell command history. With the correct option, it will inject the selected line into the virtual tty input buffer, hence allowing the user to edit the line and execute it as a standard command. -Selector is also a good tool to test regexp quickly. +Selector is also a good tool to test regexps. + +.SH "KEYS" +.PP Keys corresponding to ASCII codes between ' ' and '~' add a character to the pattern string. The Backspace key, ^H and ^? delete the -character on the left of the cursor, while Delete key and ^D delete -the character at cursor location. +character immediately on the left of the cursor, while the Delete key +and ^D delete the character at cursor location. The Up and Down cursor keys move the selected line accordingly, and PageUp and PageDown move by ten lines. The Home and End key move to @@ -33,8 +32,12 @@ the top and the bottom of the list respectively. The return key selects the current line and exits. The shortcuts ^A, ^E, ^U, and ^K do somehow what they do in readline, -and you can cancel the selection by either interrupting the command -with ^C or by typing ^G. +and you can exit selector without doing anything by either +interrupting the command with ^C or by typing ^G. + +The ^R key switches between the standard multi-substring mode and the +regexp mode, and ^I between the case-sensitive and case-insensitive +modes. .SH "OPTIONS" .IP "\fB-h\fP" 10 @@ -78,8 +81,8 @@ To use selector to search into your bash history, you can use .SH "BUGS" -Modeline display problems if the pattern is too long. Probably many -others. +There are modeline display problems if the pattern is too +long. .SH "AUTHOR" .PP diff --git a/selector.cc b/selector.cc index 28ca7db..e1ecf98 100644 --- a/selector.cc +++ b/selector.cc @@ -1,7 +1,7 @@ /* - * selector is a simple shell command for selection of strings with a - * dynamic pattern-matching. + * selector is a simple command line utility for selection of strings + * with a dynamic pattern-matching. * * Copyright (c) 2009 Francois Fleuret * Written by Francois Fleuret @@ -56,6 +56,9 @@ int use_regexp = 0; int case_sensitive = 0; char *title = 0; +#define COLOR_MODELINE 1 +#define COLOR_HIGHLIGHTED_LINE 2 + ////////////////////////////////////////////////////////////////////// void inject_into_tty_buffer(char *string) { @@ -429,9 +432,9 @@ void update_screen(int *current_line, int *temporary_line, int motion, if(l == new_line) { if(with_colors) { - attron(COLOR_PAIR(2)); + attron(COLOR_PAIR(COLOR_HIGHLIGHTED_LINE)); addnstr(buffer, console_width); - attroff(COLOR_PAIR(2)); + attroff(COLOR_PAIR(COLOR_HIGHLIGHTED_LINE)); } else { attron(A_STANDOUT); addnstr(buffer, console_width); @@ -464,7 +467,7 @@ void update_screen(int *current_line, int *temporary_line, int motion, move(0, 0); if(with_colors) { - attron(COLOR_PAIR(1)); + attron(COLOR_PAIR(COLOR_MODELINE)); } else { attron(A_REVERSE); } @@ -499,18 +502,25 @@ void update_screen(int *current_line, int *temporary_line, int motion, addstr(" "); } - if(use_regexp) { - addstr(" [regexp]"); - } + if(use_regexp || case_sensitive) { + addstr("["); + if(use_regexp) { + addstr("regexp"); + } - if(case_sensitive) { - addstr(" [case]"); + if(case_sensitive) { + if(use_regexp) { + addstr(","); + } + addstr("case"); + } + addstr("]"); } move(0, cursor_x); if(with_colors) { - attroff(COLOR_PAIR(1)); + attroff(COLOR_PAIR(COLOR_MODELINE)); } else { attroff(A_REVERSE); } @@ -833,9 +843,8 @@ int main(int argc, char **argv) { cerr << "Color numbers have to be between 0 and " << COLORS - 1 << "." << endl; exit(1); } - init_pair(1, color_fg_modeline, color_bg_modeline); - init_pair(2, color_fg_highlight, color_bg_highlight); - init_pair(3, color_bg_modeline, color_fg_modeline); + init_pair(COLOR_MODELINE , color_fg_modeline, color_bg_modeline); + init_pair(COLOR_HIGHLIGHTED_LINE, color_fg_highlight, color_bg_highlight); } else { with_colors = 0; } -- 2.39.5