diff options
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luatexbase/luatexbase.sty')
-rw-r--r-- | Master/texmf-dist/tex/luatex/luatexbase/luatexbase.sty | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/Master/texmf-dist/tex/luatex/luatexbase/luatexbase.sty b/Master/texmf-dist/tex/luatex/luatexbase/luatexbase.sty index bc985aab9ab..8581588df51 100644 --- a/Master/texmf-dist/tex/luatex/luatexbase/luatexbase.sty +++ b/Master/texmf-dist/tex/luatex/luatexbase/luatexbase.sty @@ -5,7 +5,7 @@ #1#2[#3]{\endgroup\immediate\write-1{Package: #1 #3}} \fi \ProvidesPackage{luatexbase} -[2015/10/01 v1.0 +[2015/10/02 v1.1 luatexbase interface to LuaTeX ] \edef\emuatcatcode{\the\catcode`\@} @@ -62,15 +62,29 @@ function luatexbase.reset_callback(name,make_false) end luatexbase.base_add_to_callback=luatexbase.add_to_callback function luatexbase.add_to_callback(name,fun,description,priority) -if(luatexbase.callbacktypes[name] == 3 and - priority == 1 and - \string#luatexbase.callback_descriptions(name)==1) then - luatexbase.module_warning("luatexbase", - "resetting exclusive callback: " .. name) - luatexbase.reset_callback(name) -end -return + local priority= priority + if priority==nil then + priority=\string#luatexbase.callback_descriptions(name)+1 + end + if(luatexbase.callbacktypes[name] == 3 and + priority == 1 and + \string#luatexbase.callback_descriptions(name)==1) then + luatexbase.module_warning("luatexbase", + "resetting exclusive callback: " .. name) + luatexbase.reset_callback(name) + end + local saved_callback={},ff,dd + for k,v in pairs(luatexbase.callback_descriptions(name)) do + if k >= priority then + ff,dd= luatexbase.remove_from_callback(name, v) + saved_callback[k]={ff,dd} + end + end luatexbase.base_add_to_callback(name,fun,description) + for k,v in pairs(saved_callback) do + luatexbase.base_add_to_callback(name,v[1],v[2]) + end + return end luatexbase.catcodetables=setmetatable( {['latex-package'] = \number\CatcodeTableLaTeXAtLetter, |