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.55 by root, Sun Jan 8 05:50:27 2006 UTC vs.
Revision 1.61 by root, Mon Jan 9 01:36:56 2006 UTC

58 58
59=back 59=back
60 60
61=item option-popup (enabled by default) 61=item option-popup (enabled by default)
62 62
63Binds a popup menu to Ctrl-Button3 that lets you toggle (some) options at 63Binds a popup menu to Ctrl-Button2 that lets you toggle (some) options at
64runtime. 64runtime.
65
66=item selection-popup (enabled by default)
67
68Binds a popup menu to Ctrl-Button3 that lets you convert the selection
69text into various other formats/action.
65 70
66=item digital-clock 71=item digital-clock
67 72
68Displays a digital clock using the built-in overlay. 73Displays a digital clock using the built-in overlay.
69 74
199than the scroll back buffer or the terminal. 204than the scroll back buffer or the terminal.
200 205
201It is called before lines are scrolled out (so rows 0 .. min ($lines - 1, 206It is called before lines are scrolled out (so rows 0 .. min ($lines - 1,
202$nrow - 1) represent the lines to be scrolled out). C<$saved> is the total 207$nrow - 1) represent the lines to be scrolled out). C<$saved> is the total
203number of lines that will be in the scrollback buffer. 208number of lines that will be in the scrollback buffer.
204
205=item on_tty_activity $term *NYI*
206
207Called whenever the program(s) running in the urxvt window send output.
208 209
209=item on_osc_seq $term, $string 210=item on_osc_seq $term, $string
210 211
211Called whenever the B<ESC ] 777 ; string ST> command sequence (OSC = 212Called whenever the B<ESC ] 777 ; string ST> command sequence (OSC =
212operating system command) is processed. Cursor position and other state 213operating system command) is processed. Cursor position and other state
423 my $msg = join "", @_; 424 my $msg = join "", @_;
424 $msg .= "\n" 425 $msg .= "\n"
425 unless $msg =~ /\n$/; 426 unless $msg =~ /\n$/;
426 urxvt::warn ($msg); 427 urxvt::warn ($msg);
427 }; 428 };
429
430 delete $ENV{IFS};
431 delete $ENV{CDPATH};
432 delete $ENV{BASH_ENV};
433 $ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin:/opt/sbin";
428} 434}
429 435
430my @hook_count; 436my @hook_count;
431my $verbosity = $ENV{URXVT_PERL_VERBOSITY}; 437my $verbosity = $ENV{URXVT_PERL_VERBOSITY};
432 438
465 verbose 3, "loading extension '$path' into package '$pkg'"; 471 verbose 3, "loading extension '$path' into package '$pkg'";
466 472
467 open my $fh, "<:raw", $path 473 open my $fh, "<:raw", $path
468 or die "$path: $!"; 474 or die "$path: $!";
469 475
470 my $source = "package $pkg; use strict; use utf8;\n" 476 my $source = untaint "package $pkg; use strict; use utf8;\n"
471 . "use base urxvt::term::proxy::;\n" 477 . "use base urxvt::term::proxy::;\n"
472 . "#line 1 \"$path\"\n{\n" 478 . "#line 1 \"$path\"\n{\n"
473 . (do { local $/; <$fh> }) 479 . (do { local $/; <$fh> })
474 . "\n};\n1"; 480 . "\n};\n1";
475 481
491 497
492 my %want_ext; 498 my %want_ext;
493 499
494 for (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2) { 500 for (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2) {
495 if ($_ eq "default") { 501 if ($_ eq "default") {
496 $want_ext{$_}++ for qw(selection option-popup); 502 $want_ext{$_}++ for qw(selection option-popup selection-popup);
497 } elsif (/^-(.*)$/) { 503 } elsif (/^-(.*)$/) {
498 delete $want_ext{$1}; 504 delete $want_ext{$1};
499 } else { 505 } else {
500 $want_ext{$_}++; 506 $want_ext{$_}++;
501 } 507 }
532 $proxy 538 $proxy
533 }, 539 },
534 @_, 540 @_,
535 ) and last; 541 ) and last;
536 }; 542 };
537 warn $@ if $@;#d# 543 if ($@) {
544 $TERM->ungrab; # better to lose the grab than the session
545 warn $@;
546 }
538 } 547 }
539 } 548 }
540 549
541 if ($htype == 1) { # DESTROY 550 if ($htype == 1) { # DESTROY
542 # remove hooks if unused 551 # remove hooks if unused
572 } or die "FATAL: unable to compile method forwarder: $@"; 581 } or die "FATAL: unable to compile method forwarder: $@";
573 582
574 goto &$urxvt::term::proxy::AUTOLOAD; 583 goto &$urxvt::term::proxy::AUTOLOAD;
575} 584}
576 585
586sub urxvt::term::proxy::DESTROY {
587 # nop
588}
589
577# urxvt::destroy_hook 590# urxvt::destroy_hook
578 591
579sub urxvt::destroy_hook::DESTROY { 592sub urxvt::destroy_hook::DESTROY {
580 ${$_[0]}->(); 593 ${$_[0]}->();
581} 594}
582 595
583sub urxvt::destroy_hook(&) { 596sub urxvt::destroy_hook(&) {
584 bless \shift, urxvt::destroy_hook:: 597 bless \shift, urxvt::destroy_hook::
585} 598}
586 599
587# urxvt::anyevent
588
589package urxvt::anyevent; 600package urxvt::anyevent;
601
602=head2 The C<urxvt::anyevent> Class
603
604The sole purpose of this class is to deliver an interface to the
605C<AnyEvent> module - any module using it will work inside urxvt without
606further work. The only exception is that you cannot wait on condition
607variables, but non-blocking condvar use is ok. What this means is that you
608cannot use blocking APIs, but the non-blocking variant should work.
609
610=cut
590 611
591our $VERSION = 1; 612our $VERSION = 1;
592 613
593$INC{"urxvt/anyevent.pm"} = 1; # mark us as there 614$INC{"urxvt/anyevent.pm"} = 1; # mark us as there
594push @AnyEvent::REGISTRY, [urxvt => urxvt::anyevent::]; 615push @AnyEvent::REGISTRY, [urxvt => urxvt::anyevent::];
1075 $offset / $self->{ncol} + $self->{beg}, 1096 $offset / $self->{ncol} + $self->{beg},
1076 $offset % $self->{ncol} 1097 $offset % $self->{ncol}
1077 ) 1098 )
1078} 1099}
1079 1100
1080=item ($row, $col) = $line->coord_of ($offset)
1081=item $text = $term->special_encode $string 1101=item $text = $term->special_encode $string
1082 1102
1083Converts a perl string into the special encoding used by rxvt-unicode, 1103Converts a perl string into the special encoding used by rxvt-unicode,
1084where one character corresponds to one screen cell. See 1104where one character corresponds to one screen cell. See
1085C<< $term->ROW_t >> for details. 1105C<< $term->ROW_t >> for details.
1086 1106
1087=item $string = $term->special_decode $text 1107=item $string = $term->special_decode $text
1088 1108
1089Converts rxvt-unicodes text reprsentation into a perl string. See 1109Converts rxvt-unicodes text reprsentation into a perl string. See
1090C<< $term->ROW_t >> for details. 1110C<< $term->ROW_t >> for details.
1111
1112=item $success = $term->grab_button ($button, $modifiermask)
1113
1114Registers a synchronous button grab. See XGrabButton.
1115
1116=item $success = $term->grab ($eventtime[, $sync])
1117
1118Calls XGrabPointer and XGrabKeyboard in asynchronous (default) or
1119synchronous (C<$sync> is true). Also remembers the grab timestampe.
1120
1121=item $term->allow_events_async
1122
1123Calls XAllowEvents with AsyncBoth for the most recent grab.
1124
1125=item $term->allow_events_sync
1126
1127Calls XAllowEvents with SyncBoth for the most recent grab.
1128
1129=item $term->allow_events_replay
1130
1131Calls XAllowEvents with both ReplayPointer and ReplayKeyboard for the most
1132recent grab.
1133
1134=item $term->ungrab
1135
1136Calls XUngrab for the most recent grab. Is called automatically on
1137evaluation errors, as it is better to lose the grab in the error case as
1138the session.
1091 1139
1092=back 1140=back
1093 1141
1094=cut 1142=cut
1095 1143
1147 1195
1148 my $item; $item = { 1196 my $item; $item = {
1149 type => "button", 1197 type => "button",
1150 text => " $text", 1198 text => " $text",
1151 value => $value, 1199 value => $value,
1152 render => sub { ($item->{value} ? "* " : " ") . $text }, 1200 render => sub { ($_[0]{value} ? "* " : " ") . $text },
1153 activate => sub { $cb->($item->{value} = !$item->{value}); }, 1201 activate => sub { $cb->($_[0]{value} = !$_[0]{value}); },
1154 }; 1202 };
1155 1203
1156 $self->add_item ($item); 1204 $self->add_item ($item);
1157} 1205}
1158 1206
1168} 1216}
1169 1217
1170sub DESTROY { 1218sub DESTROY {
1171 my ($self) = @_; 1219 my ($self) = @_;
1172 1220
1221 delete $self->{term}{_destroy}{$self};
1173 $self->{term}->ungrab; 1222 $self->{term}->ungrab;
1174} 1223}
1175 1224
1176=head2 The C<urxvt::timer> Class 1225=head2 The C<urxvt::timer> Class
1177 1226
1281This variable controls the verbosity level of the perl extension. Higher 1330This variable controls the verbosity level of the perl extension. Higher
1282numbers indicate more verbose output. 1331numbers indicate more verbose output.
1283 1332
1284=over 4 1333=over 4
1285 1334
1286=item =0 - only fatal messages 1335=item == 0 - fatal messages
1287 1336
1288=item =3 - script loading and management 1337=item >= 3 - script loading and management
1289 1338
1290=item =10 - all events received 1339=item >=10 - all events received
1291 1340
1292=back 1341=back
1293 1342
1294=head1 AUTHOR 1343=head1 AUTHOR
1295 1344

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines