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.28 by root, Wed Jan 4 00:09:12 2006 UTC vs.
Revision 1.31 by root, Wed Jan 4 19:39:46 2006 UTC

174 174
175Called whenever the program(s) running in the urxvt window send output. 175Called whenever the program(s) running in the urxvt window send output.
176 176
177=item on_osc_seq $term, $string 177=item on_osc_seq $term, $string
178 178
179Called whenever the B<ESC ] 777 ; string ST> command sequence is 179Called whenever the B<ESC ] 777 ; string ST> command sequence (OSC =
180processed. Cursor position and other state information is up-to-date when 180operating system command) is processed. Cursor position and other state
181this happens. For interoperability, the string should start with the 181information is up-to-date when this happens. For interoperability, the
182extension name and a colon, to distinguish it from commands for other 182string should start with the extension name and a colon, to distinguish
183extensions, and this might be enforced in the future. 183it from commands for other extensions, and this might be enforced in the
184future.
185
186Be careful not ever to trust (in a security sense) the data you receive,
187as its source can not easily be controleld (e-mail content, messages from
188other users on the same system etc.).
184 189
185=item on_refresh_begin $term 190=item on_refresh_begin $term
186 191
187Called just before the screen gets redrawn. Can be used for overlay 192Called just before the screen gets redrawn. Can be used for overlay
188or similar effects by modify terminal contents in refresh_begin, and 193or similar effects by modify terminal contents in refresh_begin, and
361 366
362 $pkg 367 $pkg
363 } 368 }
364} 369}
365 370
371our $retval; # return value for urxvt
372
366# called by the rxvt core 373# called by the rxvt core
367sub invoke { 374sub invoke {
368 local $TERM = shift; 375 local $TERM = shift;
369 my $htype = shift; 376 my $htype = shift;
370 377
371 if ($htype == 0) { # INIT 378 if ($htype == 0) { # INIT
372 my @dirs = ((split /:/, $TERM->resource ("perl_lib")), "$LIBDIR/perl"); 379 my @dirs = ((split /:/, $TERM->resource ("perl_lib")), "$LIBDIR/perl");
373 380
374 for my $ext (split /:/, $TERM->resource ("perl_ext")) { 381 for my $ext (map { split /:/, $TERM->resource ("perl_ext_$_") } 1, 2) {
375 my @files = grep -f $_, map "$_/$ext", @dirs; 382 my @files = grep -f $_, map "$_/$ext", @dirs;
376 383
377 if (@files) { 384 if (@files) {
378 register_package script_package $files[0]; 385 register_package script_package $files[0];
379 } else { 386 } else {
380 warn "perl extension '$ext' not found in perl library search path\n"; 387 warn "perl extension '$ext' not found in perl library search path\n";
381 } 388 }
382 } 389 }
390 }
383 391
392 $retval = undef;
393
394 if (my $cb = $TERM->{_hook}[$htype]) {
395 verbose 10, "$HOOKNAME[$htype] (" . (join ", ", $TERM, @_) . ")"
396 if $verbosity >= 10;
397
398 keys %$cb;
399
400 while (my ($pkg, $cb) = each %$cb) {
401 $retval = $cb->(
402 $TERM->{_pkg}{$pkg} ||= do {
403 my $proxy = bless { }, urxvt::term::proxy::;
404 Scalar::Util::weaken ($proxy->{term} = $TERM);
405 $proxy
406 },
407 @_,
408 ) and last;
409 }
410 }
411
384 } elsif ($htype == 1) { # DESTROY 412 if ($htype == 1) { # DESTROY
413 # remove hooks if unused
385 if (my $hook = $TERM->{_hook}) { 414 if (my $hook = $TERM->{_hook}) {
386 for my $htype (0..$#$hook) { 415 for my $htype (0..$#$hook) {
387 $hook_count[$htype] -= scalar keys %{ $hook->[$htype] || {} } 416 $hook_count[$htype] -= scalar keys %{ $hook->[$htype] || {} }
388 or set_should_invoke $htype, 0; 417 or set_should_invoke $htype, 0;
389 } 418 }
390 } 419 }
420
421 # clear package objects
422 %$_ = () for values %{ $TERM->{_pkg} };
423
424 # clear package
425 %$TERM = ();
391 } 426 }
392 427
393 my $cb = $TERM->{_hook}[$htype] 428 $retval
394 or return;
395
396 verbose 10, "$HOOKNAME[$htype] (" . (join ", ", $TERM, @_) . ")"
397 if $verbosity >= 10;
398
399 keys %$cb;
400
401 while (my ($pkg, $cb) = each %$cb) {
402 return 1
403 if $cb->(
404 $TERM->{$pkg} ||= do {
405 my $proxy = bless { }, urxvt::term::proxy::;
406 Scalar::Util::weaken ($proxy->{term} = $TERM);
407 $proxy
408 },
409 @_,
410 );
411 }
412
413 0
414} 429}
415 430
416sub urxvt::term::proxy::AUTOLOAD { 431sub urxvt::term::proxy::AUTOLOAD {
417 $urxvt::term::proxy::AUTOLOAD =~ /:([^:]+)$/ 432 $urxvt::term::proxy::AUTOLOAD =~ /:([^:]+)$/
418 or die "FATAL: \$AUTOLOAD '$urxvt::term::proxy::AUTOLOAD' unparsable"; 433 or die "FATAL: \$AUTOLOAD '$urxvt::term::proxy::AUTOLOAD' unparsable";
456 answerbackstring backgroundPixmap backspace_key boldFont boldItalicFont 471 answerbackstring backgroundPixmap backspace_key boldFont boldItalicFont
457 borderLess color cursorBlink cursorUnderline cutchars delete_key 472 borderLess color cursorBlink cursorUnderline cutchars delete_key
458 display_name embed ext_bwidth fade font geometry hold iconName 473 display_name embed ext_bwidth fade font geometry hold iconName
459 imFont imLocale inputMethod insecure int_bwidth intensityStyles 474 imFont imLocale inputMethod insecure int_bwidth intensityStyles
460 italicFont jumpScroll lineSpace loginShell mapAlert menu meta8 modifier 475 italicFont jumpScroll lineSpace loginShell mapAlert menu meta8 modifier
461 mouseWheelScrollPage name pastableTabs path perl_eval perl_ext 476 mouseWheelScrollPage name pastableTabs path perl_eval perl_ext_1 perl_ext_2
462 perl_lib pointerBlank pointerBlankDelay preeditType print_pipe pty_fd 477 perl_lib pointerBlank pointerBlankDelay preeditType print_pipe pty_fd
463 reverseVideo saveLines scrollBar scrollBar_align scrollBar_floating 478 reverseVideo saveLines scrollBar scrollBar_align scrollBar_floating
464 scrollBar_right scrollBar_thickness scrollTtyKeypress scrollTtyOutput 479 scrollBar_right scrollBar_thickness scrollTtyKeypress scrollTtyOutput
465 scrollWithBuffer scrollstyle secondaryScreen secondaryScroll selectstyle 480 scrollWithBuffer scrollstyle secondaryScreen secondaryScroll selectstyle
466 shade term_name title transparent transparent_all tripleclickwords 481 shade term_name title transparent transparent_all tripleclickwords

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines