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.269 by root, Sun Nov 21 15:15:02 2021 UTC vs.
Revision 1.270 by root, Fri Nov 26 18:49:47 2021 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 {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines