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.57 by root, Sun Jan 8 08:43:11 2006 UTC vs.
Revision 1.61 by root, Mon Jan 9 01:36:56 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
199than the scroll back buffer or the terminal. 204than the scroll back buffer or the terminal.
200 205
201It is called before lines are scrolled out (so rows 0 .. min ($lines - 1, 206It is called before lines are scrolled out (so rows 0 .. min ($lines - 1,
202$nrow - 1) represent the lines to be scrolled out). C<$saved> is the total 207$nrow - 1) represent the lines to be scrolled out). C<$saved> is the total
203number of lines that will be in the scrollback buffer. 208number of lines that will be in the scrollback buffer.
204
205=item on_tty_activity $term *NYI*
206
207Called whenever the program(s) running in the urxvt window send output.
208 209
209=item on_osc_seq $term, $string 210=item on_osc_seq $term, $string
210 211
211Called whenever the B<ESC ] 777 ; string ST> command sequence (OSC = 212Called whenever the B<ESC ] 777 ; string ST> command sequence (OSC =
212operating system command) is processed. Cursor position and other state 213operating system command) is processed. Cursor position and other state
423 my $msg = join "", @_; 424 my $msg = join "", @_;
424 $msg .= "\n" 425 $msg .= "\n"
425 unless $msg =~ /\n$/; 426 unless $msg =~ /\n$/;
426 urxvt::warn ($msg); 427 urxvt::warn ($msg);
427 }; 428 };
429
430 delete $ENV{IFS};
431 delete $ENV{CDPATH};
432 delete $ENV{BASH_ENV};
433 $ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin:/opt/sbin";
428} 434}
429 435
430my @hook_count; 436my @hook_count;
431my $verbosity = $ENV{URXVT_PERL_VERBOSITY}; 437my $verbosity = $ENV{URXVT_PERL_VERBOSITY};
432 438
465 verbose 3, "loading extension '$path' into package '$pkg'"; 471 verbose 3, "loading extension '$path' into package '$pkg'";
466 472
467 open my $fh, "<:raw", $path 473 open my $fh, "<:raw", $path
468 or die "$path: $!"; 474 or die "$path: $!";
469 475
470 my $source = "package $pkg; use strict; use utf8;\n" 476 my $source = untaint "package $pkg; use strict; use utf8;\n"
471 . "use base urxvt::term::proxy::;\n" 477 . "use base urxvt::term::proxy::;\n"
472 . "#line 1 \"$path\"\n{\n" 478 . "#line 1 \"$path\"\n{\n"
473 . (do { local $/; <$fh> }) 479 . (do { local $/; <$fh> })
474 . "\n};\n1"; 480 . "\n};\n1";
475 481
476 $source =~ /(.*)/s and $source = $1; # untaint
477
478 eval $source or die "$path: $@"; 482 eval $source or die "$path: $@";
479 483
480 $pkg 484 $pkg
481 } 485 }
482} 486}
493 497
494 my %want_ext; 498 my %want_ext;
495 499
496 for (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2) { 500 for (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2) {
497 if ($_ eq "default") { 501 if ($_ eq "default") {
498 $want_ext{$_}++ for qw(selection option-popup); 502 $want_ext{$_}++ for qw(selection option-popup selection-popup);
499 } elsif (/^-(.*)$/) { 503 } elsif (/^-(.*)$/) {
500 delete $want_ext{$1}; 504 delete $want_ext{$1};
501 } else { 505 } else {
502 $want_ext{$_}++; 506 $want_ext{$_}++;
503 } 507 }
534 $proxy 538 $proxy
535 }, 539 },
536 @_, 540 @_,
537 ) and last; 541 ) and last;
538 }; 542 };
539 warn $@ if $@;#d# 543 if ($@) {
544 $TERM->ungrab; # better to lose the grab than the session
545 warn $@;
546 }
540 } 547 }
541 } 548 }
542 549
543 if ($htype == 1) { # DESTROY 550 if ($htype == 1) { # DESTROY
544 # remove hooks if unused 551 # remove hooks if unused
572 } 579 }
573 1 580 1
574 } or die "FATAL: unable to compile method forwarder: $@"; 581 } or die "FATAL: unable to compile method forwarder: $@";
575 582
576 goto &$urxvt::term::proxy::AUTOLOAD; 583 goto &$urxvt::term::proxy::AUTOLOAD;
584}
585
586sub urxvt::term::proxy::DESTROY {
587 # nop
577} 588}
578 589
579# urxvt::destroy_hook 590# urxvt::destroy_hook
580 591
581sub urxvt::destroy_hook::DESTROY { 592sub urxvt::destroy_hook::DESTROY {
1085 $offset / $self->{ncol} + $self->{beg}, 1096 $offset / $self->{ncol} + $self->{beg},
1086 $offset % $self->{ncol} 1097 $offset % $self->{ncol}
1087 ) 1098 )
1088} 1099}
1089 1100
1090=item ($row, $col) = $line->coord_of ($offset)
1091=item $text = $term->special_encode $string 1101=item $text = $term->special_encode $string
1092 1102
1093Converts a perl string into the special encoding used by rxvt-unicode, 1103Converts a perl string into the special encoding used by rxvt-unicode,
1094where one character corresponds to one screen cell. See 1104where one character corresponds to one screen cell. See
1095C<< $term->ROW_t >> for details. 1105C<< $term->ROW_t >> for details.
1096 1106
1097=item $string = $term->special_decode $text 1107=item $string = $term->special_decode $text
1098 1108
1099Converts rxvt-unicodes text reprsentation into a perl string. See 1109Converts rxvt-unicodes text reprsentation into a perl string. See
1100C<< $term->ROW_t >> for details. 1110C<< $term->ROW_t >> for details.
1111
1112=item $success = $term->grab_button ($button, $modifiermask)
1113
1114Registers a synchronous button grab. See XGrabButton.
1115
1116=item $success = $term->grab ($eventtime[, $sync])
1117
1118Calls XGrabPointer and XGrabKeyboard in asynchronous (default) or
1119synchronous (C<$sync> is true). Also remembers the grab timestampe.
1120
1121=item $term->allow_events_async
1122
1123Calls XAllowEvents with AsyncBoth for the most recent grab.
1124
1125=item $term->allow_events_sync
1126
1127Calls XAllowEvents with SyncBoth for the most recent grab.
1128
1129=item $term->allow_events_replay
1130
1131Calls XAllowEvents with both ReplayPointer and ReplayKeyboard for the most
1132recent grab.
1133
1134=item $term->ungrab
1135
1136Calls XUngrab for the most recent grab. Is called automatically on
1137evaluation errors, as it is better to lose the grab in the error case as
1138the session.
1101 1139
1102=back 1140=back
1103 1141
1104=cut 1142=cut
1105 1143
1157 1195
1158 my $item; $item = { 1196 my $item; $item = {
1159 type => "button", 1197 type => "button",
1160 text => " $text", 1198 text => " $text",
1161 value => $value, 1199 value => $value,
1162 render => sub { ($item->{value} ? "* " : " ") . $text }, 1200 render => sub { ($_[0]{value} ? "* " : " ") . $text },
1163 activate => sub { $cb->($item->{value} = !$item->{value}); }, 1201 activate => sub { $cb->($_[0]{value} = !$_[0]{value}); },
1164 }; 1202 };
1165 1203
1166 $self->add_item ($item); 1204 $self->add_item ($item);
1167} 1205}
1168 1206
1178} 1216}
1179 1217
1180sub DESTROY { 1218sub DESTROY {
1181 my ($self) = @_; 1219 my ($self) = @_;
1182 1220
1221 delete $self->{term}{_destroy}{$self};
1183 $self->{term}->ungrab; 1222 $self->{term}->ungrab;
1184} 1223}
1185 1224
1186=head2 The C<urxvt::timer> Class 1225=head2 The C<urxvt::timer> Class
1187 1226
1291This variable controls the verbosity level of the perl extension. Higher 1330This variable controls the verbosity level of the perl extension. Higher
1292numbers indicate more verbose output. 1331numbers indicate more verbose output.
1293 1332
1294=over 4 1333=over 4
1295 1334
1296=item =0 - only fatal messages 1335=item == 0 - fatal messages
1297 1336
1298=item =3 - script loading and management 1337=item >= 3 - script loading and management
1299 1338
1300=item =10 - all events received 1339=item >=10 - all events received
1301 1340
1302=back 1341=back
1303 1342
1304=head1 AUTHOR 1343=head1 AUTHOR
1305 1344

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines