… | |
… | |
303 | called whenever the relevant event happens. |
303 | called whenever the relevant event happens. |
304 | |
304 | |
305 | The first argument passed to them is an extension oject as described in |
305 | The first argument passed to them is an extension oject as described in |
306 | the in the C<Extension Objects> section. |
306 | the in the C<Extension Objects> section. |
307 | |
307 | |
308 | B<All> of these hooks must return a boolean value. If it is true, then the |
308 | B<All> of these hooks must return a boolean value. If any of the called |
309 | event counts as being I<consumed>, and the invocation of other hooks is |
309 | hooks returns true, then the event counts as being I<consumed>, and the |
310 | skipped, and the relevant action might not be carried out by the C++ code. |
310 | relevant action might not be carried out by the C++ code. |
311 | |
311 | |
312 | I<< When in doubt, return a false value (preferably C<()>). >> |
312 | I<< When in doubt, return a false value (preferably C<()>). >> |
313 | |
313 | |
314 | =over 4 |
314 | =over 4 |
315 | |
315 | |
316 | =item on_init $term |
316 | =item on_init $term |
317 | |
317 | |
318 | Called after a new terminal object has been initialized, but before |
318 | Called after a new terminal object has been initialized, but before |
319 | windows are created or the command gets run. Most methods are unsafe to |
319 | windows are created or the command gets run. Most methods are unsafe to |
320 | call or deliver senseless data, as terminal size and other characteristics |
320 | call or deliver senseless data, as terminal size and other characteristics |
321 | have not yet been determined. You can safely query and change resources, |
321 | have not yet been determined. You can safely query and change resources |
322 | though. |
322 | and options, though. For many purposes the C<on_start> hook is a better |
|
|
323 | place. |
|
|
324 | |
|
|
325 | =item on_start $term |
|
|
326 | |
|
|
327 | Called at the very end of initialisation of a new terminal, just before |
|
|
328 | returning to the mainloop. |
323 | |
329 | |
324 | =item on_reset $term |
330 | =item on_reset $term |
325 | |
331 | |
326 | Called after the screen is "reset" for any reason, such as resizing or |
332 | Called after the screen is "reset" for any reason, such as resizing or |
327 | control sequences. Here is where you can react on changes to size-related |
333 | control sequences. Here is where you can react on changes to size-related |
328 | variables. |
334 | variables. |
329 | |
|
|
330 | =item on_start $term |
|
|
331 | |
|
|
332 | Called at the very end of initialisation of a new terminal, just before |
|
|
333 | returning to the mainloop. |
|
|
334 | |
335 | |
335 | =item on_child_start $term, $pid |
336 | =item on_child_start $term, $pid |
336 | |
337 | |
337 | Called just after the child process has been C<fork>ed. |
338 | Called just after the child process has been C<fork>ed. |
338 | |
339 | |
… | |
… | |
734 | if $verbosity >= 10; |
735 | if $verbosity >= 10; |
735 | |
736 | |
736 | keys %$cb; |
737 | keys %$cb; |
737 | |
738 | |
738 | while (my ($pkg, $cb) = each %$cb) { |
739 | while (my ($pkg, $cb) = each %$cb) { |
739 | $retval = eval { $cb->($TERM->{_pkg}{$pkg}, @_) } |
740 | $retval ||= eval { $cb->($TERM->{_pkg}{$pkg}, @_) }; |
740 | and last; |
|
|
741 | |
741 | |
742 | if ($@) { |
742 | if ($@) { |
743 | $TERM->ungrab; # better to lose the grab than the session |
743 | $TERM->ungrab; # better to lose the grab than the session |
744 | warn $@; |
744 | warn $@; |
745 | } |
745 | } |