--- rxvt-unicode/src/rxvtperl.xs 2006/01/02 19:05:05 1.4 +++ rxvt-unicode/src/rxvtperl.xs 2006/01/02 21:17:01 1.6 @@ -210,9 +210,8 @@ bool rxvt_perl_interp::invoke (rxvt_term *term, hook_type htype, ...) { - // INIT and DESTROY must be requested by the runtime - - if (!perl || !should_invoke [htype]) + if (!perl + || (!should_invoke [htype] && htype != HOOK_INIT && htype != HOOK_DESTROY)) return false; if (htype == HOOK_INIT) // first hook ever called @@ -244,6 +243,10 @@ XPUSHs (sv_2mortal (newSViv (va_arg (ap, long)))); break; + case DT_STRING: + XPUSHs (sv_2mortal (newSVpv (va_arg (ap, char *), 0))); + break; + case DT_END: { va_end (ap); @@ -291,7 +294,6 @@ { # define set_hookname(sym) av_store (hookname, PP_CONCAT(HOOK_, sym), newSVpv (PP_STRINGIFY(sym), 0)) AV *hookname = get_av ("urxvt::HOOKNAME", 1); - set_hookname (LOAD); set_hookname (INIT); set_hookname (RESET); set_hookname (START); @@ -307,6 +309,7 @@ set_hookname (TTY_ACTIVITY); set_hookname (REFRESH_BEGIN); set_hookname (REFRESH_END); + set_hookname (KEYBOARD_COMMAND); sv_setpv (get_sv ("urxvt::LIBDIR", 1), LIBDIR); }