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.60 by root, Mon Jan 9 01:21:43 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
423 my $msg = join "", @_; 428 my $msg = join "", @_;
424 $msg .= "\n" 429 $msg .= "\n"
425 unless $msg =~ /\n$/; 430 unless $msg =~ /\n$/;
426 urxvt::warn ($msg); 431 urxvt::warn ($msg);
427 }; 432 };
433
434 delete $ENV{IFS};
435 delete $ENV{CDPATH};
436 delete $ENV{BASH_ENV};
437 $ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin:/opt/sbin";
428} 438}
429 439
430my @hook_count; 440my @hook_count;
431my $verbosity = $ENV{URXVT_PERL_VERBOSITY}; 441my $verbosity = $ENV{URXVT_PERL_VERBOSITY};
432 442
465 verbose 3, "loading extension '$path' into package '$pkg'"; 475 verbose 3, "loading extension '$path' into package '$pkg'";
466 476
467 open my $fh, "<:raw", $path 477 open my $fh, "<:raw", $path
468 or die "$path: $!"; 478 or die "$path: $!";
469 479
470 my $source = "package $pkg; use strict; use utf8;\n" 480 my $source = untaint "package $pkg; use strict; use utf8;\n"
471 . "use base urxvt::term::proxy::;\n" 481 . "use base urxvt::term::proxy::;\n"
472 . "#line 1 \"$path\"\n{\n" 482 . "#line 1 \"$path\"\n{\n"
473 . (do { local $/; <$fh> }) 483 . (do { local $/; <$fh> })
474 . "\n};\n1"; 484 . "\n};\n1";
475 485
491 501
492 my %want_ext; 502 my %want_ext;
493 503
494 for (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2) { 504 for (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2) {
495 if ($_ eq "default") { 505 if ($_ eq "default") {
496 $want_ext{$_}++ for qw(selection option-popup); 506 $want_ext{$_}++ for qw(selection option-popup selection-popup);
497 } elsif (/^-(.*)$/) { 507 } elsif (/^-(.*)$/) {
498 delete $want_ext{$1}; 508 delete $want_ext{$1};
499 } else { 509 } else {
500 $want_ext{$_}++; 510 $want_ext{$_}++;
501 } 511 }
532 $proxy 542 $proxy
533 }, 543 },
534 @_, 544 @_,
535 ) and last; 545 ) and last;
536 }; 546 };
537 warn $@ if $@;#d# 547 if ($@) {
548 $TERM->ungrab; # better to lose the grab than the session
549 warn $@;
550 }
538 } 551 }
539 } 552 }
540 553
541 if ($htype == 1) { # DESTROY 554 if ($htype == 1) { # DESTROY
542 # remove hooks if unused 555 # remove hooks if unused
572 } or die "FATAL: unable to compile method forwarder: $@"; 585 } or die "FATAL: unable to compile method forwarder: $@";
573 586
574 goto &$urxvt::term::proxy::AUTOLOAD; 587 goto &$urxvt::term::proxy::AUTOLOAD;
575} 588}
576 589
590sub urxvt::term::proxy::DESTROY {
591 # nop
592}
593
577# urxvt::destroy_hook 594# urxvt::destroy_hook
578 595
579sub urxvt::destroy_hook::DESTROY { 596sub urxvt::destroy_hook::DESTROY {
580 ${$_[0]}->(); 597 ${$_[0]}->();
581} 598}
582 599
583sub urxvt::destroy_hook(&) { 600sub urxvt::destroy_hook(&) {
584 bless \shift, urxvt::destroy_hook:: 601 bless \shift, urxvt::destroy_hook::
585} 602}
586 603
587# urxvt::anyevent
588
589package urxvt::anyevent; 604package urxvt::anyevent;
605
606=head2 The C<urxvt::anyevent> Class
607
608The sole purpose of this class is to deliver an interface to the
609C<AnyEvent> module - any module using it will work inside urxvt without
610further work. The only exception is that you cannot wait on condition
611variables, but non-blocking condvar use is ok. What this means is that you
612cannot use blocking APIs, but the non-blocking variant should work.
613
614=cut
590 615
591our $VERSION = 1; 616our $VERSION = 1;
592 617
593$INC{"urxvt/anyevent.pm"} = 1; # mark us as there 618$INC{"urxvt/anyevent.pm"} = 1; # mark us as there
594push @AnyEvent::REGISTRY, [urxvt => urxvt::anyevent::]; 619push @AnyEvent::REGISTRY, [urxvt => urxvt::anyevent::];
1147 1172
1148 my $item; $item = { 1173 my $item; $item = {
1149 type => "button", 1174 type => "button",
1150 text => " $text", 1175 text => " $text",
1151 value => $value, 1176 value => $value,
1152 render => sub { ($item->{value} ? "* " : " ") . $text }, 1177 render => sub { ($_[0]{value} ? "* " : " ") . $text },
1153 activate => sub { $cb->($item->{value} = !$item->{value}); }, 1178 activate => sub { $cb->($_[0]{value} = !$_[0]{value}); },
1154 }; 1179 };
1155 1180
1156 $self->add_item ($item); 1181 $self->add_item ($item);
1157} 1182}
1158 1183
1168} 1193}
1169 1194
1170sub DESTROY { 1195sub DESTROY {
1171 my ($self) = @_; 1196 my ($self) = @_;
1172 1197
1198 delete $self->{term}{_destroy}{$self};
1173 $self->{term}->ungrab; 1199 $self->{term}->ungrab;
1174} 1200}
1175 1201
1176=head2 The C<urxvt::timer> Class 1202=head2 The C<urxvt::timer> Class
1177 1203
1281This variable controls the verbosity level of the perl extension. Higher 1307This variable controls the verbosity level of the perl extension. Higher
1282numbers indicate more verbose output. 1308numbers indicate more verbose output.
1283 1309
1284=over 4 1310=over 4
1285 1311
1286=item =0 - only fatal messages 1312=item == 0 - fatal messages
1287 1313
1288=item =3 - script loading and management 1314=item >= 3 - script loading and management
1289 1315
1290=item =10 - all events received 1316=item >=10 - all events received
1291 1317
1292=back 1318=back
1293 1319
1294=head1 AUTHOR 1320=head1 AUTHOR
1295 1321

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines