From d9d64ac2f2a9e32d105c8aa23b44afe24aa5e196 Mon Sep 17 00:00:00 2001
From: Marius <mariausol@gmail.com>
Date: Fri, 26 Aug 2011 14:40:12 +0300
Subject: beta 2011.08.26 13:32

---
 tex/context/base/cont-new.mkii                     |   2 +-
 tex/context/base/cont-new.mkiv                     |   2 +-
 tex/context/base/context-version.pdf               | Bin 4089 -> 4093 bytes
 tex/context/base/context-version.png               | Bin 104744 -> 106125 bytes
 tex/context/base/context.mkii                      |   2 +-
 tex/context/base/context.mkiv                      |   2 +-
 tex/context/base/font-otn.lua                      |  29 ++++--
 tex/context/base/pack-rul.mkii                     |   2 +-
 tex/context/base/pack-rul.mkiv                     |  20 +---
 tex/context/base/scrn-int.mkii                     |   3 +-
 tex/context/base/scrn-pag.mkvi                     | 103 +++++++--------------
 tex/context/base/status-files.pdf                  | Bin 23870 -> 23890 bytes
 tex/context/base/status-lua.pdf                    | Bin 162205 -> 162208 bytes
 tex/context/base/strc-sec.mkiv                     |   2 +-
 tex/context/base/strc-tag.lua                      |  18 +++-
 tex/generic/context/luatex/luatex-fonts-merged.lua |  31 +++++--
 16 files changed, 103 insertions(+), 113 deletions(-)

diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii
index b6dbba5e0..1da67eedf 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{2011.08.26 01:43}
+\newcontextversion{2011.08.26 13:32}
 
 %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 6ee2a3bfb..815e84f60 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{2011.08.26 01:43}
+\newcontextversion{2011.08.26 13:32}
 
 %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/context-version.pdf b/tex/context/base/context-version.pdf
index 8c927f12b..b9f838973 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 4e9c93bbe..2328fe297 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 578783b40..ba1a4f21f 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{2011.08.26 01:43}
+\edef\contextversion{2011.08.26 13:32}
 
 %D For those who want to use this:
 
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 433fbb340..855070b9a 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -20,7 +20,7 @@
 %D your styles an modules.
 
 \edef\contextformat {\jobname}
-\edef\contextversion{2011.08.26 01:43}
+\edef\contextversion{2011.08.26 13:32}
 
 %D For those who want to use this:
 
diff --git a/tex/context/base/font-otn.lua b/tex/context/base/font-otn.lua
index d9dc20f6c..1d2b20976 100644
--- a/tex/context/base/font-otn.lua
+++ b/tex/context/base/font-otn.lua
@@ -976,17 +976,29 @@ example, the following is valid:</p>
 
 <p>Therefore we we don't really do the replacement here already unless we have the
 single lookup case. The efficiency of the replacements can be improved by deleting
-as less as needed but that would also mke the code even more messy.</p>
+as less as needed but that would also make the code even more messy.</p>
 --ldx]]--
 
 local function delete_till_stop(start,stop,ignoremarks)
-    if start ~= stop then
-        -- todo keep marks
+    local n = 1
+    if start == stop then
+        -- done
+    elseif ignoremarks then
+        repeat -- start x x m x x stop => start m
+            local next = start.next
+            if not marks[next.char] then
+                delete_node(start,next)
+            end
+            n = n + 1
+        until next == stop
+    else -- start x x x stop => start
         repeat
             local next = start.next
             delete_node(start,next)
+            n = n + 1
         until next == stop
     end
