… | |
… | |
196 | relevant action might not be carried out by the C++ code. |
196 | relevant action might not be carried out by the C++ code. |
197 | |
197 | |
198 | I<< When in doubt, return a false value (preferably C<()>). >> |
198 | I<< When in doubt, return a false value (preferably C<()>). >> |
199 | |
199 | |
200 | =over |
200 | =over |
|
|
201 | |
|
|
202 | =item on_attach $term |
|
|
203 | |
|
|
204 | Called when an extension package is attached to a running terminal |
|
|
205 | instance. Must return true in all cases, and runs with the same |
|
|
206 | limitations as C<on_init>. |
|
|
207 | |
|
|
208 | Unlike C<on_init> or C<on_start>, this is called when the extension is |
|
|
209 | attached to a terminal, regardless of whether the extension is loaded |
|
|
210 | before or after the terminal is started. Extensions that need to do |
|
|
211 | something before they work can do it in this callback, as opposed to e.g. |
|
|
212 | C<on_init>, which might not be called. |
201 | |
213 | |
202 | =item on_init $term |
214 | =item on_init $term |
203 | |
215 | |
204 | Called after a new terminal object has been initialized, but before |
216 | Called after a new terminal object has been initialized, but before |
205 | windows are created or the command gets run. Most methods are unsafe to |
217 | windows are created or the command gets run. Most methods are unsafe to |
… | |
… | |
1180 | # find on_xxx subs in the package and register them |
1192 | # find on_xxx subs in the package and register them |
1181 | # as hooks |
1193 | # as hooks |
1182 | sub register_package { |
1194 | sub register_package { |
1183 | my ($self, $pkg, $argv) = @_; |
1195 | my ($self, $pkg, $argv) = @_; |
1184 | |
1196 | |
|
|
1197 | return if $self->{_pkg}{$pkg}; |
|
|
1198 | |
1185 | no strict 'refs'; |
1199 | no strict 'refs'; |
1186 | |
1200 | |
1187 | urxvt::verbose 6, "register package $pkg to $self"; |
1201 | urxvt::verbose 6, "register package $pkg to $self"; |
1188 | |
1202 | |
1189 | @{"$pkg\::ISA"} = urxvt::term::extension::; |
1203 | @{"$pkg\::ISA"} = urxvt::term::extension::; |
… | |
… | |
1199 | |
1213 | |
1200 | for my $name (@HOOKNAME) { |
1214 | for my $name (@HOOKNAME) { |
1201 | if (my $ref = $pkg->can ("on_" . lc $name)) { |
1215 | if (my $ref = $pkg->can ("on_" . lc $name)) { |
1202 | $proxy->enable ($name => $ref); |
1216 | $proxy->enable ($name => $ref); |
1203 | } |
1217 | } |
|
|
1218 | } |
|
|
1219 | |
|
|
1220 | if (my $attach_hook = $pkg->can ("on_attach")) { |
|
|
1221 | $attach_hook->($proxy) |
|
|
1222 | or urxvt::verbose 1, "$pkg->on_attach returned false, extension failed to attach"; |
1204 | } |
1223 | } |
1205 | } |
1224 | } |
1206 | |
1225 | |
1207 | # map extension name to filesystem path |
1226 | # map extension name to filesystem path |
1208 | sub extension_path { |
1227 | sub extension_path { |
… | |
… | |
1345 | Works like the combination of the C<fork>/C<exec> builtins, which executes |
1364 | Works like the combination of the C<fork>/C<exec> builtins, which executes |
1346 | ("starts") programs in the background. This function takes care of setting |
1365 | ("starts") programs in the background. This function takes care of setting |
1347 | the user environment before exec'ing the command (e.g. C<PATH>) and should |
1366 | the user environment before exec'ing the command (e.g. C<PATH>) and should |
1348 | be preferred over explicit calls to C<exec> or C<system>. |
1367 | be preferred over explicit calls to C<exec> or C<system>. |
1349 | |
1368 | |
|
|
1369 | It also sets the C<URXVT_EXT_WINDOWID> environment variable to the window |
|
|
1370 | ID of the terminal (C<< $self->parent >>), similar to the C<WINDOWID> |
|
|
1371 | variable set for the process spawned inside the terminal. |
|
|
1372 | |
1350 | Returns the pid of the subprocess or C<undef> on error. |
1373 | Returns the pid of the subprocess or C<undef> on error. |
1351 | |
1374 | |
1352 | =cut |
1375 | =cut |
1353 | |
1376 | |
1354 | sub exec_async { |
1377 | sub exec_async { |
… | |
… | |
1357 | my $pid = fork; |
1380 | my $pid = fork; |
1358 | |
1381 | |
1359 | return $pid |
1382 | return $pid |
1360 | if !defined $pid or $pid; |
1383 | if !defined $pid or $pid; |
1361 | |
1384 | |
|
|
1385 | %ENV = ( |
1362 | %ENV = %{ $self->env }; |
1386 | %{ $self->env }, |
|
|
1387 | URXVT_EXT_WINDOWID => $self->parent, |
|
|
1388 | ); |
1363 | |
1389 | |
1364 | exec @_; |
1390 | exec @_; |
1365 | urxvt::_exit 255; |
1391 | urxvt::_exit 255; |
1366 | } |
1392 | } |
1367 | |
1393 | |
… | |
… | |
1625 | Returns the number of screen-cells this string would need. Correctly |
1651 | Returns the number of screen-cells this string would need. Correctly |
1626 | accounts for wide and combining characters. |
1652 | accounts for wide and combining characters. |
1627 | |
1653 | |
1628 | =item $octets = $term->locale_encode ($string) |
1654 | =item $octets = $term->locale_encode ($string) |
1629 | |
1655 | |
1630 | Convert the given text string into the corresponding locale encoding. |
1656 | Convert the given text string into the corresponding locale |
|
|
1657 | encoding. Returns C<undef> if C<$string> is C<undef>. |
1631 | |
1658 | |
1632 | =item $string = $term->locale_decode ($octets) |
1659 | =item $string = $term->locale_decode ($octets) |
1633 | |
1660 | |
1634 | Convert the given locale-encoded octets into a perl string. |
1661 | Convert the given locale-encoded octets into a perl string. Returns |
|
|
1662 | C<undef> if C<$octets> is C<undef>. |
1635 | |
1663 | |
1636 | =item $term->scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle]) |
1664 | =item $term->scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle]) |
1637 | |
1665 | |
1638 | XORs the rendition values in the given span with the provided value |
1666 | XORs the rendition values in the given span with the provided value |
1639 | (default: C<RS_RVid>), which I<MUST NOT> contain font styles. Useful in |
1667 | (default: C<RS_RVid>), which I<MUST NOT> contain font styles. Useful in |
… | |
… | |
1993 | $offset / $self->{ncol} + $self->{beg}, |
2021 | $offset / $self->{ncol} + $self->{beg}, |
1994 | $offset % $self->{ncol} |
2022 | $offset % $self->{ncol} |
1995 | ) |
2023 | ) |
1996 | } |
2024 | } |
1997 | |
2025 | |
1998 | =item $text = $term->special_encode $string |
2026 | =item $text = $term->special_encode ($string) |
1999 | |
2027 | |
2000 | Converts a perl string into the special encoding used by rxvt-unicode, |
2028 | Converts a perl string into the special encoding used by rxvt-unicode, |
2001 | where one character corresponds to one screen cell. See |
2029 | where one character corresponds to one screen cell. See |
2002 | C<< $term->ROW_t >> for details. |
2030 | C<< $term->ROW_t >> for details. |
2003 | |
2031 | |
2004 | =item $string = $term->special_decode $text |
2032 | =item $string = $term->special_decode ($text) |
2005 | |
2033 | |
2006 | Converts rxvt-unicode's text representation into a perl string. See |
2034 | Converts rxvt-unicode's text representation into a perl string. See |
2007 | C<< $term->ROW_t >> for details. |
2035 | C<< $term->ROW_t >> for details. |
2008 | |
2036 | |
2009 | =item $success = $term->grab_button ($button, $modifiermask[, $window = $term->vt]) |
2037 | =item $success = $term->grab_button ($button, $modifiermask[, $window = $term->vt]) |