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.99 by root, Tue Jan 17 17:09:26 2006 UTC vs.
Revision 1.101 by root, Wed Jan 18 10:11:03 2006 UTC

88=item selection-popup (enabled by default) 88=item selection-popup (enabled by default)
89 89
90Binds a popup menu to Ctrl-Button3 that lets you convert the selection 90Binds a popup menu to Ctrl-Button3 that lets you convert the selection
91text into various other formats/action (such as uri unescaping, perl 91text into various other formats/action (such as uri unescaping, perl
92evalution, web-browser starting etc.), depending on content. 92evalution, web-browser starting etc.), depending on content.
93
94Other extensions can extend this popup menu by pushing a code reference onto
95C<@urxvt::ext::selection_popup::hook>, that is called whenever the popup is displayed.
96
97It's sole argument is the popup menu, which can be modified. The selection
98is in C<$_>, which can be used to decide wether to add something or not.
99It should either return nothing or a string and a code reference. The
100string will be used as button text and the code reference will be called
101when the button gets activated and should transform C<$_>.
102
103The following will add an entry C<a to b> that transforms all C<a>s in
104the selection to C<b>s, but only if the selection currently contains any
105C<a>s:
106
107 push urxvt::ext::selection_popup::hook, sub {
108 /a/ ? ("a to be" => sub { s/a/b/g }
109 : ()
110 };
93 111
94=item searchable-scrollback<hotkey> (enabled by default) 112=item searchable-scrollback<hotkey> (enabled by default)
95 113
96Adds regex search functionality to the scrollback buffer, triggered 114Adds regex search functionality to the scrollback buffer, triggered
97by a hotkey (default: C<M-s>). While in search mode, normal terminal 115by a hotkey (default: C<M-s>). While in search mode, normal terminal
595=back 613=back
596 614
597=cut 615=cut
598 616
599BEGIN { 617BEGIN {
600 urxvt->bootstrap;
601
602 # overwrite perl's warn 618 # overwrite perl's warn
603 *CORE::GLOBAL::warn = sub { 619 *CORE::GLOBAL::warn = sub {
604 my $msg = join "", @_; 620 my $msg = join "", @_;
605 $msg .= "\n" 621 $msg .= "\n"
606 unless $msg =~ /\n$/; 622 unless $msg =~ /\n$/;
619sub verbose { 635sub verbose {
620 my ($level, $msg) = @_; 636 my ($level, $msg) = @_;
621 warn "$msg\n" if $level <= $verbosity; 637 warn "$msg\n" if $level <= $verbosity;
622} 638}
623 639
624my $extension_pkg = "extension0000";
625my %extension_pkg; 640my %extension_pkg;
626 641
627# load a single script into its own package, once only 642# load a single script into its own package, once only
628sub extension_package($) { 643sub extension_package($) {
629 my ($path) = @_; 644 my ($path) = @_;
630 645
646 no strict 'refs';
647
631 $extension_pkg{$path} ||= do { 648 $extension_pkg{$path} ||= do {
632 my $pkg = "urxvt::" . ($extension_pkg++); 649 $path =~ /([^\/\\]+)$/;
650 my $pkg = $1;
651 $pkg =~ s/[^[:word:]]/_/g;
652 $pkg = "urxvt::ext::$pkg";
633 653
634 verbose 3, "loading extension '$path' into package '$pkg'"; 654 verbose 3, "loading extension '$path' into package '$pkg'";
635 655
636 open my $fh, "<:raw", $path 656 open my $fh, "<:raw", $path
637 or die "$path: $!"; 657 or die "$path: $!";
638 658
659 @{"$pkg\::ISA"} = urxvt::term::extension::;
660
639 my $source = 661 my $source =
640 "package $pkg; use strict; use utf8;\n" 662 "package $pkg; use strict; use utf8;\n"
641 . "use base urxvt::term::extension::;\n"
642 . "#line 1 \"$path\"\n{\n" 663 . "#line 1 \"$path\"\n{\n"
643 . (do { local $/; <$fh> }) 664 . (do { local $/; <$fh> })
644 . "\n};\n1"; 665 . "\n};\n1";
645 666
646 eval $source 667 eval $source

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines