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.37 by sf-exg, Fri Jun 6 19:40:15 2014 UTC vs.
Revision 1.39 by sf-exg, Mon Jun 9 19:40:42 2014 UTC

103} 103}
104 104
105sub search { 105sub search {
106 my ($self, $dir, $row) = @_; 106 my ($self, $dir, $row) = @_;
107 107
108 delete $self->{found};
109
110 my $search = $self->special_encode ($self->{search}); 108 my $search = $self->special_encode ($self->{search});
111 109
112 no re 'eval'; # just to be sure 110 no re 'eval'; # just to be sure
113 if (my $re = eval { qr/$search/ }) { 111 if (my $re = eval { qr/$search/ }) {
114 while ($self->nrow > $row && $row >= $self->top_row) { 112 while ($self->nrow > $row && $row >= $self->top_row) {
115 my $line = $self->line ($row) 113 my $line = $self->line ($row)
116 or last; 114 or last;
117 115
118 my $text = $line->t; 116 my $text = $line->t;
119 if ($text =~ /$re/g) { 117 if ($text =~ /$re/g) {
118 delete $self->{found};
119
120 do { 120 do {
121 push @{ $self->{found} }, [$line->coord_of ($-[0]), $line->coord_of ($+[0])]; 121 push @{ $self->{found} }, [$line->coord_of ($-[0]), $line->coord_of ($+[0])];
122 } while $text =~ /$re/g; 122 } while $text =~ /$re/g;
123 123
124 $self->{row} = $row; 124 $self->{row} = $row;
125 $self->view_start (List::Util::min 0, $row - ($self->nrow >> 1)); 125 $self->view_start (List::Util::min 0, $row - ($self->nrow >> 1));
126 $self->want_refresh; 126 $self->want_refresh;
127 last; 127 return;
128 } 128 }
129 129
130 $row = $dir < 0 ? $line->beg - 1 : $line->end + 1; 130 $row = $dir < 0 ? $line->beg - 1 : $line->end + 1;
131 } 131 }
132 } 132 }
133 133
134 $self->scr_bell unless $self->{found}; 134 $self->scr_bell;
135} 135}
136 136
137sub refresh { 137sub refresh {
138 my ($self) = @_; 138 my ($self) = @_;
139 139
192 $self->{search} .= $self->locale_decode ($data); 192 $self->{search} .= $self->locale_decode ($data);
193 193
194 $self->{search} =~ s/^\(\?i\)// 194 $self->{search} =~ s/^\(\?i\)//
195 if $self->{search} =~ /^\(.*[[:upper:]]/; 195 if $self->{search} =~ /^\(.*[[:upper:]]/;
196 196
197 delete $self->{found};
197 $self->search (-1, $self->{row}); 198 $self->search (-1, $self->{row});
198 $self->idle; 199 $self->idle;
199 200
200 1 201 1
201} 202}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines