--- rxvt-unicode/src/perl/searchable-scrollback 2006/01/12 09:40:33 1.16 +++ rxvt-unicode/src/perl/searchable-scrollback 2006/01/25 15:33:43 1.21 @@ -15,7 +15,7 @@ () } -sub on_keyboard_command { +sub on_user_command { my ($self, $cmd) = @_; $cmd eq "searchable-scrollback:start" @@ -81,7 +81,7 @@ no re 'eval'; # just to be sure if (my $re = eval { qr/$search/ }) { - while ($self->nrow > $row && $row > -$self->nsaved) { + while ($self->nrow > $row && $row > $self->top_row) { my $line = $self->line ($row) or last; @@ -92,7 +92,7 @@ } while $text =~ /$re/g; $self->{row} = $row; - $self->view_start (-$row + ($self->nrow >> 1)); + $self->view_start (List::Util::min 0, $row - ($self->nrow >> 1)); $self->want_refresh; last; } @@ -107,6 +107,8 @@ sub refresh { my ($self) = @_; + return unless $self->{found}; + my $xor = urxvt::RS_RVid | urxvt::RS_Blink; for (@{ $self->{found} }) { $self->scr_xor_span (@$_, $xor); @@ -136,7 +138,7 @@ $self->{row} = $self->nrow - 1; $self->view_start (0); } elsif ($keysym == 0xff52) { # up - $self->{row}-- if $self->{row} > -$self->nsaved; + $self->{row}-- if $self->{row} > $self->top_row; $self->search (-1); } elsif ($keysym == 0xff54) { # down $self->{row}++ if $self->{row} < $self->nrow; @@ -145,7 +147,7 @@ substr $self->{search}, -1, 1, ""; $self->search; $self->idle; - } elsif ($string =~ /^[^\x00-\x1f\x80-\xaf]+$/) { + } elsif ($string !~ /[\x00-\x1f\x80-\xaf]/) { return; # pass to tt_write }