diff options
Diffstat (limited to 'tex/context/base/mkiv/cldf-ini.lua')
-rw-r--r-- | tex/context/base/mkiv/cldf-ini.lua | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/tex/context/base/mkiv/cldf-ini.lua b/tex/context/base/mkiv/cldf-ini.lua index 0253adde5..f4819b11a 100644 --- a/tex/context/base/mkiv/cldf-ini.lua +++ b/tex/context/base/mkiv/cldf-ini.lua @@ -485,17 +485,37 @@ local catcodes = { xml = xmlcatcodes, xmlcatcodes = xmlcatcodes, } +-- maybe just increment / decrement + +-- local function pushcatcodes(c) +-- insert(catcodestack,currentcatcodes) +-- currentcatcodes = (c and catcodes[c] or tonumber(c)) or currentcatcodes +-- contentcatcodes = currentcatcodes +-- end +-- +-- local function popcatcodes() +-- currentcatcodes = remove(catcodestack) or currentcatcodes +-- contentcatcodes = currentcatcodes +-- end + +local catcodelevel = 0 + local function pushcatcodes(c) - insert(catcodestack,currentcatcodes) + catcodelevel = catcodelevel + 1 + catcodestack[catcodelevel] = currentcatcodes currentcatcodes = (c and catcodes[c] or tonumber(c)) or currentcatcodes contentcatcodes = currentcatcodes end local function popcatcodes() - currentcatcodes = remove(catcodestack) or currentcatcodes + if catcodelevel > 0 then + currentcatcodes = catcodestack[catcodelevel] or currentcatcodes + catcodelevel = catcodelevel - 1 + end contentcatcodes = currentcatcodes end +context.catcodes = catcodes context.pushcatcodes = pushcatcodes context.popcatcodes = popcatcodes @@ -1351,7 +1371,7 @@ do if data and data ~= "" then local filename = resolve("virtual",validstring(tag,"viafile"),data) -- context.startregime { "utf" } - context.input(filename) + input(filename) -- context.stopregime() end end @@ -1362,7 +1382,7 @@ do local collected = nil local nofcollected = 0 - local sentinel = string.char(26) -- endoffileasciicode : ignorecatcode + local sentinel = string.char(26) -- ASCII SUB character : endoffileasciicode : ignorecatcode local level = 0 local function collect(c,...) -- can be optimized @@ -1385,13 +1405,15 @@ do local collectdirect = collect + -- doesn't work well with tracing do we need to avoid that then + function context.startcollecting() if level == 0 then collected = { } nofcollected = 0 -- - flush = collect - flushdirect = collectdirect + flush = collect + flushdirect = collectdirect -- context.__flush = flush context.__flushdirect = flushdirect |