+    return n
 end
 
 --[[ldx--
@@ -1076,29 +1088,32 @@ end
 
 function chainprocs.gsub_alternate(start,stop,kind,chainname,currentcontext,lookuphash,currentlookup,chainlookupname)
     -- todo: marks ?
-    delete_till_stop(start,stop)
+    local n = delete_till_stop(start,stop)
     local current = start
     local subtables = currentlookup.subtables
+    local m = 0
     while current do
         if current.id == glyph_code then
+            m = m + 1
             local currentchar = current.char
             local lookupname = subtables[1]
             local alternatives = lookuphash[lookupname]
             if not alternatives then
                 if trace_bugs then
-                    logwarning("%s: no alternative hits",cref(kind,chainname,chainlookupname,lookupname))
+                    logwarning("%s: %s of %s, no alternative hit",cref(kind,chainname,chainlookupname,lookupname),m,n)
                 end
             else
                 alternatives = alternatives[currentchar]
                 if not alternatives then
                     if trace_bugs then
-                        logwarning("%s: no alternative for %s",cref(kind,chainname,chainlookupname,lookupname),gref(currentchar))
+                        logwarning("%s:  %s of %s, no alternative for %s",cref(kind,chainname,chainlookupname,lookupname),m,n,gref(currentchar))
                     end
                 else
                     local choice, index = alternative_glyph(current,alternatives,kind,chainname,chainlookupname,lookupname)
                     current.char = choice
                     if trace_alternatives then
-                        logprocess("%s: replacing single %s by alternative %s (%s)",cref(kind,chainname,chainlookupname,lookupname),index,gref(currentchar),gref(choice),index)
+                        logprocess("%s: %s of %s, replacing single %s by alternative %s (%s)",
+                            cref(kind,chainname,chainlookupname,lookupname),m,n,index,gref(currentchar),gref(choice))
                     end
                 end
             end
diff --git a/tex/context/base/pack-rul.mkii b/tex/context/base/pack-rul.mkii
index 2e625a90f..7399cacd8 100644
--- a/tex/context/base/pack-rul.mkii
+++ b/tex/context/base/pack-rul.mkii
@@ -871,7 +871,7 @@
    \edef\framedforegroundcolor{\framedparameter\c!foregroundcolor}%
    \ifx\framedforegroundcolor\empty\else\docolorframebox\fi
    \edef\overlaylinecolor{\framedparameter\c!framecolor}%
-   \edef\overlaylinewidth{\the\ruledlinewidth}%
+   \def \overlaylinewidth{\the\ruledlinewidth}% no edef
    \edef\@@localframing {\framedparameter\c!frame}%
    \ifx\@@localframing\v!overlay \else \ifx\@@localframing\v!none \else
      \edef\framedrulethickness{\framedparameter\c!rulethickness}%
diff --git a/tex/context/base/pack-rul.mkiv b/tex/context/base/pack-rul.mkiv
index 97724ff00..6b90daee1 100644
--- a/tex/context/base/pack-rul.mkiv
+++ b/tex/context/base/pack-rul.mkiv
@@ -417,6 +417,8 @@
       \edef\backgroundwidth {\the\wd\framebox}%
       \edef\backgroundheight{\the\ht\framebox}%
       \edef\backgrounddepth {\the\dp\framebox}%
+      \edef\overlaylinecolor{\framedparameter\c!framecolor}%
+      \edef\overlaylinewidth{\the\ruledlinewidth}%
      %\edef\foregroundbox{\box#1}%
       \edef\component{\framedparameter\c!component}%
       \ifx\component\empty
@@ -676,10 +678,6 @@
    \fi
    % not here, in calling macro: setups
    \removeframedboxdepth
-%    \edef\framedforegroundcolor{\framedparameter\c!foregroundcolor}%
-%    \ifx\framedforegroundcolor\empty\else\docolorframebox\fi
-   \edef\overlaylinecolor{\framedparameter\c!framecolor}%
-   \edef\overlaylinewidth{\the\ruledlinewidth}%
    \edef\@@localframing {\framedparameter\c!frame}%
    \ifx\@@localframing\v!overlay \else \ifx\@@localframing\v!none \else
      \edef\framedrulethickness{\framedparameter\c!rulethickness}%
@@ -712,23 +710,17 @@
    \fi
    \setbox\framebox\box#2%
    \dp\framebox\zeropoint
-%  \removeframedboxdepth
-%    \edef\framedforegroundcolor{\framedparameter\c!foregroundcolor}%
-%    \ifx\framedforegroundcolor\empty\else\docolorframebox\fi
-   \edef\overlaylinecolor{\framedparameter\c!framecolor}%
-   \edef\overlaylinewidth{\the\ruledlinewidth}%
-   \edef\@@localframing {\framedparameter\c!frame}%
+   \edef\framedbackground   {\framedparameter\c!background}%
+   \edef\framedrulethickness{\framedparameter\c!rulethickness}%
+   \edef\@@localframing     {\framedparameter\c!frame}%
    \ifx\@@localframing\v!overlay \else \ifx\@@localframing\v!none \else
-     \edef\framedrulethickness{\framedparameter\c!rulethickness}%
      \ifx\framedrulethickness\empty\else
         \ruledlinewidth\framedrulethickness\relax
         \ifinheritruledlinewidth\linewidth\ruledlinewidth\fi
      \fi
      \dooutlinebox % real or invisible frame
    \fi \fi
-   \edef\framedbackground{\framedparameter\c!background}%
    \ifx\framedbackground\empty\else\dobackedbox\fi
-%  \restoreframedboxdepth
    \box\framebox
    \egroup}
 
@@ -1286,8 +1278,6 @@
      \let\postprocessframebox\relax % prevent nesting
      \next\framebox
    \fi
-   \edef\overlaylinecolor{\framedparameter\c!framecolor}%
-   \edef\overlaylinewidth{\the\ruledlinewidth}% \@@...
    \ifboxhasframe % real or invisible frame
      \dooutlinebox
    \fi
diff --git a/tex/context/base/scrn-int.mkii b/tex/context/base/scrn-int.mkii
index 1f104c03d..01d8501e2 100644
--- a/tex/context/base/scrn-int.mkii
+++ b/tex/context/base/scrn-int.mkii
@@ -89,7 +89,8 @@
         \advance\backspace -\!!widtha
       \fi\fi
       \advance\!!widtha\rightcombitotal
-      \advance\!!widtha 2\dimexpr\@@scbackspace+\@@schoroffset\relax}
+      \advance\!!widtha 2\dimexpr\@@scbackspace+\@@schoroffset\relax
+      \advance\!!widtha \makeupwidth}
      {\doifelse\@@scwidth\v!max
         {\!!widtha\printpaperwidth}
         {\!!widtha\@@scwidth}}%
