From ed04388261fdd19e6cc5661225439df6e042bf41 Mon Sep 17 00:00:00 2001
From: Hans Hagen <pragma@wxs.nl>
Date: Tue, 29 Jun 2021 23:24:45 +0200
Subject: 2021-06-29 23:13:00

---
 tex/context/base/mkii/cont-new.mkii                |   2 +-
 tex/context/base/mkii/context.mkii                 |   2 +-
 tex/context/base/mkiv/cont-new.mkiv                |   2 +-
 tex/context/base/mkiv/context.mkiv                 |   2 +-
 tex/context/base/mkiv/lang-ini.lua                 |  13 +---
 tex/context/base/mkiv/luat-cnf.lua                 |   4 +-
 tex/context/base/mkiv/mult-fun.lua                 |   3 +
 tex/context/base/mkiv/status-files.pdf             | Bin 23617 -> 23621 bytes
 tex/context/base/mkiv/status-lua.pdf               | Bin 248307 -> 248363 bytes
 tex/context/base/mkiv/util-tar.lua                 |   4 +-
 tex/context/base/mkxl/cont-new.mkxl                |   2 +-
 tex/context/base/mkxl/context.mkxl                 |   2 +-
 tex/context/base/mkxl/libs-imp-lzma.lmt            |   2 +
 tex/context/base/mkxl/lpdf-lmt.lmt                 |   2 +
 tex/context/base/mkxl/luat-ini.mkxl                |   3 +-
 tex/context/base/mkxl/mlib-run.lmt                 |   1 +
 tex/context/base/mkxl/mlib-scn.lmt                 |  86 ++++++++++++++++++---
 tex/context/base/mkxl/pack-rul.mkxl                |   6 ++
 tex/context/base/mkxl/strc-con.mklx                |   6 +-
 tex/context/base/mkxl/strc-not.mklx                |  76 ++++++++++++------
 tex/generic/context/luatex/luatex-fonts-merged.lua |   2 +-
 21 files changed, 162 insertions(+), 58 deletions(-)

(limited to 'tex')

diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 430e4c2a7..85130e123 100644
--- a/tex/context/base/mkii/cont-new.mkii
+++ b/tex/context/base/mkii/cont-new.mkii
@@ -11,7 +11,7 @@
 %C therefore copyrighted by \PRAGMA. See mreadme.pdf for
 %C details.
 
-\newcontextversion{2021.06.27 16:54}
+\newcontextversion{2021.06.29 23:10}
 
 %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/mkii/context.mkii b/tex/context/base/mkii/context.mkii
index bc85e355b..60a3d86e2 100644
--- a/tex/context/base/mkii/context.mkii
+++ b/tex/context/base/mkii/context.mkii
@@ -20,7 +20,7 @@
 %D your styles an modules.
 
 \edef\contextformat {\jobname}
-\edef\contextversion{2021.06.27 16:54}
+\edef\contextversion{2021.06.29 23:10}
 
 %D For those who want to use this:
 
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 28dd93980..d539b2840 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -13,7 +13,7 @@
 
 % \normalend % uncomment this to get the real base runtime
 
-\newcontextversion{2021.06.27 16:54}
+\newcontextversion{2021.06.29 23:10}
 
 %D This file is loaded at runtime, thereby providing an excellent place for hacks,
 %D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index d5bef984a..a79fb76a7 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -45,7 +45,7 @@
 %D {YYYY.MM.DD HH:MM} format.
 
 \edef\contextformat {\jobname}
-\edef\contextversion{2021.06.27 16:54}
+\edef\contextversion{2021.06.29 23:10}
 
 %D Kind of special:
 
