diff options
-rw-r--r-- | TODO | 1 | ||||
-rw-r--r-- | luatexbase-mcb.dtx | 16 |
2 files changed, 10 insertions, 7 deletions
@@ -17,5 +17,4 @@ declaration and no declaration? mcb --- -- code: verify that the return value of callback.register is checked - check type of all callbacks (& list) diff --git a/luatexbase-mcb.dtx b/luatexbase-mcb.dtx index c0d8c58..ce6f37e 100644 --- a/luatexbase-mcb.dtx +++ b/luatexbase-mcb.dtx @@ -510,14 +510,18 @@ end local lua_callbacks_defaults = { } % \end{macrocode} % -% Overwrite |callback.register|, but save it first. +% Overwrite |callback.register|, but save it first. Also define a wrapper +% that automatically raise an error when something goes wrong. % % \begin{macrocode} -local internalregister = internalregister or callback.register +local original_register = original_register or callback.register callback.register = function () err("function callback.register has been trapped,\n" .."please use luatexbase.add_to_callback instead.") end +local function register_callback(...) + return assert(original_register(...)) +end % \end{macrocode} % % \subsubsection{Handlers} @@ -640,7 +644,7 @@ function add_to_callback (name,func,description,priority) l = {} callbacklist[name] = l if not lua_callbacks_defaults[name] then - internalregister(name, handlers[callbacktypes[name]](name)) + register_callback(name, handlers[callbacktypes[name]](name)) end end % \end{macrocode} @@ -718,7 +722,7 @@ function remove_from_callback (name, description) if table.maxn(l) == 0 then callbacklist[name] = nil if not lua_callbacks_defaults[name] then - internalregister(name, nil) + register_callback(name, nil) end end return @@ -739,9 +743,9 @@ function reset_callback (name, make_false) end if not lua_callbacks_defaults[name] then if make_false == true then - internalregister(name, false) + register_callback(name, false) else - internalregister(name, nil) + register_callback(name, nil) end end local l = callbacklist[name] |