diff --git a/tex/context/base/scrn-pag.mkvi b/tex/context/base/scrn-pag.mkvi
index aae99f304..ca5305304 100644
--- a/tex/context/base/scrn-pag.mkvi
+++ b/tex/context/base/scrn-pag.mkvi
@@ -31,93 +31,56 @@
 
 \newconditional\scrn_canvas_tight_page
 
-% \def\scrn_canvas_calculate
-%   {\begingroup
-%    \edef\currentinteractionscreenwidth {\interactionscreenparameter\c!width }%
-%    \edef\currentinteractionscreenheight{\interactionscreenparameter\c!height}%
-%    \canvasbackoffset\backspace
-%    \canvastopoffset\topspace
-%    \ifx\currentinteractionscreenwidth\v!fit
-%      \global\canvaswidth\leftcombitotal
-%      \ifdim\backspace>\canvaswidth
-%        \ifdim\backspace>\zeropoint\relax
-%          \global\advance\canvasbackoffset -\canvaswidth
-%        \fi
-%      \fi
-%      \global\advance\canvaswidth\dimexpr
-%        \rightcombitotal
-%      + 2\dimexpr
-%           \interactionscreenparameter\c!backspace
-%         + \interactionscreenparameter\c!horoffset
-%         \relax
-%      \relax
-%      \donetrue
-%    \else\ifx\currentinteractionscreenwidth\v!max
-%      \global\canvaswidth\printpaperwidth
-%      \donetrue
-%    \else
-%      \global\canvaswidth\currentinteractionscreenwidth
-%      \donefalse
-%    \fi\fi
-%    \ifdone
-%      \ifdim\canvaswidth>\paperwidth\ifdim\canvaswidth>\zeropoint
-%        \global\paperwidth\canvaswidth % kills location=middle
-%      \fi\fi
-%    \fi
-%    \ifx\currentinteractionscreenheight\v!fit
-%      \global\canvasheight\dimexpr\topheight+\topdistance\relax
-%      \ifdim\topspace>\canvasheight
-%        \ifdim\topspace>\zeropoint\relax
-%          \global\advance\canvastopoffset -\canvasheight
-%        \fi
-%      \fi
-%      \global\advance\canvasheight\dimexpr
-%        \makeupheight
-%      + \bottomdistance
-%      + \bottomheight
-%      + 2\dimexpr
-%           \interactionscreenparameter\c!topspace
-%         + \interactionscreenparameter\c!veroffset
-%         \relax
-%      \relax
-%    \else\ifx\currentinteractionscreenheight\v!max
-%      \global\canvasheight\printpaperheight
-%    \else
-%      \global\canvasheight\currentinteractionscreenheight
-%    \fi\fi
-%    \ifdone
-%      \ifdim\canvasheight>\paperheight\ifdim\canvasheight>\zeropoint
-%        \global\paperheight\canvasheight % kills location=middle
-%      \fi\fi
-%    \fi
-%    \endgroup}
-
 \def\scrn_canvas_calculate
   {\begingroup
    \edef\currentinteractionscreenwidth {\interactionscreenparameter\c!width }%
    \edef\currentinteractionscreenheight{\interactionscreenparameter\c!height}%
    \canvasbackoffset\backspace
    \canvastopoffset\topspace
-   \ifx\currentinteractionscreenwidth\v!fit
-     \global\canvaswidth\leftcombitotal
+   \ifx\currentinteractionscreenwidth\v!max
+     \global\canvaswidth\printpaperwidth
+   \else\ifx\currentinteractionscreenwidth\v!fit
+     \global\canvaswidth\dimexpr
+       \leftcombitotal
+     + \makeupwidth
+     + \rightcombitotal
+     + 2\dimexpr
+          \interactionscreenparameter\c!backspace
+        + \interactionscreenparameter\c!horoffset
+        \relax
+     \relax
+   \else\ifx\currentinteractionscreenwidth\v!tight
      \ifdim\backspace>\canvaswidth
        \ifdim\backspace>\zeropoint\relax
          \global\advance\canvasbackoffset -\canvaswidth
        \fi
      \fi
      \global\advance\canvaswidth\dimexpr
-       \rightcombitotal
+       \makeupwidth
+     + \rightcombitotal
      + 2\dimexpr
           \interactionscreenparameter\c!backspace
         + \interactionscreenparameter\c!horoffset
         \relax
      \relax
-   \else\ifx\currentinteractionscreenwidth\v!max
-     \global\canvaswidth\printpaperwidth
    \else
      \global\canvaswidth\currentinteractionscreenwidth
-   \fi\fi
-   \ifx\currentinteractionscreenheight\v!fit
+   \fi\fi\fi
+   \ifx\currentinteractionscreenheight\v!max
+     \global\canvasheight\printpaperheight
+   \else\ifx\currentinteractionscreenheight\v!fit
+     \global\canvasheight\dimexpr
+       \topheight
+     + \topdistance
+     + \makeupheight
+     + \bottomdistance
+     + \bottomheight
+     + 2\dimexpr
+          \interactionscreenparameter\c!topspace
+        + \interactionscreenparameter\c!veroffset
+        \relax
+     \relax
+   \else\ifx\currentinteractionscreenheight\v!tight
      \global\canvasheight\dimexpr\topheight+\topdistance\relax
      \ifdim\topspace>\canvasheight
        \ifdim\topspace>\zeropoint\relax
@@ -133,11 +96,9 @@
         + \interactionscreenparameter\c!veroffset
         \relax
      \relax
-   \else\ifx\currentinteractionscreenheight\v!max
-     \global\canvasheight\printpaperheight
    \else
      \global\canvasheight\currentinteractionscreenheight
-   \fi\fi
+   \fi\fi\fi
    \ifconditional\c_page_layouts_location_is_set
      \global\setfalse\scrn_canvas_tight_page
    \fi
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index c9d27a01e..6f26315ab 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 c8d4e573f..71187c33d 100644
Binary files a/tex/context/base/status-lua.pdf and b/tex/context/base/status-lua.pdf differ
diff --git a/tex/context/base/strc-sec.mkiv b/tex/context/base/strc-sec.mkiv
index 33ab047d0..1990e0d97 100644
--- a/tex/context/base/strc-sec.mkiv
+++ b/tex/context/base/strc-sec.mkiv
@@ -331,7 +331,7 @@
      {\getvalue{\??nh:\c!placehead:\v!yes}}}
 
 \def\setheaddisplay
