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.49 by root, Sun Jan 8 00:07:18 2006 UTC vs.
Revision 1.54 by root, Sun Jan 8 01:59:29 2006 UTC

37 37
38 @@RXVT_NAME@@ -pe <extensionname> 38 @@RXVT_NAME@@ -pe <extensionname>
39 39
40=over 4 40=over 4
41 41
42=item selection 42=item selection (enabled by default)
43 43
44Intelligent selection. This extension tries to be more intelligent when 44Intelligent selection. This extension tries to be more intelligent when
45the user extends selections (double-click). Right now, it tries to select 45the user extends selections (double-click). Right now, it tries to select
46urls and complete shell-quoted arguments, which is very convenient, too, 46urls and complete shell-quoted arguments, which is very convenient, too,
47if your F<ls> supports C<--quoting-style=shell>. 47if your F<ls> supports C<--quoting-style=shell>.
55Rot-13 the selection when activated. Used via keyboard trigger: 55Rot-13 the selection when activated. Used via keyboard trigger:
56 56
57 URxvt.keysym.C-M-r: perl:selection:rot13 57 URxvt.keysym.C-M-r: perl:selection:rot13
58 58
59=back 59=back
60
61=item option-popup (enabled by default)
62
63Binds a popup menu to Ctrl-Button3 that lets you toggle (some) options at
64runtime.
60 65
61=item digital-clock 66=item digital-clock
62 67
63Displays a digital clock using the built-in overlay. 68Displays a digital clock using the built-in overlay.
64 69
481 my $htype = shift; 486 my $htype = shift;
482 487
483 if ($htype == 0) { # INIT 488 if ($htype == 0) { # INIT
484 my @dirs = ((split /:/, $TERM->resource ("perl_lib")), "$LIBDIR/perl"); 489 my @dirs = ((split /:/, $TERM->resource ("perl_lib")), "$LIBDIR/perl");
485 490
491 my %want_ext;
492
486 my @ext = (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2); 493 for (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2) {
487
488 while (@ext) {
489 my $ext = shift @ext;
490 if ($ext eq "default") { 494 if ($_ eq "default") {
491 unshift @ext, qw(selection); 495 $want_ext{$_}++ for qw(selection option-popup);
496 } elsif (/^-(.*)$/) {
497 delete $want_ext{$1};
492 } else { 498 } else {
499 $want_ext{$_}++;
500 }
501 }
502
503 for my $ext (keys %want_ext) {
493 my @files = grep -f $_, map "$_/$ext", @dirs; 504 my @files = grep -f $_, map "$_/$ext", @dirs;
494 505
495 if (@files) { 506 if (@files) {
496 register_package extension_package $files[0]; 507 register_package extension_package $files[0];
497 } else { 508 } else {
498 warn "perl extension '$ext' not found in perl library search path\n"; 509 warn "perl extension '$ext' not found in perl library search path\n";
499 }
500 } 510 }
501 } 511 }
502 } 512 }
503 513
504 $retval = undef; 514 $retval = undef;
1020package urxvt::popup; 1030package urxvt::popup;
1021 1031
1022sub add_item { 1032sub add_item {
1023 my ($self, $item) = @_; 1033 my ($self, $item) = @_;
1024 1034
1035 $item->{rend}{normal} = "\x1b[0;30;47m" unless exists $item->{rend}{normal};
1036 $item->{rend}{hover} = "\x1b[0;30;46m" unless exists $item->{rend}{hover};
1037 $item->{rend}{active} = "\x1b[m" unless exists $item->{rend}{active};
1038
1039 $item->{render} ||= sub { $_[0]{text} };
1040
1025 push @{ $self->{item} }, $item; 1041 push @{ $self->{item} }, $item;
1042}
1043
1044sub add_separator {
1045 my ($self, $sep) = @_;
1046
1047 $sep ||= "═";
1048
1049 $self->add_item ({
1050 rend => { normal => "\x1b[0;30;47m", hover => "\x1b[0;30;47m", active => "\x1b[0;30;47m" },
1051 text => "",
1052 render => sub { $sep x $urxvt::TERM->ncol },
1053 activate => sub { },
1054 });
1055}
1056
1057sub add_title {
1058 my ($self, $title) = @_;
1059
1060 $self->add_item ({
1061 rend => { normal => "\x1b[38;5;11;44m", hover => "\x1b[38;5;11;44m", active => "\x1b[38;5;11;44m" },
1062 text => $title,
1063 activate => sub { },
1064 });
1026} 1065}
1027 1066
1028sub add_button { 1067sub add_button {
1029 my ($self, $text, $cb) = @_; 1068 my ($self, $text, $cb) = @_;
1030 1069
1031 $self->add_item ({ type => "button", text => "[ $text ]", activate => $cb, 1070 $self->add_item ({ type => "button", text => "[ $text ]", activate => $cb});
1032 render => sub { $_[0]{text} },
1033 });
1034} 1071}
1035 1072
1036sub add_toggle { 1073sub add_toggle {
1037 my ($self, $text, $cb, $value) = @_; 1074 my ($self, $text, $cb, $value) = @_;
1038 1075
1039 my $item; $item = { 1076 my $item; $item = {
1040 type => "button", 1077 type => "button",
1041 text => " $text", 1078 text => " $text",
1042 value => $value, 1079 value => $value,
1043 render => sub { ($item->{value} ? "" : " ") . $text }, 1080 render => sub { ($item->{value} ? "* " : " ") . $text },
1044 activate => sub { $cb->($item->{value} = !$item->{value}); }, 1081 activate => sub { $cb->($item->{value} = !$item->{value}); },
1045 }; 1082 };
1046 1083
1047 $self->add_item ($item); 1084 $self->add_item ($item);
1048} 1085}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines