summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/spac-ali.lua
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2017-02-17 10:31:56 +0100
committerContext Git Mirror Bot <phg42.2a@gmail.com>2017-02-17 10:31:56 +0100
commitb14f992ef5f4e868c9959b174278c86516d60dbc (patch)
tree28587bb46c025ea7b0d27ba93f09c93dcf53c73a /tex/context/base/mkiv/spac-ali.lua
parent95a1799032dc61dbca4a11e495be34b4397c8fec (diff)
downloadcontext-b14f992ef5f4e868c9959b174278c86516d60dbc.tar.gz
2017-02-17 10:23:00
Diffstat (limited to 'tex/context/base/mkiv/spac-ali.lua')
-rw-r--r--tex/context/base/mkiv/spac-ali.lua19
1 files changed, 11 insertions, 8 deletions
diff --git a/tex/context/base/mkiv/spac-ali.lua b/tex/context/base/mkiv/spac-ali.lua
index dc206a2a2..bc77090cf 100644
--- a/tex/context/base/mkiv/spac-ali.lua
+++ b/tex/context/base/mkiv/spac-ali.lua
@@ -19,18 +19,18 @@ local tonode = nuts.tonode
local tonut = nuts.tonut
local getfield = nuts.getfield
-local setfield = nuts.setfield
local getnext = nuts.getnext
local getprev = nuts.getprev
local getid = nuts.getid
local getlist = nuts.getlist
local setlist = nuts.setlist
-local getattr = nuts.getattr
-local setattr = nuts.setattr
+local setlink = nuts.setlink
+local takeattr = nuts.takeattr
local getsubtype = nuts.getsubtype
+local getwidth = nuts.getwidth
+local findtail = nuts.tail
local hpack_nodes = nuts.hpack
-local linked_nodes = nuts.linked
local unsetvalue = attributes.unsetvalue
@@ -71,7 +71,7 @@ local function handler(head,leftpage,realpageno)
local id = getid(current)
if id == hlist_code then
if getsubtype(current) == line_code then
- local a = getattr(current,a_realign)
+ local a = takeattr(current,a_realign)
if not a or a == 0 then
-- skip
else
@@ -87,12 +87,16 @@ local function handler(head,leftpage,realpageno)
action = leftpage and 2 or 1
end
if action == 1 then
- setlist(current,hpack_nodes(linked_nodes(getlist(current),new_stretch(3)),getfield(current,"width"),"exactly"))
+ local head = getlist(current)
+ setlink(findtail(head),new_stretch(3)) -- append
+ setlist(current,hpack_nodes(head,getwidth(current),"exactly"))
if trace_realign then
report_realign("flushing left, align %a, page %a, realpage %a",align,pageno,realpageno)
end
elseif action == 2 then
- setlist(current,hpack_nodes(linked_nodes(new_stretch(3),getlist(current)),getfield(current,"width"),"exactly"))
+ local list = getlist(current)
+ local head = setlink(new_stretch(3),list) -- prepend
+ setlist(current,hpack_nodes(head,getwidth(current),"exactly"))
if trace_realign then
report_realign("flushing right. align %a, page %a, realpage %a",align,pageno,realpageno)
end
@@ -102,7 +106,6 @@ local function handler(head,leftpage,realpageno)
done = true
nofrealigned = nofrealigned + 1
end
- setattr(current,a_realign,unsetvalue)
end
end
handler(getlist(current),leftpage,realpageno)