-  {\doifelsevalue{\??nh:\headparameter\c!alternative}\v!horizontal
+  {\doifelsevalue{\??ns:\headparameter\c!alternative}\v!horizontal
      {\setfalse\headisdisplay}
      {\settrue \headisdisplay}}
 
diff --git a/tex/context/base/strc-tag.lua b/tex/context/base/strc-tag.lua
index a0c1d1d32..78b807487 100644
--- a/tex/context/base/strc-tag.lua
+++ b/tex/context/base/strc-tag.lua
@@ -242,13 +242,21 @@ function tags.start(tag,specification)
         codeinjections.enabletags()
         enabled = true
     end
-    labels[tag] = label ~= "" and label or tag
-    local fulltag
+    --
+--~     labels[tag] = label ~= "" and label or tag
+--~     local fulltag
+--~     if detail and detail ~= "" then
+--~         fulltag = tag .. ":" .. detail
+--~     else
+--~         fulltag = tag
+--~     end
+    --
+    local fulltag = label ~= "" and label or tag
+    labels[tag] = fulltag
     if detail and detail ~= "" then
-        fulltag = tag .. ":" .. detail
-    else
-        fulltag = tag
+        fulltag = fulltag .. ":" .. detail
     end
+    --
     local t = #taglist + 1
     local n = (ids[fulltag] or 0) + 1
     ids[fulltag] = n
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 99c22f268..6202ac04e 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  : 08/26/11 01:43:42
+-- merge date  : 08/26/11 13:33:00
 
 do -- begin closure to overcome local limits and interference
 
@@ -9058,17 +9058,29 @@ example, the following is valid:</p>
 
 <p>Therefore we we don't really do the replacement here already unless we have the
 single lookup case. The efficiency of the replacements can be improved by deleting
-as less as needed but that would also mke the code even more messy.</p>
+as less as needed but that would also make the code even more messy.</p>
 --ldx]]--
 
 local function delete_till_stop(start,stop,ignoremarks)