diff --git a/tex/context/base/mkiv/lang-ini.lua b/tex/context/base/mkiv/lang-ini.lua
index e286233bc..54e5e96f8 100644
--- a/tex/context/base/mkiv/lang-ini.lua
+++ b/tex/context/base/mkiv/lang-ini.lua
@@ -21,7 +21,7 @@ if not modules then modules = { } end modules ['lang-ini'] = {
 local type, tonumber, next = type, tonumber, next
 local utfbyte = utf.byte
 local format, gsub, gmatch, find = string.format, string.gsub, string.gmatch, string.find
-local concat, sortedkeys, sortedpairs, keys, insert = table.concat, table.sortedkeys, table.sortedpairs, table.keys, table.insert
+local concat, sortedkeys, sortedhash, keys, insert = table.concat, table.sortedkeys, table.sortedhash, table.keys, table.insert
 local utfvalues, strip, utfcharacters = string.utfvalues, string.strip, utf.characters
 
 local context   = context
@@ -506,15 +506,6 @@ else
             return 0
         end
     end
-
-    if CONTEXTLMTXMODE > 0 then
-        numbers[0] = "null"
-        registered.null = {
-            number   = 0,
-            instance = new_language(0),
-        }
-    end
-
 end
 
 -- not that usefull, global values
@@ -590,7 +581,7 @@ languages.logger = languages.logger or { }
 
 function languages.logger.report()
     local result, r = { }, 0
-    for tag, l in sortedpairs(registered) do
+    for tag, l in sortedhash(registered) do
         if l.loaded then
             r = r + 1
             result[r] = format("%s:%s:%s",tag,l.parent,l.number)
diff --git a/tex/context/base/mkiv/luat-cnf.lua b/tex/context/base/mkiv/luat-cnf.lua
index 7bb70ce20..a67167bb9 100644
--- a/tex/context/base/mkiv/luat-cnf.lua
+++ b/tex/context/base/mkiv/luat-cnf.lua
@@ -209,7 +209,7 @@ function texconfig.init()
 
 end
 
-CONTEXTLMTXMODE = %s
+CONTEXTLMTXMODE = 0
 
 -- we provide a qualified path
 
@@ -256,7 +256,7 @@ local function makestub()
         end
     end
     t[#t+1] = ""
-    t[#t+1] = format(stub,firsttable,tostring(CONTEXTLMTXMODE or 0))
+    t[#t+1] = format(stub,firsttable)
     io.savedata(name,concat(t,"\n"))
     logs.newline()
 end
diff --git a/tex/context/base/mkiv/mult-fun.lua b/tex/context/base/mkiv/mult-fun.lua
index e9572f983..c0209c89e 100644
--- a/tex/context/base/mkiv/mult-fun.lua
+++ b/tex/context/base/mkiv/mult-fun.lua
@@ -38,6 +38,9 @@ return {
         "popparameters",
         "definecolor",
         --
+        "newrecord",
+        "getrecord",
+        --
         "anchorxy", "anchorx", "anchory",
         "anchorht", "anchordp",
         "anchorul", "anchorll", "anchorlr", "anchorur",
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 5bf31dc0f..a238c059b 100644
Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 2273d06c0..6b0362e36 100644
Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ
diff --git a/tex/context/base/mkiv/util-tar.lua b/tex/context/base/mkiv/util-tar.lua
index 0368a7db5..c8a8536a7 100644
--- a/tex/context/base/mkiv/util-tar.lua
+++ b/tex/context/base/mkiv/util-tar.lua
@@ -124,7 +124,7 @@ local readers = {
         return true
     end,
 
-    link = function(t,h)
+    symbolic = function(t,h)
         local metadata = t.metadata
         local filename = h.name
         local linkname = h.linkname
@@ -152,7 +152,7 @@ local skippers = {
         return fileoffset
     end,
 
-    link = function(t,h)
+    symbolic = function(t,h)
         return true
     end,
 
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index 2716055d2..9dc2c1797 100644
--- a/tex/context/base/mkxl/cont-new.mkxl
+++ b/tex/context/base/mkxl/cont-new.mkxl
@@ -13,7 +13,7 @@
 
 % \normalend % uncomment this to get the real base runtime
 
-\newcontextversion{2021.06.27 16:54}
+\newcontextversion{2021.06.29 23:10}
 
 %D This file is loaded at runtime, thereby providing an excellent place for hacks,
 %D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl
index 4976f4ffe..895f817ae 100644
--- a/tex/context/base/mkxl/context.mkxl
+++ b/tex/context/base/mkxl/context.mkxl
@@ -29,7 +29,7 @@
 %D {YYYY.MM.DD HH:MM} format.
 
 \immutable\edef\contextformat {\jobname}
-\immutable\edef\contextversion{2021.06.27 16:54}
+\immutable\edef\contextversion{2021.06.29 23:10}
 
 %overloadmode 1 % check frozen / warning
 %overloadmode 2 % check frozen / error
diff --git a/tex/context/base/mkxl/libs-imp-lzma.lmt b/tex/context/base/mkxl/libs-imp-lzma.lmt
index 69762a54c..eeecaf353 100644
--- a/tex/context/base/mkxl/libs-imp-lzma.lmt
+++ b/tex/context/base/mkxl/libs-imp-lzma.lmt
@@ -9,6 +9,8 @@ if not modules then modules = { } end modules ['libs-imp-lzma'] = {
 -- Instead of linking in libs like this we now do them optional. After all, once
 -- we start adding more and more stuff statically we en dup with a mess.
 
+-- e:\tex-context\tex\texmf-win64\bin\lib\luametatex\lzma\liblzma.dll
+
 local libname = "lzma"
 local libfile = "liblzma"
 
diff --git a/tex/context/base/mkxl/lpdf-lmt.lmt b/tex/context/base/mkxl/lpdf-lmt.lmt
index fc488297f..f3eea58b4 100644
--- a/tex/context/base/mkxl/lpdf-lmt.lmt
+++ b/tex/context/base/mkxl/lpdf-lmt.lmt
@@ -2488,7 +2488,9 @@ local openfile, closefile  do
          else
             f = io.open(filename,"wb")
             if not f then
+                report()
                 report("quitting because file %a cannot be opened for writing",filename)
+                report()
                 os.exit()
             end
          -- f:setvbuf("full",64*1024)
diff --git a/tex/context/base/mkxl/luat-ini.mkxl b/tex/context/base/mkxl/luat-ini.mkxl
index abfe510b1..98095a4de 100644
--- a/tex/context/base/mkxl/luat-ini.mkxl
+++ b/tex/context/base/mkxl/luat-ini.mkxl
@@ -59,7 +59,8 @@
 %D It is nicer for checking with \type {s-system-macros} if we have some meaning:
 
 \pushoverloadmode
-    \let\-\explicitdiscretionary
+  % \aliased\let\-\explicitdiscretionary
+    \permanent\protected\def\-{\begingroup\hyphenationmode\explicithyphenationmodecode\explicitdiscretionary\endgroup}
 \popoverloadmode
 
 \ifdefined\n \else \mutable\def\n{n} \fi \ifdefined\r \else \mutable\def\r{r} \fi
diff --git a/tex/context/base/mkxl/mlib-run.lmt b/tex/context/base/mkxl/mlib-run.lmt
index 82ca32c75..231bd4d20 100644
--- a/tex/context/base/mkxl/mlib-run.lmt
+++ b/tex/context/base/mkxl/mlib-run.lmt
@@ -214,6 +214,7 @@ function metapost.load(name,method)
         tolerance      = bend_tolerance,
         math_mode      = method,
         run_script     = metapost.runscript,
+        run_internal   = metapost.runinternal,
         script_error   = metapost.scripterror,
         make_text      = metapost.maketext,
         extensions     = 1,
diff --git a/tex/context/base/mkxl/mlib-scn.lmt b/tex/context/base/mkxl/mlib-scn.lmt
index b64533cae..2fb4e7428 100644
--- a/tex/context/base/mkxl/mlib-scn.lmt
+++ b/tex/context/base/mkxl/mlib-scn.lmt
@@ -92,9 +92,6 @@ local tokenscanners  = nil
 local scanset        = nil
 local scanparameters = nil
 
-scanners.typescanners  = typescanners
-scanners.tokenscanners = tokenscanners
-
 scanset = function() -- can be optimized, we now read twice
     scantoken()
     if scantoken(true) == rightbrace_code then
@@ -165,6 +162,9 @@ table.setmetatableindex(tokenscanners,function()
     return typescanners[e] or scanexpression
 end)
 
+scanners.typescanners  = typescanners
+scanners.tokenscanners = tokenscanners
+
 -- a key like 'color' has code 'declare'
 
 local function scanparameters(fenced)
@@ -179,18 +179,29 @@ local function scanparameters(fenced)
     end
     while true do
      -- local s = scansymbol()
-        local s = scansymbol(false,false)
+        local s = scansymbol(false,false) -- keep expand
         if s == close then
             break;
         elseif s == "," then
             -- continue
         else
-            local t = scantoken(true)
-            if t == equals_code or t == colon_code then
+--             local t = scantoken(true)
+--             if t == equals_code or t == colon_code then
+--                 -- optional equal or :
+--                 scantoken()
+--             else
+--             end
+--             local kind = scantoken(true)
+
+-- test:
+--
+            local kind = scantoken(true)
+            if kind == equals_code or kind == colon_code then
                 -- optional equal or :
                 scantoken()
+                local kind = scantoken(true)
             end
-            local kind = scantoken(true)
+
             if kind == leftdelimiter_code or kind == tag_code or kind == capsule_code then
                 kind = scanexpression(true)
                 data[s] = (typescanners[kind] or scanexpression)()
@@ -381,9 +392,11 @@ end
 
 -- todo:
 
-local function getparameter()
+local function getparameter(v)
     local list, n = collectnames()
-    local v = namespaces
+    if not v then
+        v = namespaces
+    end
     for i=1,n do
         local l = list[i]
         local vl = v[l]
@@ -752,6 +765,61 @@ function metapost.setparameterset(namespace,t)
     namespaces[namespace] = t
 end
 
+-- This is an experiment for Alan and me.
+
+local records    = { }
+local stack      = setmetatableindex("table")
+local nofrecords = 0
+local interim    = 0
+
+registerdirect("newrecord", function()
+    scantoken() -- semicolon
+    local p = get_parameters()
+    local n = 0
+    if interim > 0 then
+        records[interim] = p
+        local top = stack[interim]
+        if top then
+            top = stack[interim][#top]
+            if top then
+                setmetatableindex(p,top)
+            end
+        end
+        n = interim
+        interim = 0
+    else
+        nofrecords = nofrecords + 1
+        records[nofrecords] = p
+        n = nofrecords
+    end
+    return n
+end)
+
+registerdirect("getrecord", function()
+    local n = scaninteger()
+    local v = records[n]
+    while true do
+        local t = scansymbol(true)
+        if t == ";" or t == ")" then
+            return v
+        elseif t == "." then
+            scansymbol()
+        else
+            t = scansymbol()
+            v = v[t]
+        end
+    end
+end)
+
+function metapost.runinternal(n,m)
+    if m == 0 then
+        insert(stack[n],records[n])
+        interim = n
+    elseif m == 1 then
+        records[n] = remove(stack[n]) or records[n]
+    end
+end
+
 -- goodies
 
 registerdirect("definecolor", function()
diff --git a/tex/context/base/mkxl/pack-rul.mkxl b/tex/context/base/mkxl/pack-rul.mkxl
index c4e510623..bbfd88bfe 100644
--- a/tex/context/base/mkxl/pack-rul.mkxl
+++ b/tex/context/base/mkxl/pack-rul.mkxl
@@ -1766,6 +1766,12 @@
 %   \framed[width=2cm,align=middle,location=lohi]   {location\\equals\\lohi}
 %   \framed[width=2cm,align=middle,location=middle] {location\\equals\\middle}
 %   B}
+% \vskip2cm
+% \ruledhbox
+%  {A
+%   \framed[width=2cm,align=middle,location=keep]   {location\\equals\\top}
+%   \framed[width=2cm,align=middle,location=formula {location\\equals\\bottom}
+%   B}
 
 \installframedlocator \v!hanging % best with strut=no *1* / see mail to list by SB
   {}
diff --git a/tex/context/base/mkxl/strc-con.mklx b/tex/context/base/mkxl/strc-con.mklx
index 5e0ceb833..a7df2f9cf 100644
--- a/tex/context/base/mkxl/strc-con.mklx
+++ b/tex/context/base/mkxl/strc-con.mklx
@@ -261,7 +261,7 @@
      \currentconstructiontext
    \endgroup}
 
-\protected\setvalue{\??constructionmainhandler\v!construction}#1%
+\protected\defcsname\??constructionmainhandler\v!construction\endcsname#1%
   {\iftrialtypesetting \else
      \begingroup
      \currentconstructionsynchronize % reinstated
@@ -270,7 +270,7 @@
      \endgroup
    \fi#1}
 
-\protected\setvalue{\??constructiontexthandler\v!construction}%
+\protected\defcsname\??constructiontexthandler\v!construction\endcsname
   {\begingroup
    \useconstructionstyleandcolor\c!headstyle\c!headcolor % move to \currentconstructiontext
    \the\everyconstruction
@@ -294,7 +294,7 @@
 % \def\resetconstructions % to be used in e.g. footnotes
 %   {\c_strc_constructions_nested_state\zerocount}
 
-\protected\setvalue{\??constructioncommandhandler\v!construction}%
+\protected\defcsname\??constructioncommandhandler\v!construction\endcsname
   {\endgroup}
 
 \let\p_strc_constructions_sample        \empty
diff --git a/tex/context/base/mkxl/strc-not.mklx b/tex/context/base/mkxl/strc-not.mklx
index a0691d9f1..0adb23566 100644
--- a/tex/context/base/mkxl/strc-not.mklx
+++ b/tex/context/base/mkxl/strc-not.mklx
@@ -449,7 +449,10 @@
      \c_attr_destination\currentconstructionattribute\relax % todo, whole text
      \signalcharacter
      \endgroup
-   \fi#following}
+   \fi
+   \ifconditional\c_strc_notes_flushed\else
+     #following\relax
+   \fi}
 
 \protected\defcsname\??constructionnotehandler\v!notation:\v!note\endcsname % in the running text
   {\ifnotesenabled
@@ -481,6 +484,8 @@
          \global\settrue\postponednote
        \orelse\ifconditional\inlocalnotes % todo: per note class
          \global\settrue\postponednote
+       \orelse\ifconditional\c_strc_notes_flushed
+         \handlenoteitself\currentnote\currentnotenumber
        \orelse\ifconditional\c_strc_notes_delayed
          % probably end notes
        \else
@@ -938,28 +943,49 @@
 \installcorenamespace{notelocation}
 
 \newconditional\c_strc_notes_delayed
+\newconditional\c_strc_notes_flushed
+
+\protected\def\strc_notes_set_delayed_yes{\settrue \c_strc_notes_delayed\setfalse\c_strc_notes_flushed}
+\protected\def\strc_notes_set_delayed_nop{\setfalse\c_strc_notes_delayed\setfalse\c_strc_notes_flushed}
+\protected\def\strc_notes_set_delayed_lst{\settrue \c_strc_notes_delayed\settrue \c_strc_notes_flushed}
+
+\defcsname\??notelocation\v!page\endcsname
+  {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop
+   \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_page}
+
+\defcsname\??notelocation\v!columns\endcsname
+  {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop
+   \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_columns}
+
+\defcsname\??notelocation\v!lastcolumn\endcsname
+  {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop
+   \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_lastcolumn}
+
+\defcsname\??notelocation\v!firstcolumn\endcsname
+  {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop
+   \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_firstcolumn}
 
-\protected\def\strc_notes_set_delayed_yes{\settrue \c_strc_notes_delayed}
-\protected\def\strc_notes_set_delayed_nop{\setfalse\c_strc_notes_delayed}
-
-\defcsname\??notelocation\v!page       \endcsname{\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop
-                                                  \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_page}
-\defcsname\??notelocation\v!columns    \endcsname{\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop
-                                                  \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_columns}
-\defcsname\??notelocation\v!lastcolumn \endcsname{\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop
-                                                  \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_lastcolumn}
-\defcsname\??notelocation\v!firstcolumn\endcsname{\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop
-                                                  \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_firstcolumn}
-\defcsname\??notelocation\v!none       \endcsname{\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_yes
-                                                  \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_none}
-\defcsname\??notelocation\v!text       \endcsname{\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_yes
-                                                  \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_text}
-\defcsname\??notelocation\v!high       \endcsname{\letcsname\??notepositionvariant\currentnote\endcsname\strc_notes_set_position_high}
-\defcsname\??notelocation\v!bottom     \endcsname{\letcsname\??notepositionvariant\currentnote\endcsname\strc_notes_set_position_bottom}
-
-\defcsname\??notedelayedvariant \??notedelayedvariant \endcsname{\strc_notes_set_delayed_nop}      % not let
-\defcsname\??notepositionvariant\??notepositionvariant\endcsname{\strc_notes_set_position_bottom}  % not let
-\defcsname\??notelocationvariant\??notelocationvariant\endcsname{\strc_notes_set_location_page}    % not let
+\defcsname\??notelocation\v!none\endcsname
+  {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_yes
+   \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_none}
+
+\defcsname\??notelocation\v!list\endcsname
+  {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_lst
+   \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_none}
+
+\defcsname\??notelocation\v!text\endcsname
+  {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_yes
+   \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_text}
+
+\defcsname\??notelocation\v!high\endcsname
+  {\letcsname\??notepositionvariant\currentnote\endcsname\strc_notes_set_position_high}
+
+\defcsname\??notelocation\v!bottom\endcsname
+  {\letcsname\??notepositionvariant\currentnote\endcsname\strc_notes_set_position_bottom}
+
+\defcsname\??notedelayedvariant \??notedelayedvariant \endcsname{\strc_notes_set_delayed_nop    } % not \let
+\defcsname\??notepositionvariant\??notepositionvariant\endcsname{\strc_notes_set_position_bottom} % not \let
+\defcsname\??notelocationvariant\??notelocationvariant\endcsname{\strc_notes_set_location_page  } % not \let
 
 \protected\def\strc_notes_set_delayed
   {\csname\??notedelayedvariant
@@ -1261,7 +1287,9 @@
    \begstrut
    \strc_references_flush_destination_nodes
    \strc_notes_set_destination_attribute_text
-   \strc_notes_inject_text\relax
+   \ifconditional\c_strc_notes_flushed\else
+     \strc_notes_inject_text\relax
+   \fi
    \ifvmode\obeydepth\else\endstrut\fi % \obeydepth is new per 2015-01-10
    \strc_constructions_stored_stop
    %endgroup
@@ -1270,6 +1298,8 @@
 \protected\def\strc_notes_inject_text % hm main?
   {\clf_savedlisttitle{\currentconstructionmain}\currentconstructionlistentry\relax}
 
+\installstructurelistprocessor{construction}{\usestructurelistprocessor{section}}
+
 \newsignal\d_strc_notes_signal
 
 \newconditional\processingnote
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 48cd432b5..4a2afb265 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 : c:/data/develop/context/sources/luatex-fonts-merged.lua
 -- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date  : 2021-06-27 16:54
+-- merge date  : 2021-06-29 23:10
 
 do -- begin closure to overcome local limits and interference
 
-- 
cgit v1.2.3