summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2010-02-17 14:24:00 +0100
committerHans Hagen <pragma@wxs.nl>2010-02-17 14:24:00 +0100
commita7dd0093b962777a8944812d5a56e6c5f972b8b1 (patch)
treeae13fa28e42dc9c27cb1f95272fe00a70492078b
parent3f2e64b7790558e460c65c2ea60e4eb3c6b5e0a9 (diff)
downloadcontext-a7dd0093b962777a8944812d5a56e6c5f972b8b1.tar.gz
beta 2010.02.17 14:24
-rw-r--r--tex/context/base/anch-pgr.mkiv8
-rw-r--r--tex/context/base/anch-pos.lua33
-rw-r--r--tex/context/base/anch-pos.mkiv24
-rw-r--r--tex/context/base/cont-new.mkiv33
-rw-r--r--tex/context/base/font-def.lua4
-rw-r--r--tex/context/base/lpdf-ini.lua25
-rw-r--r--tex/context/base/lpdf-ini.mkiv3
-rw-r--r--tex/context/base/luat-cbk.lua111
-rw-r--r--tex/context/base/luat-cnf.lua12
-rw-r--r--tex/context/base/luat-dum.lua3
-rw-r--r--tex/context/base/luat-fio.lua2
-rw-r--r--tex/context/base/luat-run.lua12
-rw-r--r--tex/context/base/math-noa.lua2
-rw-r--r--tex/context/base/node-pro.lua6
-rw-r--r--tex/context/base/node-tex.lua6
-rw-r--r--tex/context/base/page-lin.mkiv3
-rw-r--r--tex/context/base/scrn-hlp.mkiv46
-rw-r--r--tex/context/base/spac-hor.mkiv10
-rw-r--r--tex/context/base/spac-ver.lua27
-rw-r--r--tex/context/base/strc-def.mkiv2
-rw-r--r--tex/context/base/strc-reg.lua4
-rw-r--r--tex/context/base/strc-reg.mkiv10
-rw-r--r--tex/context/base/strc-sec.mkiv16
-rw-r--r--tex/context/base/task-ini.lua4
-rw-r--r--tex/generic/context/luatex-fonts-merged.lua9
25 files changed, 251 insertions, 164 deletions
diff --git a/tex/context/base/anch-pgr.mkiv b/tex/context/base/anch-pgr.mkiv
index a32757b5c..642a20d93 100644
--- a/tex/context/base/anch-pgr.mkiv
+++ b/tex/context/base/anch-pgr.mkiv
@@ -900,12 +900,13 @@
\else
\MPy#1-\MPy#2-\MPy\textanchor+\MPy\textanchor+\MPh\textanchor
\fi
- \fi}%
+ \fi
+ \relax}%
\edef\textparwidth
{\the\dimexpr
\ifcase\scratchcounter
% one page
- \dimexpr\MPx#2-\MPx#1%
+ \MPx#2-\MPx#1%
\else
% two or more pages / maybe also hang
\ifx#3\relax
@@ -913,7 +914,8 @@
\else
\MPw\MPparanchor-\MPl\MPparanchor-\MPr\MPparanchor
\fi
- \fi}}
+ \fi
+ \relax}}
\def\mintextparheight{4\lineheight}
diff --git a/tex/context/base/anch-pos.lua b/tex/context/base/anch-pos.lua
index c975c715a..dc10f8f1e 100644
--- a/tex/context/base/anch-pos.lua
+++ b/tex/context/base/anch-pos.lua
@@ -60,24 +60,25 @@ function jobpositions.MPh(id) local jpi = pcol[id] or ptbs[id] texprint(ctxcatco
function jobpositions.MPd(id) local jpi = pcol[id] or ptbs[id] texprint(ctxcatcodes,(jpi and jpi[6]) or '0pt') end
- function jobpositions.MPx(id)
- local jpi = pcol[id] or ptbs[id]
- local x = jpi and jpi[2]
- if x then
- texprint(ctxcatcodes,format('\\the\\dimexpr %s-%s\\relax',x,dx))
- else
- texprint(ctxcatcodes,'0pt')
- end
+function jobpositions.MPx(id)
+ local jpi = pcol[id] or ptbs[id]
+ local x = jpi and jpi[2]
+ if x then
+ texprint(ctxcatcodes,format('\\the\\dimexpr%s-%s\\relax',x,dx)) -- no space after dimexpr !
+ else
+ texprint(ctxcatcodes,'0pt')
end
- function jobpositions.MPy(id)
- local jpi = pcol[id] or ptbs[id]
- local y = jpi and jpi[3]
- if y then
- texprint(ctxcatcodes,format('\\the\\dimexpr %s-%s\\relax',y,dy))
- else
- texprint(ctxcatcodes,'0pt')
- end
+end
+
+function jobpositions.MPy(id)
+ local jpi = pcol[id] or ptbs[id]
+ local y = jpi and jpi[3]
+ if y then
+ texprint(ctxcatcodes,format('\\the\\dimexpr%s-%s\\relax',y,dy)) -- no space after dimexpr !
+ else
+ texprint(ctxcatcodes,'0pt')
end
+end
-- the following are only for MP so there we can leave out the pt
diff --git a/tex/context/base/anch-pos.mkiv b/tex/context/base/anch-pos.mkiv
index 0ddda9af4..e454747da 100644
--- a/tex/context/base/anch-pos.mkiv
+++ b/tex/context/base/anch-pos.mkiv
@@ -205,18 +205,18 @@
% \the\dimexpr\noexpand\lastsavedpositionx\ifnum\positionanchormode=\plusone-\MPx\pageanchor\fi\relax
% \the\dimexpr\noexpand\lastsavedpositiony\ifnum\positionanchormode=\plusone-\MPx\pageanchor\fi\relax
-\def\MPp #1{\ctxlua{jobpositions.MPp("#1")}}
-\def\MPx #1{\ctxlua{jobpositions.MPx("#1")}}
-\def\MPy #1{\ctxlua{jobpositions.MPy("#1")}}
-\def\MPw #1{\ctxlua{jobpositions.MPw("#1")}}
-\def\MPh #1{\ctxlua{jobpositions.MPh("#1")}}
-\def\MPd #1{\ctxlua{jobpositions.MPd("#1")}}
-\def\MPxy #1{\ctxlua{jobpositions.MPxy("#1")}}
-\def\MPll #1{\ctxlua{jobpositions.MPll("#1")}}
-\def\MPlr #1{\ctxlua{jobpositions.MPlr("#1")}}
-\def\MPur #1{\ctxlua{jobpositions.MPur("#1")}}
-\def\MPul #1{\ctxlua{jobpositions.MPul("#1")}}
-\def\MPpos #1{\ctxlua{jobpositions.MPpos("#1")}}
+\def\MPp #1{\ctxlua{jobpositions.MPp("#1")}}
+\def\MPx #1{\ctxlua{jobpositions.MPx("#1")}}
+\def\MPy #1{\ctxlua{jobpositions.MPy("#1")}}
+\def\MPw #1{\ctxlua{jobpositions.MPw("#1")}}
+\def\MPh #1{\ctxlua{jobpositions.MPh("#1")}}
+\def\MPd #1{\ctxlua{jobpositions.MPd("#1")}}
+\def\MPxy #1{\ctxlua{jobpositions.MPxy("#1")}}
+\def\MPll #1{\ctxlua{jobpositions.MPll("#1")}}
+\def\MPlr #1{\ctxlua{jobpositions.MPlr("#1")}}
+\def\MPur #1{\ctxlua{jobpositions.MPur("#1")}}
+\def\MPul #1{\ctxlua{jobpositions.MPul("#1")}}
+\def\MPpos#1{\ctxlua{jobpositions.MPpos("#1")}}
%D \macros
%D {MPplus, MPrest, MPv, MPvv}
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index 5b751a632..ce16ac69a 100644
--- a/tex/context/base/cont-new.mkiv
+++ b/tex/context/base/cont-new.mkiv
@@ -100,39 +100,6 @@
% \def\loadallXfontmapfiles{\ctxlua{fonts.map.flush("pdftex")}}
-% \ctxlua{
-% do
-% local pth = "." .. io.fileseparator .. "tmp" .. io.fileseparator .. "\jobname"
-% texio.write_nl("CREATING "..pth)
-% os.execute("mkdir " .. pth)
-% end
-% resolvers.output_files = { }
-% callback.register('find_write_file', function(id,name)
-% resolvers.output_files[name] = file.join(".","tmp","\jobname",name)
-% texio.write_nl("REDIRECTING OUTPUT "..name.. " TO " .. resolvers.output_files[name])
-% return resolvers.output_files[name]
-% end)
-% callback.register('find_read_file', function(id,name)
-% local sname = string.gsub(name,"^\letterpercent./","")
-% if resolvers.output_files[sname] then
-% return resolvers.output_files[name]
-% elseif string.find(sname,"^\jobname[\letterpercent.\letterpercent-]") then
-% local n = file.join(".","tmp","\jobname",sname)
-% local f = io.open(n)
-% if f then
-% resolvers.output_files[name] = n
-% texio.write_nl("REDIRECTING INPUT "..sname.. " TO " .. n)
-% f:close()
-% return n
-% else
-% return resolvers.findtexfile(name)
-% end
-% else
-% return resolvers.findtexfile(name)
-% end
-% end)
-% }
-
\protect \endinput
% \expanded{\defineactivecharacter \number"2000E} {\textdir TRT\relax}
diff --git a/tex/context/base/font-def.lua b/tex/context/base/font-def.lua
index 02369cc37..fcbbce1a3 100644
--- a/tex/context/base/font-def.lua
+++ b/tex/context/base/font-def.lua
@@ -644,5 +644,5 @@ end
<p>We overload both the <l n='tfm'/> and <l n='vf'/> readers.</p>
--ldx]]--
-callback.register('define_font' , define.read)
-callback.register('find_vf_file', vf.find ) -- not that relevant any more
+callbacks.register('define_font' , define.read, "definition of fonts (tfmtable preparation)")
+callbacks.register('find_vf_file', vf.find , "locating virtual fonts, insofar needed") -- not that relevant any more
diff --git a/tex/context/base/lpdf-ini.lua b/tex/context/base/lpdf-ini.lua
index 0588829ba..5b37aca05 100644
--- a/tex/context/base/lpdf-ini.lua
+++ b/tex/context/base/lpdf-ini.lua
@@ -9,7 +9,7 @@ if not modules then modules = { } end modules ['lpdf-ini'] = {
-- This code is very experimental !
local setmetatable, getmetatable, type, next, tostring, tonumber, rawset = setmetatable, getmetatable, type, next, tostring, tonumber, rawset
-local char, byte, format, gsub, concat, match = string.char, string.byte, string.format, string.gsub, table.concat, string.match
+local char, byte, format, gsub, concat, match, sub = string.char, string.byte, string.format, string.gsub, table.concat, string.match, string.sub
local utfvalues = string.utfvalues
local texwrite = tex.write
local sind, cosd = math.sind, math.cosd
@@ -142,9 +142,8 @@ tostring_a = function(t,contentonly,key)
r[#r+1] = tosixteen(v)
elseif tv == "table" then
local mv = getmetatable(v)
- local mt = mv.__lpdftype
- if mv and mt then
---~ print(mv,mt,v)
+ local mt = mv and mv.__lpdftype
+ if mt then
r[#r+1] = tostring(v)
elseif v[1] then
r[#r+1] = tostring_a(v)
@@ -193,6 +192,7 @@ local function value_d(t) return tostring_d(t,true,key) end -- the call is e
local function value_a(t) return tostring_a(t,true,key) end -- the call is experimental
local function value_z() return nil end -- the call is experimental
local function value_t() return true end -- the call is experimental
+local function value_f() return false end -- the call is experimental
local function value_b() return false end -- the call is experimental
local function value_r() return t[1] end -- the call is experimental
local function value_v() return t[1] end -- the call is experimental
@@ -276,7 +276,7 @@ function lpdf.null()
end
function lpdf.boolean(b,default)
- if ((type(b) == boolean) and b) or default then
+ if ((type(b) == "boolean") and b) or default then
return p_true
else
return p_false
@@ -316,6 +316,14 @@ end
--~ local d = lpdf.dictionary()
--~ d["abcd"] = { 1, 2, 3, "test" }
--~ print(d)
+--~ print(d())
+
+--~ local d = lpdf.array()
+--~ d[#d+1] = 1
+--~ d[#d+1] = 2
+--~ d[#d+1] = 3
+--~ d[#d+1] = "test"
+--~ print(d)
--~ local d = lpdf.array()
--~ d[#d+1] = { 1, 2, 3, "test" }
@@ -325,9 +333,14 @@ end
--~ d[#d+1] = { a=1, b=2, c=3, d="test" }
--~ print(d)
---~ local s = lpdf.boolean(false)
+--~ local s = lpdf.constant("xx")
+--~ print(s) -- fails somehow
--~ print(s()) -- fails somehow
+--~ local s = lpdf.boolean(false)
+--~ print(s)
+--~ print(s())
+
function lpdf.checkedkey(t,key,kind)
local pn = t[key]
if pn then
diff --git a/tex/context/base/lpdf-ini.mkiv b/tex/context/base/lpdf-ini.mkiv
index d71206584..7c7dce3ef 100644
--- a/tex/context/base/lpdf-ini.mkiv
+++ b/tex/context/base/lpdf-ini.mkiv
@@ -38,7 +38,8 @@
%D
%D For drawing ovals we use quite raw \PDF\ code. The next
%D implementation does not differ that much from the one
-%D implemented in the \POSTSCRIPT\ driver.
+%D implemented in the \POSTSCRIPT\ driver. This code is
+%D somewhat obsolete as we now have metapost embedded.
\def\doPDFovalcalc#1#2#3%
{\PointsToBigPoints{\dimexpr#1+#2\relax}#3}
diff --git a/tex/context/base/luat-cbk.lua b/tex/context/base/luat-cbk.lua
index 680a01c8f..cc2f8a354 100644
--- a/tex/context/base/luat-cbk.lua
+++ b/tex/context/base/luat-cbk.lua
@@ -6,6 +6,8 @@ if not modules then modules = { } end modules ['luat-cbk'] = {
license = "see context related readme files"
}
+local insert, remove, find = table.insert, table.remove, string.find
+
local trace_checking = false trackers.register("memory.checking", function(v) trace_checking = v end)
--[[ldx--
@@ -14,8 +16,7 @@ your own code into the <l n='tex'/> engine. Here we implement a few handy
auxiliary functions.</p>
--ldx]]--
-callbacks = { }
-callbacks.stack = { }
+callbacks = callbacks or { }
--[[ldx--
<p>When you (temporarily) want to install a callback function, and after a
@@ -23,20 +24,112 @@ while wants to revert to the original one, you can use the following two
functions.</p>
--ldx]]--
+local trace_callbacks = false trackers.register("system.callbacks", function(v) trace_callbacks = v end)
+
+local register_callback, find_callback = callback.register, callback.find
+local frozen, stack = { }, { }
+
+local function frozenmessage(what,name)
+ logs.report("callbacks","not %s frozen '%s' (%s)",what,name,frozen[name])
+end
+
+function callbacks.report()
+ local list = callback.list()
+ for name, func in table.sortedpairs(list) do
+ local str = frozen[name]
+ func = (func and "set") or "nop"
+ if str then
+ logs.report("callbacks","%s: %s -> %s",func,name,str)
+ else
+ logs.report("callbacks","%s: %s",func,name)
+ end
+ end
+end
+
+function callbacks.table()
+ context.starttabulate { "|l|l|p|" }
+ for name, func in table.sortedpairs(callback.list()) do
+ context.NC()
+ context.type((func and "set") or "nop")
+ context.NC()
+ context.type(name)
+ context.NC()
+ context(frozen[name] or "")
+ context.NC()
+ context.NR()
+ end
+ context.stoptabulate()
+end
+
+function callbacks.freeze(name,freeze)
+ freeze = type(freeze) == "string" and freeze
+--~ print(name)
+ if find(name,"%*") then
+ local pattern = name -- string.simpleesc(name)
+ local list = callback.list()
+ for name, func in pairs(list) do
+ if find(name,pattern) then
+ frozen[name] = freeze or frozen[name] or "frozen"
+ end
+ end
+ else
+ frozen[name] = freeze or frozen[name] or "frozen"
+ end
+end
+
+function callbacks.register(name,func,freeze)
+ if frozen[name] then
+ if trace_callbacks then
+ frozenmessage("registering",name)
+ end
+ elseif freeze then
+ frozen[name] = (type(freeze) == "string" and freeze) or "registered"
+ register_callback(name,func)
+ else
+ register_callback(name,func)
+ end
+end
+
+function callback.register(name,func) -- original
+ if not frozen[name] then
+ register_callback(name,func)
+ elseif trace_callbacks then
+ frozenmessage("registering",name)
+ end
+end
+
function callbacks.push(name, func)
- if not callbacks.stack[name] then
- callbacks.stack[name] = { }
+ if not frozen[name] then
+ local sn = stack[name]
+ if not sn then
+ sn = { }
+ stack[name] = sn
+ end
+ insert(sn,find_callback(name))
+ register_callback(name, func)
+ elseif trace_callbacks then
+ frozenmessage("pushing",name)
end
- table.insert(callbacks.stack[name],callback.find(name))
- callback.register(name, func)
end
function callbacks.pop(name)
--- this fails: callback.register(name, table.remove(callbacks.stack[name]))
- local func = table.remove(callbacks.stack[name])
- callback.register(name, func)
+ if frozen[name] then
+ -- do nothing
+ elseif #stack == 0 then
+ -- some error
+ else
+ -- this fails: register_callback(name, remove(stack[name]))
+ local func = remove(stack[name])
+ register_callback(name, func)
+ end
end
+--~ -- somehow crashes later on
+--~
+--~ callbacks.freeze("find_.*_file","finding file")
+--~ callbacks.freeze("read_.*_file","reading file")
+--~ callbacks.freeze("open_.*_file","opening file")
+
--[[ldx--
<p>The simple case is to remove the callback:</p>
diff --git a/tex/context/base/luat-cnf.lua b/tex/context/base/luat-cnf.lua
index ae132e4e6..e45aceb79 100644
--- a/tex/context/base/luat-cnf.lua
+++ b/tex/context/base/luat-cnf.lua
@@ -43,18 +43,18 @@ end
local stub = [[
-- checking
-storage = storage or {}
-luatex = luatex or {}
-
--- as soon as possible
-
-luatex.starttime = os.gettimeofday()
+storage = storage or { }
+luatex = luatex or { }
-- we provide our own file handling
texconfig.kpse_init = false
texconfig.shell_escape = 't'
+-- as soon as possible
+
+luatex.starttime = os.gettimeofday()
+
-- this will happen after the format is loaded
function texconfig.init()
diff --git a/tex/context/base/luat-dum.lua b/tex/context/base/luat-dum.lua
index ceda2d923..19e95e2b1 100644
--- a/tex/context/base/luat-dum.lua
+++ b/tex/context/base/luat-dum.lua
@@ -42,6 +42,9 @@ tasks = {
appendaction = dummyfunction,
prependaction = dummyfunction,
}
+callbacks = {
+ register = function(n,f) return callback.register(n,f) end,
+}
-- we need to cheat a bit here
diff --git a/tex/context/base/luat-fio.lua b/tex/context/base/luat-fio.lua
index 334297f03..0209fc243 100644
--- a/tex/context/base/luat-fio.lua
+++ b/tex/context/base/luat-fio.lua
@@ -42,7 +42,7 @@ if not resolvers.instance then
callback.register('find_map_file' , function(name) return resolvers.findbinfile(name,"map") end)
callback.register('find_ocp_file' , function(name) return resolvers.findbinfile(name,"ocp") end)
callback.register('find_opentype_file' , function(name) return resolvers.findbinfile(name,"otf") end)
- callback.register('find_output_file' , function(name) return name end)
+ callback.register('find_output_file' , function(name) return name end)
callback.register('find_pk_file' , function(name) return resolvers.findbinfile(name,"pk") end)
callback.register('find_sfd_file' , function(name) return resolvers.findbinfile(name,"sfd") end)
callback.register('find_truetype_file' , function(name) return resolvers.findbinfile(name,"ttf") end)
diff --git a/tex/context/base/luat-run.lua b/tex/context/base/luat-run.lua
index 44126f526..f2072f74a 100644
--- a/tex/context/base/luat-run.lua
+++ b/tex/context/base/luat-run.lua
@@ -61,9 +61,9 @@ end
-- this can be done later
-callback.register('start_run', main.start)
-callback.register('stop_run', main.stop)
-callback.register('report_output_pages', main.report_output_pages)
-callback.register('report_output_log' , main.report_output_log)
-callback.register('start_page_number' , main.start_shipout_page)
-callback.register('stop_page_number' , main.stop_shipout_page)
+callbacks.register('start_run', main.start, "actions performed at the beginning of a run")
+callbacks.register('stop_run', main.stop, "actions performed at the end of a run")
+callbacks.register('report_output_pages', main.report_output_pages, "actions performed when reporting pages")
+callbacks.register('report_output_log' , main.report_output_log, "actions performed when reporting log file")
+callbacks.register('start_page_number' , main.start_shipout_page, "actions performed at the beginning of a shipout")
+callbacks.register('stop_page_number' , main.stop_shipout_page, "actions performed at the end of a shipout")
diff --git a/tex/context/base/math-noa.lua b/tex/context/base/math-noa.lua
index b226444a4..cca1812d2 100644
--- a/tex/context/base/math-noa.lua
+++ b/tex/context/base/math-noa.lua
@@ -358,7 +358,7 @@ function nodes.processors.mlist_to_hlist(head,style,penalties)
return head, done
end
-callback.register('mlist_to_hlist',nodes.processors.mlist_to_hlist)
+callbacks.register('mlist_to_hlist',nodes.processors.mlist_to_hlist,"preprocessing math list")
-- tracing
diff --git a/tex/context/base/node-pro.lua b/tex/context/base/node-pro.lua
index 8b2e92ff2..b294b850f 100644
--- a/tex/context/base/node-pro.lua
+++ b/tex/context/base/node-pro.lua
@@ -108,8 +108,8 @@ function nodes.processors.hpack_filter(head,groupcode)
return true
end
-callback.register('pre_linebreak_filter', nodes.processors.pre_linebreak_filter)
-callback.register('hpack_filter' , nodes.processors.hpack_filter)
+callbacks.register('pre_linebreak_filter', nodes.processors.pre_linebreak_filter,"all kind of horizontal manipulations (before par break)")
+callbacks.register('hpack_filter' , nodes.processors.hpack_filter,"all kind of horizontal manipulations")
local actions = tasks.actions("finalizers",2) -- head, where, boolean
@@ -142,7 +142,7 @@ function nodes.processors.post_linebreak_filter(head,groupcode)
--~ return true
end
-callback.register('post_linebreak_filter', nodes.processors.post_linebreak_filter)
+callbacks.register('post_linebreak_filter', nodes.processors.post_linebreak_filter,"all kind of horizontal manipulations (after par break)")
statistics.register("h-node processing time", function()
if statistics.elapsedindeed(nodes) then
diff --git a/tex/context/base/node-tex.lua b/tex/context/base/node-tex.lua
index c5781ab5a..a6eef3269 100644
--- a/tex/context/base/node-tex.lua
+++ b/tex/context/base/node-tex.lua
@@ -34,6 +34,6 @@ function kernel.kerning(head)
return head, done
end
-callback.register('hyphenate' , false)
-callback.register('ligaturing', false)
-callback.register('kerning' , false)
+callbacks.register('hyphenate' , false, "normal hyphenation routine, called elsewhere")
+callbacks.register('ligaturing', false, "normal ligaturing routine, called elsewhere")
+callbacks.register('kerning' , false, "normal kerning routine, called elsewhere")
diff --git a/tex/context/base/page-lin.mkiv b/tex/context/base/page-lin.mkiv
index 8c7144a48..2e3703eae 100644
--- a/tex/context/base/page-lin.mkiv
+++ b/tex/context/base/page-lin.mkiv
@@ -476,8 +476,7 @@
\ctxlua{
nodes.lines.scratchbox = \number\linenumberscratchbox ;
- % callback.register('vpack_filter', nodes.lines.flowed.apply)
- callback.register('post_linebreak_filter', nodes.lines.flowed.apply)
+ -- register nodes.lines.flowed.apply in post_linebreak_filter actions
}
\fi
diff --git a/tex/context/base/scrn-hlp.mkiv b/tex/context/base/scrn-hlp.mkiv
index c9fcbd29a..4eaa340ca 100644
--- a/tex/context/base/scrn-hlp.mkiv
+++ b/tex/context/base/scrn-hlp.mkiv
@@ -38,6 +38,9 @@
\newcounter \nofhelpdataentries
\newconditional \somehelpdatadefined
+\let\getpagehelpdata \relax
+\let\synchronizepagehelpdata\relax
+
\appendtoks \getpagehelpdata \to \beforeeverypage
\appendtoks \synchronizepagehelpdata \to \aftereverypage
@@ -46,43 +49,48 @@
\let\pagehelpdata\empty
\def\dontresetpagedata
- {\let\synchronizepagehelpdata\relax}
+ {\let\synchronizepagehelpdataindeed\relax}
\def\resetpagehelpdata
{\iflocation
- \let\synchronizepagehelpdata\resetpagehelpdata
+ \let\synchronizepagehelpdataindeed\resetpagehelpdata
\global\let\pagehelpdata\empty
\resetreference[HideHelp]%
\fi}
-\let\synchronizepagehelpdata\resetpagehelpdata
+\let\synchronizepagehelpdataindeed\resetpagehelpdata
\resetreference[HideHelp]
-\def\getpagehelpdata
+\def\getpagehelpdataindeed
{\iflocation\ifcase\nofhelpdataentries\else
- \let\pagehelpdata\empty
- \ifconditional\somehelpdatadefined
- \definetwopasslist{hlp:\realfolio}%
- \doloop
- {\gettwopassdata{hlp:\realfolio}%
- \iftwopassdatafound
- \addtocommalist\twopassdata\pagehelpdata
- \else
- \exitloop
- \fi}%
- \fi
- \ifx\pagehelpdata\empty \else
- \useJSscripts[fld]%
- \definereference[HideHelp][JS(Hide_Fields)]% for the moment
- \fi
+ \dogetpagehelpdataindeed
\fi\fi}
+\def\dogetpagehelpdataindeed
+ {\let\pagehelpdata\empty
+ \ifconditional\somehelpdatadefined
+ \definetwopasslist{hlp:\realfolio}%
+ \doloop
+ {\gettwopassdata{hlp:\realfolio}%
+ \iftwopassdatafound
+ \addtocommalist\twopassdata\pagehelpdata
+ \else
+ \exitloop
+ \fi}%
+ \fi
+ \ifx\pagehelpdata\empty \else
+ \useJSscripts[fld]%
+ \definereference[HideHelp][JS(Hide_Fields)]% for the moment
+ \fi}
+
\def\setpagehelpdata[#1]%
{\iflocation\expanded{\dosetpagehelpdata{#1}}\fi}
\def\dosetpagehelpdata#1%
{\doglobal\increment\nofhelpdataentries
+ \global\let\getpagehelpdata\getpagehelpdataindeed
+ \global\let\synchronizepagehelpdata\synchronizepagehelpdataindeed
\savetwopassdata{hlp:\realfolio}{\nofhelpdataentries}{#1}}
\setvalue{\e!start\v!helptext}[#1]%
diff --git a/tex/context/base/spac-hor.mkiv b/tex/context/base/spac-hor.mkiv
index fca5624ec..a6754937b 100644
--- a/tex/context/base/spac-hor.mkiv
+++ b/tex/context/base/spac-hor.mkiv
@@ -812,12 +812,12 @@
\installspacehandler \v!on
{\obeyspaces
- \def\obeyedspace{\mathortext\normalspace{\dontleavehmode{\tt\controlspace}}}%
+ \unexpanded\def\obeyedspace{\mathortext\normalspace{\dontleavehmode{\tt\controlspace}}}%
\let\ =\obeyedspace}
\installspacehandler \v!yes
{\obeyspaces
- \def\obeyedspace{\mathortext\normalspace{\dontleavehmode\normalspace}}%
+ \unexpanded\def\obeyedspace{\mathortext\normalspace{\dontleavehmode\normalspace}}%
\let\ =\obeyedspace}
\installspacehandler \v!off % == default
@@ -827,10 +827,14 @@
\installspacehandler \v!fixed
{\obeyspaces
- \def\obeyedspace{\mathortext\normalspace{\dontleavehmode\fixedspace}}%
+ \unexpanded\def\obeyedspace{\mathortext\normalspace{\dontleavehmode\fixedspace}}%
\let\ =\obeyedspace}
\def\activatespacehandler#1%
{\executeifdefined{\??sr#1}{\activatespacehandler\v!off}}
+\appendtoks
+ \normalspaces % to be sure
+\to \everybeforeoutput
+
\protect \endinput
diff --git a/tex/context/base/spac-ver.lua b/tex/context/base/spac-ver.lua
index 735ebbdde..3bfc84a19 100644
--- a/tex/context/base/spac-ver.lua
+++ b/tex/context/base/spac-ver.lua
@@ -1001,9 +1001,9 @@ local ignore = table.tohash {
function nodes.handle_vbox_spacing(head,where)
if head and not ignore[where] and head.next then
---~ starttiming(vspacing)
+ -- starttiming(vspacing)
head = collapser(head,"vbox",where,trace_vbox_vspacing,false)
---~ stoptiming(vspacing)
+ -- stoptiming(vspacing)
end
return head
end
@@ -1011,27 +1011,12 @@ end
function nodes.collapse_vbox(n) -- for boxes
local list = texbox[n].list
if list then
---~ starttiming(vspacing)
+ -- starttiming(vspacing)
texbox[n].list = vpack_node(collapser(list,"snapper","vbox",trace_vbox_vspacing,true))
---~ stoptiming(vspacing)
+ -- stoptiming(vspacing)
end
end
--- these are experimental callback definitions that definitely will
--- be moved elsewhere as part of a chain of vnode handling
---
--- function vspacing.enable()
--- callback.register('vpack_filter', nodes.handle_vbox_spacing) -- enabled per 2009/10/16
--- callback.register('buildpage_filter', nodes.handle_page_spacing)
--- end
---
--- function vspacing.disable()
--- callback.register('vpack_filter', nil)
--- callback.register('buildpage_filter', nil)
--- end
---
--- vspacing.enable()
-
-- we will split this module hence the locals
local attribute = attributes.private('graphicvadjust')
@@ -1127,8 +1112,8 @@ function nodes.builders.buildpage_filter(groupcode)
return (done and head) or true
end
-callback.register('vpack_filter', nodes.builders.vpack_filter)
-callback.register('buildpage_filter', nodes.builders.buildpage_filter)
+callbacks.register('vpack_filter', nodes.builders.vpack_filter,"vertical spacing etc")
+callbacks.register('buildpage_filter', nodes.builders.buildpage_filter,"vertical spacing etc (mvl)")
statistics.register("v-node processing time", function()
if statistics.elapsedindeed(builders) then
diff --git a/tex/context/base/strc-def.mkiv b/tex/context/base/strc-def.mkiv
index 7f1db7065..0ef59b300 100644
--- a/tex/context/base/strc-def.mkiv
+++ b/tex/context/base/strc-def.mkiv
@@ -120,7 +120,7 @@
\definestructureseparatorset [\v!appendix:\s!default] [] [.]
\definestructureconversionset [\v!appendix:\s!default] [Romannumerals,Characters] [numbers]
-\definestructureresetset [\v!appendix:\s!default] [] [0]
+\definestructureresetset [\v!appendix:\s!default] [] [1] % why was this 0
% \definesectionblock
diff --git a/tex/context/base/strc-reg.lua b/tex/context/base/strc-reg.lua
index 95246bff7..60d00f8b2 100644
--- a/tex/context/base/strc-reg.lua
+++ b/tex/context/base/strc-reg.lua
@@ -295,8 +295,9 @@ function jobregisters.compare(a,b)
for i=1,max do
if result == 0 then
result = compare(ea[i],eb[i])
+ else
+ break
end
- return result
end
if result ~= 0 then
return result
@@ -495,6 +496,7 @@ function jobregisters.flush(data,options,prefixspec,pagespec)
local kind = entry.metadata.kind
if kind == 'entry' then
texsprint(ctxcatcodes,"\\startregisterpages")
+--~ collapse_ranges = true
if collapse_singles or collapse_ranges then
-- we collapse ranges and keep existing ranges as they are
-- so we get prebuilt as well as built ranges
diff --git a/tex/context/base/strc-reg.mkiv b/tex/context/base/strc-reg.mkiv
index d807b2939..4fa29285a 100644
--- a/tex/context/base/strc-reg.mkiv
+++ b/tex/context/base/strc-reg.mkiv
@@ -476,7 +476,7 @@
\fi
\setnextinternalreference
% we could consider storing register entries in list
- \ctxlua{ jobregisters.store {
+ \edef\temp{\ctxlua{ jobregisters.store {
metadata = {
kind = "see",
name = "\currentregister",
@@ -495,7 +495,7 @@
text = "\currentregisterseeword"
},
}
- }%
+ }}%
\endgroup}
%D Rendering:
@@ -599,9 +599,9 @@
% test case for collapsing (experimental, for Steffen Wolfrum)
%
% \starttext
-% \placeregister[index][collapse=no] \blank[2*big]
-% \placeregister[index][collapse=yes] \blank[2*big]
-% \placeregister[index][collapse=akk] \page
+% \placeregister[index][compress=no] \blank[2*big]
+% \placeregister[index][compress=yes] \blank[2*big]
+% \placeregister[index][compress=all] \page
% \dorecurse{10}{test 1:!\index{test} test \page}
% \dorecurse{5} {test 2:\recurselevel \page}
% \dorecurse{10}{test 3:!\index{test} test \page}
diff --git a/tex/context/base/strc-sec.mkiv b/tex/context/base/strc-sec.mkiv
index ec7d97e6d..f583ef849 100644
--- a/tex/context/base/strc-sec.mkiv
+++ b/tex/context/base/strc-sec.mkiv
@@ -557,11 +557,13 @@
\newconditional\ignorehandlepagebreak
\def\dostructureheadspacingbeforeyes
- {\docheckstructureheadbefore\dohandlestructureheadpagebreak
+ {\docheckstructureheadbefore
+ \dohandlestructureheadpagebreak
\structureheadparameter\c!inbetween}
\def\dostructureheadspacingbeforenop
- {\docheckstructureheadbefore\docheckstructureheadlayout
+ {\docheckstructureheadbefore
+ \docheckstructureheadlayout
\structureheadparameter\c!inbetween}
% \def\emptystructureheadcorrection
@@ -635,7 +637,7 @@
\setfalse\ignorehandlepagebreak
\else
\ifnum\lastpenalty>\zerocount
- \global\pagebreakdisabledtrue
+% \global\pagebreakdisabledtrue
\fi
% beware, these numbers are not yet know here
\doifelse{\structureheadparameter\c!continue}\v!yes
@@ -648,11 +650,11 @@
\doifnot{\structureheadparameter\c!aligntitle}\v!float\flushsidefloats
\structureheadparameter\c!before
\relax
- \ifpagebreakdisabled
- \global\pagebreakdisabledfalse
- \else
+% \ifpagebreakdisabled
+% \global\pagebreakdisabledfalse
+% \else
\dopreventbreakafterstructureheadauto
- \fi
+% \fi
\doif{\structureheadparameter\c!aligntitle}\v!float\indent
\global\precedingstructurelevel\currentstructureheadlevel
\fi}
diff --git a/tex/context/base/task-ini.lua b/tex/context/base/task-ini.lua
index 816fb83df..c98d76aeb 100644
--- a/tex/context/base/task-ini.lua
+++ b/tex/context/base/task-ini.lua
@@ -86,3 +86,7 @@ tasks.disableaction("shipouts", "nodes.add_references")
tasks.disableaction("shipouts", "nodes.add_destinations")
tasks.disableaction("pagebuilders", "nodes.migrate_outwards")
+
+callbacks.freeze("find_.*_file", "find file using resolver")
+callbacks.freeze("read_.*_file", "read file at once")
+callbacks.freeze("open_.*_file", "open file for reading")
diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua
index d7b687b7c..c54df5f47 100644
--- a/tex/generic/context/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : c:/data/develop/context/texmf/tex/generic/context/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/texmf/tex/generic/context/luatex-fonts.lua
--- merge date : 02/15/10 22:19:32
+-- merge date : 02/17/10 14:29:47
do -- begin closure to overcome local limits and interference
@@ -1975,6 +1975,9 @@ tasks = {
appendaction = dummyfunction,
prependaction = dummyfunction,
}
+callbacks = {
+ register = function(n,f) return callback.register(n,f) end,
+}
-- we need to cheat a bit here
@@ -11640,8 +11643,8 @@ end
<p>We overload both the <l n='tfm'/> and <l n='vf'/> readers.</p>
--ldx]]--
-callback.register('define_font' , define.read)
-callback.register('find_vf_file', vf.find ) -- not that relevant any more
+callbacks.register('define_font' , define.read, "definition of fonts (tfmtable preparation)")
+callbacks.register('find_vf_file', vf.find , "locating virtual fonts, insofar needed") -- not that relevant any more
end -- closure