*** empty log message ***
authorroot <root>
Mon, 9 Jan 2006 23:30:01 +0000 (23:30 +0000)
committerroot <root>
Mon, 9 Jan 2006 23:30:01 +0000 (23:30 +0000)
src/command.C
src/hookinc.h
src/perl/searchable-scrollback
src/urxvt.pm

index ec05894a6ab41c4ba232a071ec4e712e2b4381ee..7ca194df2bfb66f9dc27dfa15c8e75560840ae70 100644 (file)
@@ -4464,6 +4464,9 @@ const unsigned int MAX_PTY_WRITE = 255; // minimum MAX_INPUT
 void
 rxvt_term::tt_write (const char *data, unsigned int len)
 {
+  if (HOOK_INVOKE ((this, HOOK_TT_WRITE, DT_STR_LEN, data, len, DT_END)))
+    return;
+
   if (pty.pty < 0)
     return;
 
index abffd47a867d513dad2704650aacb9d24b132fbf..50b4e0964868401d10e1ae47f39709e690a9a1fd 100644 (file)
@@ -17,6 +17,7 @@
   def (LINE_UPDATE)
   def (ADD_LINES)
   def (OSC_SEQ)
+  def (TT_WRITE)
 
   def (REFRESH_BEGIN)
   def (REFRESH_END)
index ec96f2850900d886a3e0457234c0a89881ae089c..69906d8a49717c32225bbac44dde831b321ca1e5 100644 (file)
@@ -40,6 +40,7 @@ sub enter {
 
    $self->enable (
       key_press     => \&key_press,
+      tt_write      => \&tt_write,
       refresh_begin => \&refresh,
       refresh_end   => \&refresh,
    );
@@ -52,7 +53,7 @@ sub leave {
 
    delete $self->{overlay};
 
-   $self->disable ("key_press", "refresh_begin", "refresh_end");
+   $self->disable ("key_press", "tt_write", "refresh_begin", "refresh_end");
 
    $self->pty_ev_events ($self->{pty_ev_events});
    $self->want_refresh;
@@ -73,8 +74,10 @@ sub search {
 
    delete $self->{found};
 
+   my $search = $self->special_encode ($self->{search});
+
    no re 'eval'; # just to be sure
-   my $re = qr/$self->{search}/;
+   my $re = qr/$search/;
 
    while ($row > -$self->nsaved) {
       my $line = $self->line ($row)
@@ -122,8 +125,7 @@ sub key_press {
          substr $self->{search}, -1, 1, "";
          $self->search;
       } elsif ($string ne "") {
-         $self->{search} .= $string;
-         $self->search;
+         return;
       }
    } else {
       if ($keysym == 0xff0d || $keysym == 0xff8d) {
@@ -154,4 +156,13 @@ sub key_press {
    1
 }
 
+sub tt_write {
+   my ($self, $data) = @_;
+
+   $self->{search} .= $self->locale_decode ($data);
+   $self->search;
+
+   1
+}
+
 
index f6c7fc387b18fb701a8bbad68d95418487f5c311..369eee9514987adff3b28f697774d3266a783bb2 100644 (file)
@@ -265,6 +265,11 @@ and calling C<< $term->scr_add_lines >> yourself. Please note that this
 might be very slow, however, as your hook is called for B<all> text being
 output.
 
+=item on_tt_write $term, $octets
+
+Called whenever some data is written to the tty/pty and can be used to
+suppress or filter tty input.
+
 =item on_line_update $term, $row
 
 Called whenever a line was updated or changed. Can be used to filter