-    if start ~= stop then
-        -- todo keep marks
+    local n = 1
+    if start == stop then
+        -- done
+    elseif ignoremarks then
+        repeat -- start x x m x x stop => start m
+            local next = start.next
+            if not marks[next.char] then
+                delete_node(start,next)
+            end
+            n = n + 1
+        until next == stop
+    else -- start x x x stop => start
         repeat
             local next = start.next
             delete_node(start,next)
+            n = n + 1
         until next == stop
     end
+    return n
 end
 
 --[[ldx--
@@ -9158,29 +9170,32 @@ end
 
 function chainprocs.gsub_alternate(start,stop,kind,chainname,currentcontext,lookuphash,currentlookup,chainlookupname)
     -- todo: marks ?
-    delete_till_stop(start,stop)
+    local n = delete_till_stop(start,stop)
     local current = start
     local subtables = currentlookup.subtables
+    local m = 0
     while current do
         if current.id == glyph_code then
+            m = m + 1
             local currentchar = current.char
             local lookupname = subtables[1]
             local alternatives = lookuphash[lookupname]
             if not alternatives then
                 if trace_bugs then
-                    logwarning("%s: no alternative hits",cref(kind,chainname,chainlookupname,lookupname))
+                    logwarning("%s: %s of %s, no alternative hit",cref(kind,chainname,chainlookupname,lookupname),m,n)
                 end
             else
                 alternatives = alternatives[currentchar]
                 if not alternatives then
                     if trace_bugs then
-                        logwarning("%s: no alternative for %s",cref(kind,chainname,chainlookupname,lookupname),gref(currentchar))
+                        logwarning("%s:  %s of %s, no alternative for %s",cref(kind,chainname,chainlookupname,lookupname),m,n,gref(currentchar))
                     end
                 else
                     local choice, index = alternative_glyph(current,alternatives,kind,chainname,chainlookupname,lookupname)
                     current.char = choice
                     if trace_alternatives then
-                        logprocess("%s: replacing single %s by alternative %s (%s)",cref(kind,chainname,chainlookupname,lookupname),index,gref(currentchar),gref(choice),index)
+                        logprocess("%s: %s of %s, replacing single %s by alternative %s (%s)",
+                            cref(kind,chainname,chainlookupname,lookupname),m,n,index,gref(currentchar),gref(choice))
                     end
                 end
             end
-- 
cgit v1.2.3