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.268 by root, Sat Jul 24 13:07:56 2021 UTC vs.
Revision 1.272 by root, Thu Dec 29 01:10:08 2022 UTC

196relevant action might not be carried out by the C++ code. 196relevant action might not be carried out by the C++ code.
197 197
198I<< When in doubt, return a false value (preferably C<()>). >> 198I<< When in doubt, return a false value (preferably C<()>). >>
199 199
200=over 200=over
201
202=item on_attach $term
203
204Called when an extension package is attached to a running terminal
205instance. Must return true in all cases, and runs with the same
206limitations as C<on_init>.
207
208Unlike C<on_init> or C<on_start>, this is called when the extension is
209attached to a terminal, regardless of whether the extension is loaded
210before or after the terminal is started. Extensions that need to do
211something before they work can do it in this callback, as opposed to e.g.
212C<on_init>, which might not be called.
201 213
202=item on_init $term 214=item on_init $term
203 215
204Called after a new terminal object has been initialized, but before 216Called after a new terminal object has been initialized, but before
205windows are created or the command gets run. Most methods are unsafe to 217windows 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
1182sub register_package { 1194sub 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
1208sub extension_path { 1227sub extension_path {
1345Works like the combination of the C<fork>/C<exec> builtins, which executes 1364Works 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
1347the user environment before exec'ing the command (e.g. C<PATH>) and should 1366the user environment before exec'ing the command (e.g. C<PATH>) and should
1348be preferred over explicit calls to C<exec> or C<system>. 1367be preferred over explicit calls to C<exec> or C<system>.
1349 1368
1369It also sets the C<URXVT_EXT_WINDOWID> environment variable to the window
1370ID of the terminal (C<< $self->parent >>), similar to the C<WINDOWID>
1371variable set for the process spawned inside the terminal.
1372
1350Returns the pid of the subprocess or C<undef> on error. 1373Returns the pid of the subprocess or C<undef> on error.
1351 1374
1352=cut 1375=cut
1353 1376
1354sub exec_async { 1377sub 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
1625Returns the number of screen-cells this string would need. Correctly 1651Returns the number of screen-cells this string would need. Correctly
1626accounts for wide and combining characters. 1652accounts for wide and combining characters.
1627 1653
1628=item $octets = $term->locale_encode ($string) 1654=item $octets = $term->locale_encode ($string)
1629 1655
1630Convert the given text string into the corresponding locale encoding. 1656Convert the given text string into the corresponding locale
1657encoding. 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
1634Convert the given locale-encoded octets into a perl string. 1661Convert the given locale-encoded octets into a perl string. Returns
1662C<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
1638XORs the rendition values in the given span with the provided value 1666XORs 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
2000Converts a perl string into the special encoding used by rxvt-unicode, 2028Converts a perl string into the special encoding used by rxvt-unicode,
2001where one character corresponds to one screen cell. See 2029where one character corresponds to one screen cell. See
2002C<< $term->ROW_t >> for details. 2030C<< $term->ROW_t >> for details.
2003 2031
2004=item $string = $term->special_decode $text 2032=item $string = $term->special_decode ($text)
2005 2033
2006Converts rxvt-unicode's text representation into a perl string. See 2034Converts rxvt-unicode's text representation into a perl string. See
2007C<< $term->ROW_t >> for details. 2035C<< $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])

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines