summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2014-01-09 19:40:23 +0200
committerMarius <mariausol@gmail.com>2014-01-09 19:40:23 +0200
commit241b88c2f3f6a0c2479a3cd02552e2bed59a7047 (patch)
tree7e5a96e9a5953548fb5daeab6da8bd9fe37d50c7
parent6091f1997cb58861ee2d0c2b9000430e8238b631 (diff)
downloadcontext-241b88c2f3f6a0c2479a3cd02552e2bed59a7047.tar.gz
beta 2014.01.09 18:27
-rw-r--r--tex/context/base/back-exp.lua2
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4119 -> 4082 bytes
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/lang-rep.lua20
-rw-r--r--tex/context/base/lang-wrd.lua9
-rw-r--r--tex/context/base/lpdf-tag.lua39
-rw-r--r--tex/context/base/node-acc.lua22
-rw-r--r--tex/context/base/page-mix.lua8
-rw-r--r--tex/context/base/status-files.pdfbin24607 -> 24604 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin228424 -> 228478 bytes
-rw-r--r--tex/context/base/trac-jus.lua7
-rw-r--r--tex/context/base/typo-mar.lua2
-rw-r--r--tex/context/base/typo-spa.lua1
-rw-r--r--tex/context/base/x-set-11.mkiv15
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
16 files changed, 87 insertions, 44 deletions
diff --git a/tex/context/base/back-exp.lua b/tex/context/base/back-exp.lua
index dedfc22c0..cd499abe7 100644
--- a/tex/context/base/back-exp.lua
+++ b/tex/context/base/back-exp.lua
@@ -2097,7 +2097,7 @@ local function collectresults(head,list) -- is last used (we also have currentat
if kern > 0 then
local limit = threshold
if p and getid(p) == glyph_code then
- limit = fontquads[p.font] / 4
+ limit = fontquads[getfont(p)] / 4
end
if kern > limit then
if last and not somespace[currentcontent[nofcurrentcontent]] then
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index ab1e7369d..0f072a1ae 100644
--- a/tex/context/base/cont-new.mkiv
+++ b/tex/context/base/cont-new.mkiv
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2014.01.08 15:36}
+\newcontextversion{2014.01.09 18:27}
%D This file is loaded at runtime, thereby providing an excellent place for
%D hacks, patches, extensions and new features.
diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf
index 3d07c88cf..6f4f178a5 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 8e79041ff..3996e6269 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -28,7 +28,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2014.01.08 15:36}
+\edef\contextversion{2014.01.09 18:27}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/lang-rep.lua b/tex/context/base/lang-rep.lua
index 3dec9503e..fb136b551 100644
--- a/tex/context/base/lang-rep.lua
+++ b/tex/context/base/lang-rep.lua
@@ -28,9 +28,9 @@ local getattr = nuts.getattr
local getid = nuts.getid
local getchar = nuts.getchar
-local insert_node_before = nodes.insert_before
-local remove_node = nodes.remove
-local copy_node = nodes.copy
+local insert_node_before = nuts.insert_before
+local remove_node = nuts.remove
+local copy_node = nuts.copy
local texsetattribute = tex.setattribute
local unsetvalue = attributes.unsetvalue
@@ -58,12 +58,13 @@ end)
local function add(root,word,replacement)
local list = utfsplit(word,true)
- for i=1,#list do
+ local size = #list
+ for i=1,size do
local l = utfbyte(list[i])
if not root[l] then
root[l] = { }
end
- if i == #list then
+ if i == size then
local newlist = utfsplit(replacement,true)
for i=1,#newlist do
newlist[i] = utfbyte(newlist[i])
@@ -71,7 +72,7 @@ local function add(root,word,replacement)
root[l].final = {
word = word,
replacement = replacement,
- oldlength = #list,
+ oldlength = size,
newcodes = newlist,
}
end
@@ -124,10 +125,11 @@ local function hit(a,head)
end
function replacements.handler(head)
- local current = tonut(head)
+ head = tonut(head)
+ local current = head
local done = false
while current do
- if current.id == glyph_code then
+ if getid(current) == glyph_code then
local a = getattr(current,a_replacements)
if a then
local last, final = hit(a,current)
@@ -141,7 +143,7 @@ function replacements.handler(head)
if oldlength == newlength then -- #old == #new
for i=1,newlength do
setfield(current,"char",newcodes[i])
- current = current.next
+ current = getnext(current)
end
elseif oldlength < newlength then -- #old < #new
for i=1,newlength-oldlength do
diff --git a/tex/context/base/lang-wrd.lua b/tex/context/base/lang-wrd.lua
index 11d99976e..5fc23757e 100644
--- a/tex/context/base/lang-wrd.lua
+++ b/tex/context/base/lang-wrd.lua
@@ -34,6 +34,7 @@ local getnext = nuts.getnext
local getid = nuts.getid
local getsubtype = nuts.getsubtype
local getchar = nuts.getchar
+local setattr = nuts.setattr
local traverse_nodes = nuts.traverse
@@ -186,6 +187,8 @@ local enabled = false
function words.check(head)
if enabled then
return methods[wordmethod](head)
+ elseif not head then
+ return head, false
else
return head, false
end
@@ -217,7 +220,7 @@ table.setmetatableindex(cache, function(t,k) -- k == language, numbers[k] == tag
else
c = colist["word:" .. (numbers[k] or "unset")] or colist["word:unknown"]
end
- local v = c and function(n) n[a_color] = c end or false
+ local v = c and function(n) setattr(n,a_color,c) end or false
t[k] = v
return v
end)
@@ -236,7 +239,7 @@ end
methods[1] = function(head)
for n in traverse_nodes(head) do
- n[a_color] = unsetvalue -- hm, not that selective (reset color)
+ setattr(n,a_color,unsetvalue) -- hm, not that selective (reset color)
end
return mark_words(head,sweep)
end
@@ -337,7 +340,7 @@ end
methods[3] = function(head)
for n in traverse_nodes(head) do
- n[a_color] = unsetvalue
+ setattr(n,a_color,unsetvalue)
end
return mark_words(head,sweep)
end
diff --git a/tex/context/base/lpdf-tag.lua b/tex/context/base/lpdf-tag.lua
index 83315da07..37a640225 100644
--- a/tex/context/base/lpdf-tag.lua
+++ b/tex/context/base/lpdf-tag.lua
@@ -36,10 +36,6 @@ local pdfpagereference = lpdf.pagereference
local texgetcount = tex.getcount
-local nodepool = nodes.pool
-
-local pdfliteral = nodepool.pdfliteral
-
local nodecodes = nodes.nodecodes
local hlist_code = nodecodes.hlist
@@ -53,9 +49,13 @@ local nuts = nodes.nuts
local tonut = nuts.tonut
local tonode = nuts.tonode
+local nodepool = nuts.pool
+local pdfliteral = nodepool.pdfliteral
+
local getid = nuts.getid
local getattr = nuts.getattr
local getprev = nuts.getprev
+local getnext = nuts.getnext
local getlist = nuts.getlist
local setfield = nuts.setfield
@@ -213,7 +213,29 @@ local function makecontent(parent,start,stop,slist,id)
--
local bliteral = pdfliteral(format("/%s <</MCID %s>>BDC",tag,last))
local eliteral = pdfliteral("EMC")
- --
+-- if false
+-- local prev = getprev(start)
+-- if prev then
+-- setfield(prev,"next",bliteral)
+-- setfield(bliteral,"prev",prev)
+-- end
+-- setfield(start,"prev",bliteral)
+-- setfield(bliteral,"next",start)
+-- --
+-- local next = getnext(stop)
+-- if next then
+-- setfield(next,"prev",eliteral)
+-- setfield(eliteral,"next",next)
+-- end
+-- setfield(stop,"next",eliteral)
+-- setfield(eliteral,"prev",stop)
+-- --
+-- if slist and getlist(slist) == start then
+-- setfield(slist,"list",bliteral)
+-- elseif not prev then
+-- report_tags("this can't happen: injection in front of nothing")
+-- end
+-- else
if slist and getlist(slist) == start then
setfield(slist,"list",bliteral)
elseif not getprev(start) then
@@ -222,6 +244,7 @@ local function makecontent(parent,start,stop,slist,id)
--
insert_before(start,start,bliteral)
insert_after(stop,stop,eliteral)
+-- end
--
index = index + 1
list[index] = parent.pref
@@ -269,7 +292,8 @@ function nodeinjections.addtags(head)
-- no need to adapt head, as we always operate on lists
level, last, ranges, range = 0, nil, { }, nil
initializepage()
- collectranges(tonut(head))
+ head = tonut(head)
+ collectranges(head)
if trace_tags then
for i=1,#ranges do
local range = ranges[i]
@@ -296,7 +320,7 @@ function nodeinjections.addtags(head)
local b, e = makecontent(prev,start,stop,list,id)
if start == head then
report_tags("this can't happen: parent list gets tagged")
- head = tonode(b)
+ head = b
end
end
finishpage()
@@ -304,6 +328,7 @@ function nodeinjections.addtags(head)
--
-- injectspans(tonut(head)) -- does to work yet
--
+ head = tonode(head)
return head, true
end
diff --git a/tex/context/base/node-acc.lua b/tex/context/base/node-acc.lua
index 6a1b986bc..59fa031bf 100644
--- a/tex/context/base/node-acc.lua
+++ b/tex/context/base/node-acc.lua
@@ -31,6 +31,8 @@ local copy_node = nuts.copy
local free_nodelist = nuts.flush_list
local insert_after = nuts.insert_after
+local new_gluespec = nuts.pool.gluespec -- temp hack
+
local glue_code = nodecodes.glue
local kern_code = nodecodes.kern
local glyph_code = nodecodes.glyph
@@ -53,7 +55,8 @@ local function injectspaces(head)
local id = getid(n)
if id == glue_code then -- todo: check for subtype related to spacing (13/14 but most seems to be 0)
-- if getfield(getfield(n,"spec"),"width") > 0 then -- threshold
- if p and p_id == glyph_code then
+-- if p and p_id == glyph_code then
+ if p and getid(p) == glyph_code then
local g = copy_node(p)
local c = getfield(g,"components")
if c then -- it happens that we copied a ligature
@@ -61,16 +64,19 @@ local function injectspaces(head)
setfield(g,"components",nil)
setfield(g,"subtype",256)
end
- -- p .. g
local a = getattr(n,a_characters)
- local s = copy_node(getfield(n,"spec"))
+ -- local s = copy_node(getfield(n,"spec"))
+ -- this will be fixed in luatex but for now a temp hack (zero test)
+ local s = getfield(n,"spec")
+ s = s == 0 and new_gluespec(0) or copy_node(s)
+ --
setfield(g,"char",32)
- insert_after(p,p,g)
- -- setfield(p,"next",g)
- -- setfield(g,"prev",p)
- -- setfield(g,"next",n)
- -- setfield(n,"prev",g)
setfield(n,"spec",s)
+ -- insert_after(p,p,g)
+ setfield(p,"next",g)
+ setfield(g,"prev",p)
+ setfield(g,"next",n)
+ setfield(n,"prev",g)
setfield(s,"width",getfield(s,"width") - getfield(g,"width"))
if a then
setattr(g,a_characters,a)
diff --git a/tex/context/base/page-mix.lua b/tex/context/base/page-mix.lua
index a7db58f82..dd182dd69 100644
--- a/tex/context/base/page-mix.lua
+++ b/tex/context/base/page-mix.lua
@@ -683,10 +683,10 @@ function mixedcolumns.finalize(result)
local l = list[i]
local h = new_hlist()
t[i] = h
- setfield(h,"list",l.head)
- setfield(h,"height",l.height)
- setfield(h,"depth",l.depth)
- l.head = nil
+ setfield(h,"list",getfield(l,"head"))
+ setfield(h,"height",getfield(l,"height"))
+ setfield(h,"depth",getfield(l,"depth"))
+ setfield(l,"head",nil)
end
setfield(t[1],"prev",nil) -- needs checking
setfield(t[#t],"next",nil) -- needs checking
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 7063ab6a5..33d7d13f2 100644
--- a/tex/context/base/status-files.pdf
+++ b/tex/context/base/status-files.pdf
Binary files differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index b8fd428ea..28cd4d7bb 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/trac-jus.lua b/tex/context/base/trac-jus.lua
index d95e48816..00c871159 100644
--- a/tex/context/base/trac-jus.lua
+++ b/tex/context/base/trac-jus.lua
@@ -15,15 +15,16 @@ local a_alignstate = attributes.private("alignstate")
local a_justification = attributes.private("justification")
local nuts = nodes.nuts
-local tonut = tonut
+local tonut = nuts.tonut
local getfield = nuts.getfield
local setfield = nuts.setfield
+local getlist = nuts.getlist
local getattr = nuts.getattr
local setattr = nuts.setattr
local setlist = nuts.setlist
-local traverse_id = nuts.travers_id
+local traverse_id = nuts.traverse_id
local get_list_dimensions = nuts.dimensions
local linked_nodes = nuts.linked
local copy_node = nuts.copy
@@ -77,7 +78,7 @@ function checkers.handler(head)
for current in traverse_id(hlist_code,tonut(head)) do
if getattr(current,a_justification) == 1 then
setattr(current,a_justification,0)
- local width = setfield(current,"width")
+ local width = getfield(current,"width")
if width > 0 then
local list = getlist(current)
if list then
diff --git a/tex/context/base/typo-mar.lua b/tex/context/base/typo-mar.lua
index a41a409dd..17d96478d 100644
--- a/tex/context/base/typo-mar.lua
+++ b/tex/context/base/typo-mar.lua
@@ -250,7 +250,7 @@ local function showstore(store,banner,location)
if next(store) then
for i, si in table.sortedpairs(store) do
local si =store[i]
- report_margindata("%s: stored in %a at %s: %a => %s",banner,location,i,validstring(si.name,"no name"),nodes.toutf(si.box.list))
+ report_margindata("%s: stored in %a at %s: %a => %s",banner,location,i,validstring(si.name,"no name"),nodes.toutf(getlist(si.box)))
end
else
report_margindata("%s: nothing stored in location %a",banner,location)
diff --git a/tex/context/base/typo-spa.lua b/tex/context/base/typo-spa.lua
index 039f7c81d..5cf9ab837 100644
--- a/tex/context/base/typo-spa.lua
+++ b/tex/context/base/typo-spa.lua
@@ -34,6 +34,7 @@ local getnext = nuts.getnext
local getprev = nuts.getprev
local getchar = nuts.getchar
local getid = nuts.getid
+local getfont = nuts.getfont
local getattr = nuts.getattr
local setattr = nuts.setattr
diff --git a/tex/context/base/x-set-11.mkiv b/tex/context/base/x-set-11.mkiv
index 1de683521..3f8d97b51 100644
--- a/tex/context/base/x-set-11.mkiv
+++ b/tex/context/base/x-set-11.mkiv
@@ -638,11 +638,16 @@
\xmlflush{#1}
\doifmode{interface:setup:defaults} {
\ifx\currentSETUPhash\empty \else
- \edef\currentSETUPvalue{\csname named\currentSETUPhash parameter\endcsname\empty{\xmlatt{#1}{name}}}
- \ifx\currentSETUPvalue\empty \else
- =\space
- \detokenize\expandafter{\currentSETUPvalue}
- \fi
+ \begingroup
+ % todo, make a one level expansion of parameter
+ \let\emwidth \relax
+ \let\exheight\relax
+ \edef\currentSETUPvalue{\csname named\currentSETUPhash parameter\endcsname\empty{\xmlatt{#1}{name}}}
+ \ifx\currentSETUPvalue\empty \else
+ =\space
+ \detokenize\expandafter{\currentSETUPvalue}
+ \fi
+ \endgroup
\fi
}
\stopsecondSETUPcolumn
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index e36d72840..0b12aadc6 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : luatex-fonts-merged.lua
-- parent file : luatex-fonts.lua
--- merge date : 01/08/14 15:36:15
+-- merge date : 01/09/14 18:27:26
do -- begin closure to overcome local limits and interference