… | |
… | |
208 | } |
208 | } |
209 | |
209 | |
210 | bool |
210 | bool |
211 | rxvt_perl_interp::invoke (rxvt_term *term, hook_type htype, ...) |
211 | rxvt_perl_interp::invoke (rxvt_term *term, hook_type htype, ...) |
212 | { |
212 | { |
213 | // INIT and DESTROY must be requested by the runtime |
213 | if (!perl |
214 | |
214 | || (!should_invoke [htype] && htype != HOOK_INIT && htype != HOOK_DESTROY)) |
215 | if (!perl || !should_invoke [htype]) |
|
|
216 | return false; |
215 | return false; |
217 | |
216 | |
218 | if (htype == HOOK_INIT) // first hook ever called |
217 | if (htype == HOOK_INIT) // first hook ever called |
219 | term->self = (void *)newSVptr ((void *)term, "urxvt::term"); |
218 | term->self = (void *)newSVptr ((void *)term, "urxvt::term"); |
220 | |
219 | |
… | |
… | |
289 | |
288 | |
290 | BOOT: |
289 | BOOT: |
291 | { |
290 | { |
292 | # define set_hookname(sym) av_store (hookname, PP_CONCAT(HOOK_, sym), newSVpv (PP_STRINGIFY(sym), 0)) |
291 | # define set_hookname(sym) av_store (hookname, PP_CONCAT(HOOK_, sym), newSVpv (PP_STRINGIFY(sym), 0)) |
293 | AV *hookname = get_av ("urxvt::HOOKNAME", 1); |
292 | AV *hookname = get_av ("urxvt::HOOKNAME", 1); |
294 | set_hookname (LOAD); |
|
|
295 | set_hookname (INIT); |
293 | set_hookname (INIT); |
296 | set_hookname (RESET); |
294 | set_hookname (RESET); |
297 | set_hookname (START); |
295 | set_hookname (START); |
298 | set_hookname (DESTROY); |
296 | set_hookname (DESTROY); |
299 | set_hookname (SEL_BEGIN); |
297 | set_hookname (SEL_BEGIN); |