ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/perl/searchable-scrollback
(Generate patch)

Comparing rxvt-unicode/src/perl/searchable-scrollback (file contents):
Revision 1.43 by root, Fri Dec 26 19:19:30 2014 UTC vs.
Revision 1.46 by root, Wed Jun 23 12:45:30 2021 UTC

4 4
5#:META:RESOURCE:%:string:activation hotkey keysym 5#:META:RESOURCE:%:string:activation hotkey keysym
6 6
7=head1 NAME 7=head1 NAME
8 8
9searchable-scrollback - incremental scrollback search (enabled by default) 9searchable-scrollback - incremental scrollback search
10 10
11=head1 DESCRIPTION 11=head1 DESCRIPTION
12 12
13Adds regex search functionality to the scrollback buffer, triggered by 13Adds regex search functionality to the scrollback buffer, triggered by
14the C<searchable-scrollback:start> action (bound to C<M-s> by 14the C<searchable-scrollback:start> action (bound to C<M-s> by
15default). While in search mode, normal terminal input/output is 15default). While in search mode, normal terminal input/output is
16suspended and a regex is displayed at the bottom of the screen. 16suspended and a regex is displayed at the bottom of the screen.
17 17
18Inputting characters appends them to the regex and continues incremental 18Inputting characters appends them to the regex and continues incremental
19search. C<BackSpace> removes a character from the regex, C<Up> and C<Down> 19search. In addition, the following bindings are recognized:
20search upwards/downwards in the scrollback buffer, C<End> jumps to the 20
21bottom. C<Escape> leaves search mode and returns to the point where search 21=over 4
22was started, while C<Enter> or C<Return> stay at the current position and 22
23additionally stores the first match in the current line into the primary 23=item C<BackSpace>
24selection if the C<Shift> modifier is active. 24
25Remove a character from the regex.
26
27=item C<Insert>
28
29Append the value of the PRIMARY selection to the regex.
30
31=item C<Up>
32
33Search for a match upwards.
34
35=item C<Down>
36
37Search for a match downwards.
38
39=item C<Prior>
40
41Scroll up.
42
43=item C<Next>
44
45Scroll down.
46
47=item C<End>
48
49Scroll to the bottom.
50
51=item C<Escape>
52
53Leave the mode and return to the point where search was started.
54
55=item C<Enter> or C<Return>
56
57Leave the mode maintaining the current position in the scrollback.
58Additionally, if the C<Shift> modifier is active, store the first
59match in the current line into the primary selection.
60
61=back
25 62
26The regex defaults to "(?i)", resulting in a case-insensitive search. To 63The regex defaults to "(?i)", resulting in a case-insensitive search. To
27get a case-sensitive search you can delete this prefix using C<BackSpace> 64get a case-sensitive search you can delete this prefix using C<BackSpace>
28or simply use an uppercase character which removes the "(?i)" prefix. 65or simply use an uppercase character which removes the "(?i)" prefix.
29 66
182 if $line->beg > $self->top_row; 219 if $line->beg > $self->top_row;
183 } elsif ($keysym == 0xff54) { # down 220 } elsif ($keysym == 0xff54) { # down
184 my $line = $self->line ($self->{row}); 221 my $line = $self->line ($self->{row});
185 $self->search (+1, $line->end + 1) 222 $self->search (+1, $line->end + 1)
186 if $line->end < $self->nrow; 223 if $line->end < $self->nrow;
224 } elsif ($keysym == 0xff55) { # prior
225 my $row = $self->view_start - ($self->nrow - 1);
226 $self->view_start (List::Util::min 0, $row);
227 } elsif ($keysym == 0xff56) { # next
228 my $row = $self->view_start + ($self->nrow - 1);
229 $self->view_start (List::Util::min 0, $row);
230 } elsif ($keysym == 0xff63) { # insert
231 $self->selection_request (urxvt::CurrentTime, 1);
187 } elsif ($keysym == 0xff08) { # backspace 232 } elsif ($keysym == 0xff08) { # backspace
188 substr $self->{search}, -1, 1, ""; 233 substr $self->{search}, -1, 1, "";
189 $self->search (+1, $self->{row}); 234 $self->search (+1, $self->{row});
190 $self->idle; 235 $self->idle;
191 } elsif ($string !~ /[\x00-\x1f\x80-\xaf]/) { 236 } elsif ($string !~ /[\x00-\x1f\x80-\xaf]/) {
197 242
198sub tt_write { 243sub tt_write {
199 my ($self, $data) = @_; 244 my ($self, $data) = @_;
200 245
201 $self->{search} .= $self->locale_decode ($data); 246 $self->{search} .= $self->locale_decode ($data);
247 $self->{search} =~ s/\e\[20[01]~//g;
202 248
203 $self->{search} =~ s/^\(\?i\)// 249 $self->{search} =~ s/^\(\?i\)//
204 if $self->{search} =~ /^\(.*[[:upper:]]/; 250 if $self->{search} =~ /^\(.*[[:upper:]]/;
205 251
206 delete $self->{found}; 252 delete $self->{found};

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines