--- rxvt-unicode/src/urxvt.pm 2006/01/18 10:31:37 1.102 +++ rxvt-unicode/src/urxvt.pm 2006/01/19 19:52:54 1.111 @@ -37,6 +37,10 @@ @@RXVT_NAME@@ -pe +Or by adding them to the resource for extensions loaded by default: + + URxvt.perl-ext-common: default,automove-background,selection-autotransform + =over 4 =item selection (enabled by default) @@ -91,8 +95,9 @@ text into various other formats/action (such as uri unescaping, perl evalution, web-browser starting etc.), depending on content. -Other extensions can extend this popup menu by pushing a code reference onto -C<@urxvt::ext::selection_popup::hook>, that is called whenever the popup is displayed. +Other extensions can extend this popup menu by pushing a code reference +onto C<@{ $term->{selection_popup_hook} }>, that is called whenever the +popup is displayed. It's sole argument is the popup menu, which can be modified. The selection is in C<$_>, which can be used to decide wether to add something or not. @@ -104,7 +109,7 @@ the selection to Cs, but only if the selection currently contains any Cs: - push urxvt::ext::selection_popup::hook, sub { + push @{ $self->{term}{selection_popup_hook} }, sub { /a/ ? ("a to be" => sub { s/a/b/g } : () }; @@ -145,15 +150,15 @@ And this example matches the same,but replaces it with vi-commands you can paste directly into your (vi :) editor: - URxvt.selection-autotransform.0: s/^([^:[:space:]]+(\\d+):?$/\\x1b:e \\Q$1\\E\\x0d:$2\\x0d/ + URxvt.selection-autotransform.0: s/^([^:[:space:]]+(\\d+):?$/:e \\Q$1\\E\\x0d:$2\\x0d/ Of course, this can be modified to suit your needs and your editor :) To expand the example above to typical perl error messages ("XXX at FILENAME line YYY."), you need a slightly more elaborate solution: - URxvt.selection.pattern-0: ( at .*? line \\d+\\.) - URxvt.selection-autotransform.0: s/^ at (.*?) line (\\d+)\\.$/\x1b:e \\Q$1\E\\x0d:$2\\x0d/ + URxvt.selection.pattern-0: ( at .*? line \\d+[,.]) + URxvt.selection-autotransform.0: s/^ at (.*?) line (\\d+)[,.]$/:e \\Q$1\E\\x0d:$2\\x0d/ The first line tells the selection code to treat the unchanging part of every error message as a selection pattern, and the second line transforms @@ -166,6 +171,14 @@ resource C (default C) will be started with the URL as first argument. +=item automove-background + +This is basically a one-line extension that dynamically changes the background pixmap offset +to the window position, in effect creating the same effect as pseudo transparency with +a custom pixmap. No scaling is supported in this mode. Exmaple: + + @@RXVT_NAME@@ -pixmap background.xpm -pe automove-background + =item block-graphics-to-ascii A not very useful example of filtering all text output to the terminal, @@ -319,6 +332,15 @@ Called at the very end of initialisation of a new terminal, just before returning to the mainloop. +=item on_child_start $term, $pid + +Called just after the child process has been Ced. + +=item on_child_exit $term, $status + +Called just after the child process has exited. C<$status> is the status +from C. + =item on_sel_make $term, $eventtime Called whenever a selection has been made by the user, but before the @@ -624,12 +646,6 @@ unless $msg =~ /\n$/; urxvt::warn ($msg); }; - - # %ENV is the original startup environment - delete $ENV{IFS}; - delete $ENV{CDPATH}; - delete $ENV{BASH_ENV}; - $ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin:/opt/sbin"; } my $verbosity = $ENV{URXVT_PERL_VERBOSITY}; @@ -744,18 +760,6 @@ $retval } -sub exec_async(@) { - my $pid = fork; - - return - if !defined $pid or $pid; - - %ENV = %{ $TERM->env }; - - exec @_; - _exit 255; -} - # urxvt::term::extension package urxvt::term::extension; @@ -942,6 +946,31 @@ etc.). Please note that @@RXVT_NAME@@ will not exit as long as any event watchers (timers, io watchers) are still active. +=item $term->exec_async ($cmd[, @args]) + +Works like the combination of the C/C builtins, which executes +("starts") programs in the background. This function takes care of setting +the user environment before exec'ing the command (e.g. C) and should +be preferred over explicit calls to C or C. + +Returns the pid of the subprocess or C on error. + +=cut + +sub exec_async { + my $self = shift; + + my $pid = fork; + + return $pid + if !defined $pid or $pid; + + %ENV = %{ $self->env }; + + exec @_; + urxvt::_exit 255; +} + =item $isset = $term->option ($optval[, $set]) Returns true if the option specified by C<$optval> is enabled, and @@ -953,10 +982,10 @@ borderLess console cursorBlink cursorUnderline hold iconic insecure intensityStyles jumpScroll loginShell mapAlert meta8 mouseWheelScrollPage - pastableTabs pointerBlank reverseVideo scrollBar scrollBar_floating - scrollBar_right scrollTtyKeypress scrollTtyOutput scrollWithBuffer - secondaryScreen secondaryScroll skipBuiltinGlyphs transparent - tripleclickwords utmpInhibit visualBell + override-redirect pastableTabs pointerBlank reverseVideo scrollBar + scrollBar_floating scrollBar_right scrollTtyKeypress scrollTtyOutput + scrollWithBuffer secondaryScreen secondaryScroll skipBuiltinGlyphs + transparent tripleclickwords utmpInhibit visualBell =item $value = $term->resource ($name[, $newval]) @@ -983,14 +1012,15 @@ borderLess color cursorBlink cursorUnderline cutchars delete_key display_name embed ext_bwidth fade font geometry hold iconName imFont imLocale inputMethod insecure int_bwidth intensityStyles - italicFont jumpScroll lineSpace loginShell mapAlert menu meta8 modifier - mouseWheelScrollPage name pastableTabs path perl_eval perl_ext_1 perl_ext_2 - perl_lib pointerBlank pointerBlankDelay preeditType print_pipe pty_fd - reverseVideo saveLines scrollBar scrollBar_align scrollBar_floating - scrollBar_right scrollBar_thickness scrollTtyKeypress scrollTtyOutput - scrollWithBuffer scrollstyle secondaryScreen secondaryScroll selectstyle - shade term_name title transparent transparent_all tripleclickwords - utmpInhibit visualBell + italicFont jumpScroll lineSpace loginShell mapAlert meta8 modifier + mouseWheelScrollPage name override_redirect pastableTabs path perl_eval + perl_ext_1 perl_ext_2 perl_lib pointerBlank pointerBlankDelay + preeditType print_pipe pty_fd reverseVideo saveLines scrollBar + scrollBar_align scrollBar_floating scrollBar_right scrollBar_thickness + scrollTtyKeypress scrollTtyOutput scrollWithBuffer scrollstyle + secondaryScreen secondaryScroll selectstyle shade term_name title + transient_for transparent transparent_all tripleclickwords utmpInhibit + visualBell =cut @@ -1592,8 +1622,10 @@ delete $env->{LC_ALL}; $env->{LC_CTYPE} = $self->{term}->locale; - urxvt::term->new ($env, $self->{term}->resource ("name"), - "--perl-lib" => "", "--perl-ext-common" => "", "-pty-fd" => -1, "-sl" => 0, "-b" => 0, + urxvt::term->new ($env, "popup", + "--perl-lib" => "", "--perl-ext-common" => "", + "-pty-fd" => -1, "-sl" => 0, + "-b" => 1, "-bd" => "grey80", "-bl", "-override-redirect", "--transient-for" => $self->{term}->parent, "-display" => $self->{term}->display_id, "-pe" => "urxvt-popup") @@ -1656,6 +1688,10 @@ Set the event trigger time to C<$tstamp> and start the timer. +=item $timer = $timer->after ($delay) + +Like C, but sets the expiry timer to c. + =item $timer = $timer->stop Stop the timer.