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.54 by root, Sun Jan 8 01:59:29 2006 UTC vs.
Revision 1.57 by root, Sun Jan 8 08:43:11 2006 UTC

342 342
343=item urxvt::ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, 343=item urxvt::ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask,
344Mod3Mask, Mod4Mask, Mod5Mask, Button1Mask, Button2Mask, Button3Mask, 344Mod3Mask, Mod4Mask, Mod5Mask, Button1Mask, Button2Mask, Button3Mask,
345Button4Mask, Button5Mask, AnyModifier 345Button4Mask, Button5Mask, AnyModifier
346 346
347Various constants for use in X events. 347Various constants for use in X calls and event processing.
348 348
349=back 349=back
350 350
351=head2 RENDITION 351=head2 RENDITION
352 352
407use utf8; 407use utf8;
408use strict; 408use strict;
409use Scalar::Util (); 409use Scalar::Util ();
410use List::Util (); 410use List::Util ();
411 411
412our $VERSION = 1;
412our $TERM; 413our $TERM;
413our @HOOKNAME; 414our @HOOKNAME;
414our %OPTION; 415our %OPTION;
415our $LIBDIR; 416our $LIBDIR;
416 417
469 my $source = "package $pkg; use strict; use utf8;\n" 470 my $source = "package $pkg; use strict; use utf8;\n"
470 . "use base urxvt::term::proxy::;\n" 471 . "use base urxvt::term::proxy::;\n"
471 . "#line 1 \"$path\"\n{\n" 472 . "#line 1 \"$path\"\n{\n"
472 . (do { local $/; <$fh> }) 473 . (do { local $/; <$fh> })
473 . "\n};\n1"; 474 . "\n};\n1";
475
476 $source =~ /(.*)/s and $source = $1; # untaint
474 477
475 eval $source or die "$path: $@"; 478 eval $source or die "$path: $@";
476 479
477 $pkg 480 $pkg
478 } 481 }
507 register_package extension_package $files[0]; 510 register_package extension_package $files[0];
508 } else { 511 } else {
509 warn "perl extension '$ext' not found in perl library search path\n"; 512 warn "perl extension '$ext' not found in perl library search path\n";
510 } 513 }
511 } 514 }
515
516 eval "#line 1 \"--perl-eval resource/argument\"\n" . $TERM->resource ("perl_eval");
517 warn $@ if $@;
512 } 518 }
513 519
514 $retval = undef; 520 $retval = undef;
515 521
516 if (my $cb = $TERM->{_hook}[$htype]) { 522 if (my $cb = $TERM->{_hook}[$htype]) {
551 } 557 }
552 558
553 $retval 559 $retval
554} 560}
555 561
562# urxvt::term::proxy
563
556sub urxvt::term::proxy::AUTOLOAD { 564sub urxvt::term::proxy::AUTOLOAD {
557 $urxvt::term::proxy::AUTOLOAD =~ /:([^:]+)$/ 565 $urxvt::term::proxy::AUTOLOAD =~ /:([^:]+)$/
558 or die "FATAL: \$AUTOLOAD '$urxvt::term::proxy::AUTOLOAD' unparsable"; 566 or die "FATAL: \$AUTOLOAD '$urxvt::term::proxy::AUTOLOAD' unparsable";
559 567
560 eval qq{ 568 eval qq{
566 } or die "FATAL: unable to compile method forwarder: $@"; 574 } or die "FATAL: unable to compile method forwarder: $@";
567 575
568 goto &$urxvt::term::proxy::AUTOLOAD; 576 goto &$urxvt::term::proxy::AUTOLOAD;
569} 577}
570 578
579# urxvt::destroy_hook
580
571sub urxvt::destroy_hook::DESTROY { 581sub urxvt::destroy_hook::DESTROY {
572 ${$_[0]}->(); 582 ${$_[0]}->();
573} 583}
574 584
575sub urxvt::destroy_hook(&) { 585sub urxvt::destroy_hook(&) {
576 bless \shift, urxvt::destroy_hook:: 586 bless \shift, urxvt::destroy_hook::
577} 587}
588
589package urxvt::anyevent;
590
591=head2 The C<urxvt::anyevent> Class
592
593The sole purpose of this class is to deliver an interface to the
594C<AnyEvent> module - any module using it will work inside urxvt without
595further work. The only exception is that you cannot wait on condition
596variables, but non-blocking condvar use is ok. What this means is that you
597cannot use blocking APIs, but the non-blocking variant should work.
598
599=cut
600
601our $VERSION = 1;
602
603$INC{"urxvt/anyevent.pm"} = 1; # mark us as there
604push @AnyEvent::REGISTRY, [urxvt => urxvt::anyevent::];
605
606sub timer {
607 my ($class, %arg) = @_;
608
609 my $cb = $arg{cb};
610
611 urxvt::timer
612 ->new
613 ->start (urxvt::NOW + $arg{after})
614 ->cb (sub {
615 $_[0]->stop; # need to cancel manually
616 $cb->();
617 })
618}
619
620sub io {
621 my ($class, %arg) = @_;
622
623 my $cb = $arg{cb};
624
625 bless [$arg{fh}, urxvt::iow
626 ->new
627 ->fd (fileno $arg{fh})
628 ->events (($arg{poll} =~ /r/ ? 1 : 0)
629 | ($arg{poll} =~ /w/ ? 2 : 0))
630 ->start
631 ->cb (sub {
632 $cb->(($_[1] & 1 ? 'r' : '')
633 . ($_[1] & 2 ? 'w' : ''));
634 })],
635 urxvt::anyevent::
636}
637
638sub DESTROY {
639 $_[0][1]->stop;
640}
641
642sub condvar {
643 bless \my $flag, urxvt::anyevent::condvar::
644}
645
646sub urxvt::anyevent::condvar::broadcast {
647 ${$_[0]}++;
648}
649
650sub urxvt::anyevent::condvar::wait {
651 unless (${$_[0]}) {
652 require Carp;
653 Carp::croak ("AnyEvent->condvar blocking wait unsupported in urxvt, use a non-blocking API");
654 }
655}
656
657package urxvt::term;
578 658
579=head2 The C<urxvt::term> Class 659=head2 The C<urxvt::term> Class
580 660
581=over 4 661=over 4
582 662
634 shade term_name title transparent transparent_all tripleclickwords 714 shade term_name title transparent transparent_all tripleclickwords
635 utmpInhibit visualBell 715 utmpInhibit visualBell
636 716
637=cut 717=cut
638 718
639sub urxvt::term::resource($$;$) { 719sub resource($$;$) {
640 my ($self, $name) = (shift, shift); 720 my ($self, $name) = (shift, shift);
641 unshift @_, $self, $name, ($name =~ s/\s*\+\s*(\d+)$// ? $1 : 0); 721 unshift @_, $self, $name, ($name =~ s/\s*\+\s*(\d+)$// ? $1 : 0);
642 &urxvt::term::_resource 722 &urxvt::term::_resource
643} 723}
644 724
731C<$event> I<must> be the event causing the menu to pop up (a button event, 811C<$event> I<must> be the event causing the menu to pop up (a button event,
732currently). 812currently).
733 813
734=cut 814=cut
735 815
736sub urxvt::term::popup { 816sub popup {
737 my ($self, $event) = @_; 817 my ($self, $event) = @_;
738 818
739 $self->grab ($event->{time}, 1) 819 $self->grab ($event->{time}, 1)
740 or return; 820 or return;
741 821
931 1011
932=back 1012=back
933 1013
934=cut 1014=cut
935 1015
936sub urxvt::term::line { 1016sub line {
937 my ($self, $row) = @_; 1017 my ($self, $row) = @_;
938 1018
939 my $maxrow = $self->nrow - 1; 1019 my $maxrow = $self->nrow - 1;
940 1020
941 my ($beg, $end) = ($row, $row); 1021 my ($beg, $end) = ($row, $row);
1019Converts rxvt-unicodes text reprsentation into a perl string. See 1099Converts rxvt-unicodes text reprsentation into a perl string. See
1020C<< $term->ROW_t >> for details. 1100C<< $term->ROW_t >> for details.
1021 1101
1022=back 1102=back
1023 1103
1104=cut
1105
1106package urxvt::popup;
1107
1024=head2 The C<urxvt::popup> Class 1108=head2 The C<urxvt::popup> Class
1025 1109
1026=over 4 1110=over 4
1027 1111
1028=cut 1112=cut
1029
1030package urxvt::popup;
1031 1113
1032sub add_item { 1114sub add_item {
1033 my ($self, $item) = @_; 1115 my ($self, $item) = @_;
1034 1116
1035 $item->{rend}{normal} = "\x1b[0;30;47m" unless exists $item->{rend}{normal}; 1117 $item->{rend}{normal} = "\x1b[0;30;47m" unless exists $item->{rend}{normal};

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines