From 08a264223a6301e84a7d71b762334413feca4df2 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 9 Jan 2006 23:30:01 +0000 Subject: [PATCH] *** empty log message *** --- src/command.C | 3 +++ src/hookinc.h | 1 + src/perl/searchable-scrollback | 19 +++++++++++++++---- src/urxvt.pm | 5 +++++ 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/command.C b/src/command.C index ec05894a..7ca194df 100644 --- a/src/command.C +++ b/src/command.C @@ -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; diff --git a/src/hookinc.h b/src/hookinc.h index abffd47a..50b4e096 100644 --- a/src/hookinc.h +++ b/src/hookinc.h @@ -17,6 +17,7 @@ def (LINE_UPDATE) def (ADD_LINES) def (OSC_SEQ) + def (TT_WRITE) def (REFRESH_BEGIN) def (REFRESH_END) diff --git a/src/perl/searchable-scrollback b/src/perl/searchable-scrollback index ec96f285..69906d8a 100644 --- a/src/perl/searchable-scrollback +++ b/src/perl/searchable-scrollback @@ -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 +} + diff --git a/src/urxvt.pm b/src/urxvt.pm index f6c7fc38..369eee95 100644 --- a/src/urxvt.pm +++ b/src/urxvt.pm @@ -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 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 -- 2.34.1