summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/cldf-ini.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/cldf-ini.lua')
-rw-r--r--tex/context/base/mkiv/cldf-ini.lua34
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