X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=bin%2Ffcscs;h=9f58c36d8e40f4bd5fe4f26f92684e7385d632bb;hb=1a5fd0bef334ba6ccacebdb206a8e060b3666a26;hp=d45747123a55f60acf2ea913b3df6b03be906537;hpb=bcac0b8075b6cd11edc0ab4237d872f239a8ca67;p=fcscs%2Ffcscs.git diff --git a/bin/fcscs b/bin/fcscs index d457471..9f58c36 100755 --- a/bin/fcscs +++ b/bin/fcscs @@ -102,7 +102,8 @@ or another number to select the longer match. Use backspace to remove the last entered number. Press return before entering a number to select the last (lowest numbered) -match. To abort without selecting any match either use "q". +match (underlined by default). To abort without selecting any match either use +"q". To change the selection mode (e.g. paths, files, etc.) use one of the mappings explained below. Per default URLs are selected, see options for a way to @@ -307,9 +308,13 @@ package Screen { my $attr_id = $config->{attribute}{match_id}; my $attr_string = $config->{attribute}{match_string}; + my $attr_last = $config->{attribute}{match_last}; foreach (@{$matches_add}) { - $self->draw($_->{y}, $_->{x}, $attr_string, $_->{string}); + my $attr = (defined $_->{id} and $_->{id} == 1) + ? $attr_last + : $attr_string; + $self->draw($_->{y}, $_->{x}, $attr, $_->{string}); if (defined $_->{id}) { $self->draw($_->{y}, $_->{x}, $attr_id, $_->{id}); } @@ -548,7 +553,8 @@ sub select_match { $number = $number * 10 + $char; } elsif ($char eq "\b" or $char eq "\x7f") { # backspace $number = int($number / 10); - } elsif ($char eq "\n") { + } elsif ($char eq "\n" + or $char eq $config->{setting}{alternative_return}) { if ($number == 0) { # number without selection matches last entry $number = 1; } @@ -611,6 +617,8 @@ sub extend_match { $screen->debug('extend_match', 'started'); + return if not defined $match; + $screen->prompt(name => 'extend', value => undef); $screen->draw_prompt($config); @@ -624,8 +632,9 @@ sub extend_match { my $match_old = \%{$match}; my $char = $screen->getch; - if ($char eq "\n") { # accept match - last; + if ($char eq "\n" + or $char eq $config->{setting}{alternative_return}) { + last; # accept match } elsif ($char eq 'w') { # select current word (both directions) extend_match_regex_left($line, $match, qr/\w+/); @@ -643,7 +652,7 @@ sub extend_match { } elsif ($char eq 'E') { # select current WORD (only right) extend_match_regex_right($line, $match, qr/\S+/); - } elsif ($char eq '^') { # select to beginning of line + } elsif ($char eq '0') { # select to beginning of line extend_match_regex_left($line, $match, qr/.+/); } elsif ($char eq '$') { # select to end of line extend_match_regex_right($line, $match, qr/.+/); @@ -760,7 +769,7 @@ configurable at the moment): =item B extend WORD to the right -=item B<^> extend to beginning of line +=item B<0> extend to beginning of line =item B<$> extend to end of line @@ -1010,6 +1019,16 @@ The following simple mappings are available by default: =back +The following additional mappings are available by default: + +=over + +=item B<\n> accept current selection (not customizable) + +=item B additional key to accept selection (B option) + +=back + All (single-byte) keys except numbers, backspace and return can be mapped. Unknown mappings are ignored when pressing keys. @@ -1048,6 +1067,8 @@ Defaults in parentheses (foreground, background, attribute). =item B attribute for matches (yellow, default, normal) +=item B attribute for the match selected by return (yellow, default, underline) + =item B attribute for prompt name (standout) =item B attribute for prompt flags (standout) @@ -1066,6 +1087,8 @@ my %attribute = ( match_id => $screen->color_pair(Curses::COLOR_RED, -1) | Curses::A_BOLD, match_string => $screen->color_pair(Curses::COLOR_YELLOW, -1), + match_last => $screen->color_pair(Curses::COLOR_YELLOW, -1) + | Curses::A_UNDERLINE, prompt_name => Curses::A_STANDOUT, prompt_flags => Curses::A_STANDOUT, ); @@ -1090,6 +1113,8 @@ Defaults in parentheses. =item B GNU Screen's msgwait variable, used when yanking (C<5>) +=item B additional accept key like return, set to C<\n> to disable (C) + =item B browser command as array reference (C<['x-www-browser']>) =back @@ -1109,6 +1134,8 @@ my %setting = ( smartcase => 1, paste_sleep => 100_000, screen_msgwait => 5, + # global mappings + alternative_return => 's', # commands browser => ['x-www-browser'], ); @@ -1376,8 +1403,8 @@ RESULT: $screen->debug('input', 'selecting match'); my $tmp = $result; $result = select_match($result->{select}, - $screen, \%config, $input, - $result->{matches}); + $screen, \%config, $input, + $result->{matches}); $result->{handler} = $tmp->{handler}; $result->{extend} = $tmp->{extend}; goto RESULT; # reprocess special entries in result