From 55d8ac3ec0aeb67874f49c09746eab5b3668a908 Mon Sep 17 00:00:00 2001
From: Hans Hagen <pragma@wxs.nl>
Date: Thu, 21 Mar 2013 23:27:00 +0100
Subject: beta 2013.03.21 23:27

---
 tex/context/base/cont-new.mkii                     |   2 +-
 tex/context/base/cont-new.mkiv                     |   2 +-
 tex/context/base/context-version.pdf               | Bin 4134 -> 4137 bytes
 tex/context/base/context-version.png               | Bin 40433 -> 40452 bytes
 tex/context/base/context.mkii                      |   2 +-
 tex/context/base/context.mkiv                      |   2 +-
 tex/context/base/page-mix.lua                      |  30 ++++++++++++++++-----
 tex/context/base/page-set.mkiv                     |   8 +++---
 tex/context/base/status-files.pdf                  | Bin 24755 -> 24762 bytes
 tex/context/base/status-lua.pdf                    | Bin 211653 -> 211531 bytes
 tex/generic/context/luatex/luatex-fonts-merged.lua |   2 +-
 11 files changed, 34 insertions(+), 14 deletions(-)

diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii
index 7f0c77bc2..898380b81 100644
--- a/tex/context/base/cont-new.mkii
+++ b/tex/context/base/cont-new.mkii
@@ -11,7 +11,7 @@
 %C therefore copyrighted by \PRAGMA. See mreadme.pdf for
 %C details.
 
-\newcontextversion{2013.03.21 18:26}
+\newcontextversion{2013.03.21 23:27}
 
 %D This file is loaded at runtime, thereby providing an
 %D excellent place for hacks, patches, extensions and new
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index 7f75c3f43..0c8a13691 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{2013.03.21 18:26}
+\newcontextversion{2013.03.21 23: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 d2a694667..6b3085d46 100644
Binary files a/tex/context/base/context-version.pdf and b/tex/context/base/context-version.pdf differ
diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png
index 21bafb2e8..5338fd32c 100644
Binary files a/tex/context/base/context-version.png and b/tex/context/base/context-version.png differ
diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii
index cf6a7002b..a0e0d3324 100644
--- a/tex/context/base/context.mkii
+++ b/tex/context/base/context.mkii
@@ -20,7 +20,7 @@
 %D your styles an modules.
 
 \edef\contextformat {\jobname}
-\edef\contextversion{2013.03.21 18:26}
+\edef\contextversion{2013.03.21 23:27}
 
 %D For those who want to use this:
 
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index c1913fa55..2bd5c1d1b 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -25,7 +25,7 @@
 %D up and the dependencies are more consistent.
 
 \edef\contextformat {\jobname}
-\edef\contextversion{2013.03.21 18:26}
+\edef\contextversion{2013.03.21 23:27}
 
 %D For those who want to use this:
 
diff --git a/tex/context/base/page-mix.lua b/tex/context/base/page-mix.lua
index f63989dd8..c2cd74b99 100644
--- a/tex/context/base/page-mix.lua
+++ b/tex/context/base/page-mix.lua
@@ -75,7 +75,6 @@ local function collectinserts(result,nxt,nxtid)
         if nxtid == insert_code then
             inserttotal = inserttotal + nxt.height + nxt.depth
             local s = nxt.subtype
--- print(">>>",structures.inserts.getlocation(s))
             local c = inserts[s]
             if not c then
                 c = { }
@@ -125,9 +124,26 @@ end
 local function discardtopglue(current,discarded)
     while current do
         local id = current.id
-        if id == glue_code or (id == penalty_code and current.penalty ~= forcedbreak) then
+        if id == glue_code then
             discarded[#discarded+1] = current
             current = current.next
+        elseif id == penalty_code then
+            if current.penalty == forcedbreak then
+                discarded[#discarded+1] = current
+                current = current.next
+                while current do
+                    local id = current.id
+                    if id == glue_code then
+                        discarded[#discarded+1] = current
+                        current = current.next
+                    else
+                        break
+                    end
+                end
+            else
+                discarded[#discarded+1] = current
+                current = current.next
+            end
         else
             break
         end
@@ -236,8 +252,8 @@ local function setsplit(specification) -- a rather large function
             if trace_state then
                 report_state("empty column %s, needs more work",column)
             end
-rest = current
-return false
+            rest = current
+            return false
         else
             lasthead = head
             result.head = head
@@ -256,14 +272,14 @@ return false
         if column == nofcolumns then
             column = 0 -- nicer in trace
             rest = head
--- lasthead = head
+         -- lasthead = head
             return false
         else
             column = column + 1
             result = results[column]
             current = discardtopglue(current,discarded)
             head = current
--- lasthead = head
+         -- lasthead = head
             return true
         end
     end
@@ -384,6 +400,7 @@ return false
                 -- club and widow and such i.e. resulting penalties (if we care)
             end
         end
+        nxt = current.next -- can have changed
         if nxt then
             current = nxt
         elseif head == lasthead then
@@ -589,6 +606,7 @@ function mixedcolumns.cleanup(result)
     for i=1,#discarded do
         freenode(discarded[i])
     end
+    result.discarded = { }
 end
 
 -- interface --
diff --git a/tex/context/base/page-set.mkiv b/tex/context/base/page-set.mkiv
index 850ad21dd..b7c26035e 100644
--- a/tex/context/base/page-set.mkiv
+++ b/tex/context/base/page-set.mkiv
@@ -11,7 +11,7 @@
 %C therefore copyrighted by \PRAGMA. See mreadme.pdf for
 %C details.
 
-% not yet mkiv!
+% not yet mkiv! probably namespace issues with localframed (only one left)
 %
 % getnoflines vs getrawnoflines
 
@@ -1633,7 +1633,8 @@
      \page_set_command_set_hsize
    \else
      \bgroup
-   \fi}
+   \fi
+   \begingroup} % extra grouping needed ... else weird issue with ungrouped font switch (e.g. \ss)
 
 % \setuplayout[grid=yes] \definecolumnset[example] \showgrid
 
@@ -1661,6 +1662,7 @@
 
 \unexpanded\def\stopcolumnset
   {\endgraf
+   \endgroup % ends extra grouping
    \ifnum\columnsetlevel=\plusone
      \endgraf % needed, else wrong vsize in one par case
      \global\settrue\OTRSETfinish
@@ -2327,7 +2329,7 @@
         [\??mt\currentcolumntestarea]
         [\c!location=,% new (*)
             \c!width=\!!widtha,\c!height=\!!heighta,\c!lines=]
-        {\columntextareaparameter\empty}}%
+        {\columntextareaparameter\empty{}}}% messy
    \!!counta\columntextareaparameter\c!x
    \!!countb\columntextareaparameter\c!y
    \advance\!!countb \columntextareaparameter\c!ny
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index f3ee8f602..22f54435d 100644
Binary files a/tex/context/base/status-files.pdf and b/tex/context/base/status-files.pdf differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index f35aa8951..4bc2c0fc3 100644
Binary files a/tex/context/base/status-lua.pdf and b/tex/context/base/status-lua.pdf differ
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 22a4ef4b4..99c1a22f0 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  : 03/21/13 18:26:12
+-- merge date  : 03/21/13 23:27:35
 
 do -- begin closure to overcome local limits and interference
 
-- 
cgit v1.2.3