ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/urxvt.pm
(Generate patch)

Comparing rxvt-unicode/src/urxvt.pm (file contents):
Revision 1.61 by root, Mon Jan 9 01:36:56 2006 UTC vs.
Revision 1.70 by root, Mon Jan 9 23:00:07 2006 UTC

65 65
66=item selection-popup (enabled by default) 66=item selection-popup (enabled by default)
67 67
68Binds a popup menu to Ctrl-Button3 that lets you convert the selection 68Binds a popup menu to Ctrl-Button3 that lets you convert the selection
69text into various other formats/action. 69text into various other formats/action.
70
71=item searchable-scrollback (enabled by default)
72
73Adds regex search functionality to the scrollback buffer, triggered by a
74hotkey (default: C<M-s>). When in search mode, terminal input/output is
75suspended, C</> starts an incremental regex search, C<n> searches further,
76C<p> jumps to the previous match. C<enter> leaves search mode at the
77current position and C<escape> returns to the original position.
70 78
71=item digital-clock 79=item digital-clock
72 80
73Displays a digital clock using the built-in overlay. 81Displays a digital clock using the built-in overlay.
74 82
124Either binary data or - more common - a text string encoded in a 132Either binary data or - more common - a text string encoded in a
125locale-specific way. 133locale-specific way.
126 134
127=back 135=back
128 136
137=head2 Extension Objects
138
139Very perl extension is a perl class. A separate perl object is created
140for each terminal and each extension and passed as the first parameter to
141hooks. So extensions can use their C<$self> object without having to think
142about other extensions, with the exception of methods and members that
143begin with an underscore character C<_>: these are reserved for internal
144use.
145
146Although it isn't a C<urxvt::term> object, you can call all methods of the
147C<urxvt::term> class on this object.
148
149It has the following methods and data members:
150
151=over 4
152
153=item $urxvt_term = $self->{term}
154
155Returns the C<urxvt::term> object associated with this instance of the
156extension. This member I<must not> be changed in any way.
157
158=item $self->enable ($hook_name => $cb, [$hook_name => $cb..])
159
160Dynamically enable the given hooks (named without the C<on_> prefix) for
161this extension, replacing any previous hook. This is useful when you want
162to overwrite time-critical hooks only temporarily.
163
164=item $self->disable ($hook_name[, $hook_name..])
165
166Dynamically disable the given hooks.
167
168=back
169
129=head2 Hooks 170=head2 Hooks
130 171
131The following subroutines can be declared in extension files, and will be 172The following subroutines can be declared in extension files, and will be
132called whenever the relevant event happens. 173called whenever the relevant event happens.
133 174
134The first argument passed to them is an object private to each terminal 175The first argument passed to them is an extension oject as described in
135and extension package. You can call all C<urxvt::term> methods on it, but 176the in the C<Extension Objects> section.
136its not a real C<urxvt::term> object. Instead, the real C<urxvt::term>
137object that is shared between all packages is stored in the C<term>
138member. It is, however, blessed intot he package of the extension script,
139so for all practical purposes you can treat an extension script as a class.
140 177
141All of them must return a boolean value. If it is true, then the event 178B<All> of these hooks must return a boolean value. If it is true, then the
142counts as being I<consumed>, and the invocation of other hooks is skipped, 179event counts as being I<consumed>, and the invocation of other hooks is
143and the relevant action might not be carried out by the C++ code. 180skipped, and the relevant action might not be carried out by the C++ code.
144 181
145When in doubt, return a false value (preferably C<()>). 182I<< When in doubt, return a false value (preferably C<()>). >>
146 183
147=over 4 184=over 4
148 185
149=item on_init $term 186=item on_init $term
150 187
267=item on_focus_out $term 304=item on_focus_out $term
268 305
269Called wheneever the window loses keyboard focus, before rxvt-unicode does 306Called wheneever the window loses keyboard focus, before rxvt-unicode does
270focus out processing. 307focus out processing.
271 308
272=item on_key_press $term, $event, $octets 309=item on_key_press $term, $event, $keysym, $octets
273 310
274=item on_key_release $term, $event 311=item on_key_release $term, $event, $keysym
275 312
276=item on_button_press $term, $event 313=item on_button_press $term, $event
277 314
278=item on_button_release $term, $event 315=item on_button_release $term, $event
279 316
333that calls this function. 370that calls this function.
334 371
335Using this function has the advantage that its output ends up in the 372Using this function has the advantage that its output ends up in the
336correct place, e.g. on stderr of the connecting urxvtc client. 373correct place, e.g. on stderr of the connecting urxvtc client.
337 374
375=item $is_safe = urxvt::safe
376
377Returns true when it is safe to do potentially unsafe things, such as
378evaluating perl code specified by the user. This is true when urxvt was
379started setuid or setgid.
380
338=item $time = urxvt::NOW 381=item $time = urxvt::NOW
339 382
340Returns the "current time" (as per the event loop). 383Returns the "current time" (as per the event loop).
341 384
342=item urxvt::CurrentTime 385=item urxvt::CurrentTime
405 448
406package urxvt; 449package urxvt;
407 450
408use utf8; 451use utf8;
409use strict; 452use strict;
453use Carp ();
410use Scalar::Util (); 454use Scalar::Util ();
411use List::Util (); 455use List::Util ();
412 456
413our $VERSION = 1; 457our $VERSION = 1;
414our $TERM; 458our $TERM;
415our @HOOKNAME; 459our @HOOKNAME;
460our %HOOKTYPE = map +($HOOKNAME[$_] => $_), 0..$#HOOKNAME;
416our %OPTION; 461our %OPTION;
417our $LIBDIR; 462our $LIBDIR;
418 463
419BEGIN { 464BEGIN {
420 urxvt->bootstrap; 465 urxvt->bootstrap;
439sub verbose { 484sub verbose {
440 my ($level, $msg) = @_; 485 my ($level, $msg) = @_;
441 warn "$msg\n" if $level <= $verbosity; 486 warn "$msg\n" if $level <= $verbosity;
442} 487}
443 488
444# find on_xxx subs in the package and register them
445# as hooks
446sub register_package($) {
447 my ($pkg) = @_;
448
449 for my $htype (0.. $#HOOKNAME) {
450 my $name = $HOOKNAME[$htype];
451
452 my $ref = $pkg->can ("on_" . lc $name)
453 or next;
454
455 $TERM->{_hook}[$htype]{$pkg} = $ref;
456 $hook_count[$htype]++
457 or set_should_invoke $htype, 1;
458 }
459}
460
461my $extension_pkg = "extension0000"; 489my $extension_pkg = "extension0000";
462my %extension_pkg; 490my %extension_pkg;
463 491
464# load a single script into its own package, once only 492# load a single script into its own package, once only
465sub extension_package($) { 493sub extension_package($) {
471 verbose 3, "loading extension '$path' into package '$pkg'"; 499 verbose 3, "loading extension '$path' into package '$pkg'";
472 500
473 open my $fh, "<:raw", $path 501 open my $fh, "<:raw", $path
474 or die "$path: $!"; 502 or die "$path: $!";
475 503
504 my $source = untaint
476 my $source = untaint "package $pkg; use strict; use utf8;\n" 505 "package $pkg; use strict; use utf8;\n"
477 . "use base urxvt::term::proxy::;\n" 506 . "use base urxvt::term::proxy::;\n"
478 . "#line 1 \"$path\"\n{\n" 507 . "#line 1 \"$path\"\n{\n"
479 . (do { local $/; <$fh> }) 508 . (do { local $/; <$fh> })
480 . "\n};\n1"; 509 . "\n};\n1";
481 510
511 eval $source
482 eval $source or die "$path: $@"; 512 or die "$path: $@";
483 513
484 $pkg 514 $pkg
485 } 515 }
486} 516}
487 517
493 my $htype = shift; 523 my $htype = shift;
494 524
495 if ($htype == 0) { # INIT 525 if ($htype == 0) { # INIT
496 my @dirs = ((split /:/, $TERM->resource ("perl_lib")), "$LIBDIR/perl"); 526 my @dirs = ((split /:/, $TERM->resource ("perl_lib")), "$LIBDIR/perl");
497 527
498 my %want_ext; 528 my %ext_arg;
499 529
500 for (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2) { 530 for (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2) {
501 if ($_ eq "default") { 531 if ($_ eq "default") {
502 $want_ext{$_}++ for qw(selection option-popup selection-popup); 532 $ext_arg{$_} ||= [] for qw(selection option-popup selection-popup searchable-scrollback);
503 } elsif (/^-(.*)$/) { 533 } elsif (/^-(.*)$/) {
504 delete $want_ext{$1}; 534 delete $ext_arg{$1};
535 } elsif (/^([^<]+)<(.*)>$/) {
536 push @{ $ext_arg{$1} }, $2;
505 } else { 537 } else {
506 $want_ext{$_}++; 538 $ext_arg{$_} ||= [];
507 } 539 }
508 } 540 }
509 541
510 for my $ext (keys %want_ext) { 542 while (my ($ext, $argv) = each %ext_arg) {
511 my @files = grep -f $_, map "$_/$ext", @dirs; 543 my @files = grep -f $_, map "$_/$ext", @dirs;
512 544
513 if (@files) { 545 if (@files) {
514 register_package extension_package $files[0]; 546 $TERM->register_package (extension_package $files[0], $argv);
515 } else { 547 } else {
516 warn "perl extension '$ext' not found in perl library search path\n"; 548 warn "perl extension '$ext' not found in perl library search path\n";
517 } 549 }
518 } 550 }
519 551
528 if $verbosity >= 10; 560 if $verbosity >= 10;
529 561
530 keys %$cb; 562 keys %$cb;
531 563
532 while (my ($pkg, $cb) = each %$cb) { 564 while (my ($pkg, $cb) = each %$cb) {
533 eval { 565 $retval = eval { $cb->($TERM->{_pkg}{$pkg}, @_) }
534 $retval = $cb->(
535 $TERM->{_pkg}{$pkg} ||= do {
536 my $proxy = bless { }, $pkg;
537 Scalar::Util::weaken ($proxy->{term} = $TERM);
538 $proxy
539 },
540 @_,
541 ) and last; 566 and last;
542 }; 567
543 if ($@) { 568 if ($@) {
544 $TERM->ungrab; # better to lose the grab than the session 569 $TERM->ungrab; # better to lose the grab than the session
545 warn $@; 570 warn $@;
546 } 571 }
547 } 572 }
548 } 573 }
549 574
550 if ($htype == 1) { # DESTROY 575 if ($htype == 1) { # DESTROY
551 # remove hooks if unused
552 if (my $hook = $TERM->{_hook}) { 576 if (my $hook = delete $TERM->{_hook}) {
553 for my $htype (0..$#$hook) { 577 for my $htype (0..$#$hook) {
554 $hook_count[$htype] -= scalar keys %{ $hook->[$htype] || {} } 578 $hook_count[$htype] -= scalar keys %{ $hook->[$htype] || {} }
555 or set_should_invoke $htype, 0; 579 or set_should_invoke $htype, 0;
556 } 580 }
557 } 581 }
566 $retval 590 $retval
567} 591}
568 592
569# urxvt::term::proxy 593# urxvt::term::proxy
570 594
571sub urxvt::term::proxy::AUTOLOAD { 595package urxvt::term::proxy;
572 $urxvt::term::proxy::AUTOLOAD =~ /:([^:]+)$/ 596
597sub enable {
598 my ($self, %hook) = @_;
599 my $pkg = $self->{_pkg};
600
601 while (my ($name, $cb) = each %hook) {
602 my $htype = $HOOKTYPE{uc $name};
603 defined $htype
604 or Carp::croak "unsupported hook type '$name'";
605
606 unless (exists $self->{term}{_hook}[$htype]{$pkg}) {
607 $hook_count[$htype]++
608 or urxvt::set_should_invoke $htype, 1;
609 }
610
611 $self->{term}{_hook}[$htype]{$pkg} = $cb;
612 }
613}
614
615sub disable {
616 my ($self, @hook) = @_;
617 my $pkg = $self->{_pkg};
618
619 for my $name (@hook) {
620 my $htype = $HOOKTYPE{uc $name};
621 defined $htype
622 or Carp::croak "unsupported hook type '$name'";
623
624 if (delete $self->{term}{_hook}[$htype]{$pkg}) {
625 --$hook_count[$htype]
626 or urxvt::set_should_invoke $htype, 0;
627 }
628 }
629}
630
631our $AUTOLOAD;
632
633sub AUTOLOAD {
634 $AUTOLOAD =~ /:([^:]+)$/
573 or die "FATAL: \$AUTOLOAD '$urxvt::term::proxy::AUTOLOAD' unparsable"; 635 or die "FATAL: \$AUTOLOAD '$AUTOLOAD' unparsable";
574 636
575 eval qq{ 637 eval qq{
576 sub $urxvt::term::proxy::AUTOLOAD { 638 sub $AUTOLOAD {
577 my \$proxy = shift; 639 my \$proxy = shift;
578 \$proxy->{term}->$1 (\@_) 640 \$proxy->{term}->$1 (\@_)
579 } 641 }
580 1 642 1
581 } or die "FATAL: unable to compile method forwarder: $@"; 643 } or die "FATAL: unable to compile method forwarder: $@";
582 644
583 goto &$urxvt::term::proxy::AUTOLOAD; 645 goto &$AUTOLOAD;
584} 646}
585 647
586sub urxvt::term::proxy::DESTROY { 648sub DESTROY {
587 # nop 649 # nop
588} 650}
589 651
590# urxvt::destroy_hook 652# urxvt::destroy_hook
591 653
658 ${$_[0]}++; 720 ${$_[0]}++;
659} 721}
660 722
661sub urxvt::anyevent::condvar::wait { 723sub urxvt::anyevent::condvar::wait {
662 unless (${$_[0]}) { 724 unless (${$_[0]}) {
663 require Carp;
664 Carp::croak ("AnyEvent->condvar blocking wait unsupported in urxvt, use a non-blocking API"); 725 Carp::croak "AnyEvent->condvar blocking wait unsupported in urxvt, use a non-blocking API";
665 } 726 }
666} 727}
667 728
668package urxvt::term; 729package urxvt::term;
669 730
670=head2 The C<urxvt::term> Class 731=head2 The C<urxvt::term> Class
671 732
672=over 4 733=over 4
734
735=cut
736
737# find on_xxx subs in the package and register them
738# as hooks
739sub register_package {
740 my ($self, $pkg, $argv) = @_;
741
742 my $proxy = bless {
743 _pkg => $pkg,
744 argv => $argv,
745 }, $pkg;
746 Scalar::Util::weaken ($proxy->{term} = $self);
747
748 $self->{_pkg}{$pkg} = $proxy;
749
750 for my $name (@HOOKNAME) {
751 if (my $ref = $pkg->can ("on_" . lc $name)) {
752 $proxy->enable ($name => $ref);
753 }
754 }
755}
673 756
674=item $term->destroy 757=item $term->destroy
675 758
676Destroy the terminal object (close the window, free resources etc.). 759Destroy the terminal object (close the window, free resources etc.).
677 760
731 my ($self, $name) = (shift, shift); 814 my ($self, $name) = (shift, shift);
732 unshift @_, $self, $name, ($name =~ s/\s*\+\s*(\d+)$// ? $1 : 0); 815 unshift @_, $self, $name, ($name =~ s/\s*\+\s*(\d+)$// ? $1 : 0);
733 &urxvt::term::_resource 816 &urxvt::term::_resource
734} 817}
735 818
819=item $success = $term->parse_keysym ($keysym_spec, $command_string)
820
821Adds a keymap translation exactly as specified via a resource. See the
822C<keysym> resource in the @@RXVT_NAME@@(1) manpage.
823
736=item $rend = $term->rstyle ([$new_rstyle]) 824=item $rend = $term->rstyle ([$new_rstyle])
737 825
738Return and optionally change the current rendition. Text that is output by 826Return and optionally change the current rendition. Text that is output by
739the terminal application will use this style. 827the terminal application will use this style.
740 828
759 847
760=item $oldtext = $term->selection ([$newtext]) 848=item $oldtext = $term->selection ([$newtext])
761 849
762Return the current selection text and optionally replace it by C<$newtext>. 850Return the current selection text and optionally replace it by C<$newtext>.
763 851
764#=item $term->overlay ($x, $y, $text) 852=item $term->overlay_simple ($x, $y, $text)
765# 853
766#Create a simple multi-line overlay box. See the next method for details. 854Create a simple multi-line overlay box. See the next method for details.
767# 855
768#=cut 856=cut
769# 857
770#sub urxvt::term::scr_overlay { 858sub overlay_simple {
771# my ($self, $x, $y, $text) = @_; 859 my ($self, $x, $y, $text) = @_;
772# 860
773# my @lines = split /\n/, $text; 861 my @lines = split /\n/, $text;
774# 862
775# my $w = 0; 863 my $w = List::Util::max map $self->strwidth ($_), @lines;
776# for (map $self->strwidth ($_), @lines) { 864
777# $w = $_ if $w < $_;
778# }
779#
780# $self->scr_overlay_new ($x, $y, $w, scalar @lines); 865 my $overlay = $self->overlay ($x, $y, $w, scalar @lines);
781# $self->scr_overlay_set (0, $_, $lines[$_]) for 0.. $#lines; 866 $overlay->set (0, $_, $lines[$_]) for 0.. $#lines;
782#} 867
868 $overlay
869}
783 870
784=item $term->overlay ($x, $y, $width, $height[, $rstyle[, $border]]) 871=item $term->overlay ($x, $y, $width, $height[, $rstyle[, $border]])
785 872
786Create a new (empty) overlay at the given position with the given 873Create a new (empty) overlay at the given position with the given
787width/height. C<$rstyle> defines the initial rendition style 874width/height. C<$rstyle> defines the initial rendition style
854 941
855=item $string = $term->locale_decode ($octets) 942=item $string = $term->locale_decode ($octets)
856 943
857Convert the given locale-encoded octets into a perl string. 944Convert the given locale-encoded octets into a perl string.
858 945
946=item $term->scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle])
947
948XORs the rendition values in the given span with the provided value
949(default: C<RS_RVid>). Useful in refresh hooks to provide effects similar
950to the selection.
951
952=item $term->scr_xor_rect ($beg_row, $beg_col, $end_row, $end_col[, $rstyle1[, $rstyle2]])
953
954Similar to C<scr_xor_span>, but xors a rectangle instead. Trailing
955whitespace will additionally be xored with the C<$rstyle2>, which defaults
956to C<RS_RVid | RS_Uline>, which removes reverse video again and underlines
957it instead.
958
959=item $term->scr_bell
960
961Ring the bell!
962
859=item $term->scr_add_lines ($string) 963=item $term->scr_add_lines ($string)
860 964
861Write the given text string to the screen, as if output by the application 965Write the given text string to the screen, as if output by the application
862running inside the terminal. It may not contain command sequences (escape 966running inside the terminal. It may not contain command sequences (escape
863codes), but is free to use line feeds, carriage returns and tabs. The 967codes), but is free to use line feeds, carriage returns and tabs. The
877 981
878Write the octets given in C<$data> to the tty (i.e. as program input). To 982Write the octets given in C<$data> to the tty (i.e. as program input). To
879pass characters instead of octets, you should convert your strings first 983pass characters instead of octets, you should convert your strings first
880to the locale-specific encoding using C<< $term->locale_encode >>. 984to the locale-specific encoding using C<< $term->locale_encode >>.
881 985
986=item $old_events = $term->pty_ev_events ([$new_events])
987
988Replaces the event mask of the pty watcher by the given event mask. Can
989be used to suppress input and output handling to the pty/tty. See the
990description of C<< urxvt::timer->events >>. Make sure to always restore
991the previous value.
992
882=item $windowid = $term->parent 993=item $windowid = $term->parent
883 994
884Return the window id of the toplevel window. 995Return the window id of the toplevel window.
885 996
886=item $windowid = $term->vt 997=item $windowid = $term->vt
910=item $nrow_plus_saveLines = $term->total_rows 1021=item $nrow_plus_saveLines = $term->total_rows
911 1022
912=item $lines_in_scrollback = $term->nsaved 1023=item $lines_in_scrollback = $term->nsaved
913 1024
914Return various integers describing terminal characteristics. 1025Return various integers describing terminal characteristics.
1026
1027=item $lc_ctype = $term->locale
1028
1029Returns the LC_CTYPE category string used by this rxvt-unicode.
1030
1031=item $x_display = $term->display_id
1032
1033Return the DISPLAY used by rxvt-unicode.
915 1034
916=item $modifiermask = $term->ModLevel3Mask 1035=item $modifiermask = $term->ModLevel3Mask
917 1036
918=item $modifiermask = $term->ModMetaMask 1037=item $modifiermask = $term->ModMetaMask
919 1038
1109Converts rxvt-unicodes text reprsentation into a perl string. See 1228Converts rxvt-unicodes text reprsentation into a perl string. See
1110C<< $term->ROW_t >> for details. 1229C<< $term->ROW_t >> for details.
1111 1230
1112=item $success = $term->grab_button ($button, $modifiermask) 1231=item $success = $term->grab_button ($button, $modifiermask)
1113 1232
1114Registers a synchronous button grab. See XGrabButton. 1233Registers a synchronous button grab. See the XGrabButton manpage.
1115 1234
1116=item $success = $term->grab ($eventtime[, $sync]) 1235=item $success = $term->grab ($eventtime[, $sync])
1117 1236
1118Calls XGrabPointer and XGrabKeyboard in asynchronous (default) or 1237Calls XGrabPointer and XGrabKeyboard in asynchronous (default) or
1119synchronous (C<$sync> is true). Also remembers the grab timestampe. 1238synchronous (C<$sync> is true). Also remembers the grab timestampe.
1162} 1281}
1163 1282
1164sub add_separator { 1283sub add_separator {
1165 my ($self, $sep) = @_; 1284 my ($self, $sep) = @_;
1166 1285
1167 $sep ||= ""; 1286 $sep ||= "=";
1168 1287
1169 $self->add_item ({ 1288 $self->add_item ({
1170 rend => { normal => "\x1b[0;30;47m", hover => "\x1b[0;30;47m", active => "\x1b[0;30;47m" }, 1289 rend => { normal => "\x1b[0;30;47m", hover => "\x1b[0;30;47m", active => "\x1b[0;30;47m" },
1171 text => "", 1290 text => "",
1172 render => sub { $sep x $urxvt::TERM->ncol }, 1291 render => sub { $sep x $self->{term}->ncol },
1173 activate => sub { }, 1292 activate => sub { },
1174 }); 1293 });
1175} 1294}
1176 1295
1177sub add_title { 1296sub add_title {
1185} 1304}
1186 1305
1187sub add_button { 1306sub add_button {
1188 my ($self, $text, $cb) = @_; 1307 my ($self, $text, $cb) = @_;
1189 1308
1190 $self->add_item ({ type => "button", text => "[ $text ]", activate => $cb}); 1309 $self->add_item ({ type => "button", text => $text, activate => $cb});
1191} 1310}
1192 1311
1193sub add_toggle { 1312sub add_toggle {
1194 my ($self, $text, $cb, $value) = @_; 1313 my ($self, $text, $cb, $value) = @_;
1195 1314
1207sub show { 1326sub show {
1208 my ($self) = @_; 1327 my ($self) = @_;
1209 1328
1210 local $urxvt::popup::self = $self; 1329 local $urxvt::popup::self = $self;
1211 1330
1331 local $ENV{LC_ALL} = $self->{term}->locale;
1332
1212 urxvt->new ("--perl-lib" => "", "--perl-ext-common" => "", "-pty-fd" => -1, "-sl" => 0, "-b" => 0, 1333 urxvt->new ("--perl-lib" => "", "--perl-ext-common" => "", "-pty-fd" => -1, "-sl" => 0, "-b" => 0,
1213 "--transient-for" => $self->{term}->parent, 1334 "--transient-for" => $self->{term}->parent,
1335 "-display" => $self->{term}->display_id,
1214 "-pe" => "urxvt-popup") 1336 "-pe" => "urxvt-popup")
1215 or die "unable to create popup window\n"; 1337 or die "unable to create popup window\n";
1216} 1338}
1217 1339
1218sub DESTROY { 1340sub DESTROY {
1281 1403
1282 $term->{socket} = ... 1404 $term->{socket} = ...
1283 $term->{iow} = urxvt::iow 1405 $term->{iow} = urxvt::iow
1284 ->new 1406 ->new
1285 ->fd (fileno $term->{socket}) 1407 ->fd (fileno $term->{socket})
1286 ->events (1) # wait for read data 1408 ->events (urxvt::EVENT_READ)
1287 ->start 1409 ->start
1288 ->cb (sub { 1410 ->cb (sub {
1289 my ($iow, $revents) = @_; 1411 my ($iow, $revents) = @_;
1290 # $revents must be 1 here, no need to check 1412 # $revents must be 1 here, no need to check
1291 sysread $term->{socket}, my $buf, 8192 1413 sysread $term->{socket}, my $buf, 8192
1308 1430
1309Set the filedescriptor (not handle) to watch. 1431Set the filedescriptor (not handle) to watch.
1310 1432
1311=item $iow = $iow->events ($eventmask) 1433=item $iow = $iow->events ($eventmask)
1312 1434
1313Set the event mask to watch. Bit #0 (value C<1>) enables watching for read 1435Set the event mask to watch. The only allowed values are
1314data, Bit #1 (value C<2>) enables watching for write data. 1436C<urxvt::EVENT_READ> and C<urxvt::EVENT_WRITE>, which might be ORed
1437together, or C<urxvt::EVENT_NONE>.
1315 1438
1316=item $iow = $iow->start 1439=item $iow = $iow->start
1317 1440
1318Start watching for requested events on the given handle. 1441Start watching for requested events on the given handle.
1319 1442

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines