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.98 by root, Tue Jan 17 17:01:54 2006 UTC vs.
Revision 1.103 by root, Wed Jan 18 11:05:09 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
165overlays or changes. 183overlays or changes.
166 184
167=item selection-pastebin 185=item selection-pastebin
168 186
169This is a little rarely useful extension that Uploads the selection as 187This is a little rarely useful extension that Uploads the selection as
170textfile to a remote site (or does other things). 188textfile to a remote site (or does other things). (The implementation is
189not currently secure for use in a multiuser environment as it writes to
190F</tmp> directly.).
171 191
172It listens to the C<selection-pastebin:remote-pastebin> keyboard command, 192It listens to the C<selection-pastebin:remote-pastebin> keyboard command,
173i.e. 193i.e.
174 194
175 URxvt.keysym.C-M-e: perl:selection-pastebin:remote-pastebin 195 URxvt.keysym.C-M-e: perl:selection-pastebin:remote-pastebin
413 433
414=item on_focus_out $term 434=item on_focus_out $term
415 435
416Called wheneever the window loses keyboard focus, before rxvt-unicode does 436Called wheneever the window loses keyboard focus, before rxvt-unicode does
417focus out processing. 437focus out processing.
438
439=item on_configure_notify $term, $event
418 440
419=item on_key_press $term, $event, $keysym, $octets 441=item on_key_press $term, $event, $keysym, $octets
420 442
421=item on_key_release $term, $event, $keysym 443=item on_key_release $term, $event, $keysym
422 444
593=back 615=back
594 616
595=cut 617=cut
596 618
597BEGIN { 619BEGIN {
598 urxvt->bootstrap;
599
600 # overwrite perl's warn 620 # overwrite perl's warn
601 *CORE::GLOBAL::warn = sub { 621 *CORE::GLOBAL::warn = sub {
602 my $msg = join "", @_; 622 my $msg = join "", @_;
603 $msg .= "\n" 623 $msg .= "\n"
604 unless $msg =~ /\n$/; 624 unless $msg =~ /\n$/;
617sub verbose { 637sub verbose {
618 my ($level, $msg) = @_; 638 my ($level, $msg) = @_;
619 warn "$msg\n" if $level <= $verbosity; 639 warn "$msg\n" if $level <= $verbosity;
620} 640}
621 641
622my $extension_pkg = "extension0000";
623my %extension_pkg; 642my %extension_pkg;
624 643
625# load a single script into its own package, once only 644# load a single script into its own package, once only
626sub extension_package($) { 645sub extension_package($) {
627 my ($path) = @_; 646 my ($path) = @_;
628 647
648 no strict 'refs';
649
629 $extension_pkg{$path} ||= do { 650 $extension_pkg{$path} ||= do {
630 my $pkg = "urxvt::" . ($extension_pkg++); 651 $path =~ /([^\/\\]+)$/;
652 my $pkg = $1;
653 $pkg =~ s/[^[:word:]]/_/g;
654 $pkg = "urxvt::ext::$pkg";
631 655
632 verbose 3, "loading extension '$path' into package '$pkg'"; 656 verbose 3, "loading extension '$path' into package '$pkg'";
633 657
634 open my $fh, "<:raw", $path 658 open my $fh, "<:raw", $path
635 or die "$path: $!"; 659 or die "$path: $!";
636 660
661 @{"$pkg\::ISA"} = urxvt::term::extension::;
662
637 my $source = 663 my $source =
638 "package $pkg; use strict; use utf8;\n" 664 "package $pkg; use strict; use utf8;\n"
639 . "use base urxvt::term::extension::;\n"
640 . "#line 1 \"$path\"\n{\n" 665 . "#line 1 \"$path\"\n{\n"
641 . (do { local $/; <$fh> }) 666 . (do { local $/; <$fh> })
642 . "\n};\n1"; 667 . "\n};\n1";
643 668
644 eval $source 669 eval $source
1565 my $env = $self->{term}->env; 1590 my $env = $self->{term}->env;
1566 # we can't hope to reproduce the locale algorithm, so nuke LC_ALL and set LC_CTYPE. 1591 # we can't hope to reproduce the locale algorithm, so nuke LC_ALL and set LC_CTYPE.
1567 delete $env->{LC_ALL}; 1592 delete $env->{LC_ALL};
1568 $env->{LC_CTYPE} = $self->{term}->locale; 1593 $env->{LC_CTYPE} = $self->{term}->locale;
1569 1594
1570 urxvt::term->new ($env, $self->{term}->resource ("name"), 1595 urxvt::term->new ($env, "popup",
1571 "--perl-lib" => "", "--perl-ext-common" => "", "-pty-fd" => -1, "-sl" => 0, "-b" => 0, 1596 "--perl-lib" => "", "--perl-ext-common" => "", "-pty-fd" => -1, "-sl" => 0, "-b" => 0,
1572 "--transient-for" => $self->{term}->parent, 1597 "--transient-for" => $self->{term}->parent,
1573 "-display" => $self->{term}->display_id, 1598 "-display" => $self->{term}->display_id,
1574 "-pe" => "urxvt-popup") 1599 "-pe" => "urxvt-popup")
1575 or die "unable to create popup window\n"; 1600 or die "unable to create popup window\n";
1628Start the timer. 1653Start the timer.
1629 1654
1630=item $timer = $timer->start ($tstamp) 1655=item $timer = $timer->start ($tstamp)
1631 1656
1632Set the event trigger time to C<$tstamp> and start the timer. 1657Set the event trigger time to C<$tstamp> and start the timer.
1658
1659=item $timer = $timer->after ($delay)
1660
1661Like C<start>, but sets the expiry timer to c<urxvt::NOW + $delay>.
1633 1662
1634=item $timer = $timer->stop 1663=item $timer = $timer->stop
1635 1664
1636Stop the timer. 1665Stop the timer.
1637 1666

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines