summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorContext Git Mirror Bot <phg42.2a@gmail.com>2016-02-23 18:15:07 +0100
committerContext Git Mirror Bot <phg42.2a@gmail.com>2016-02-23 18:15:07 +0100
commita3170089e0016cfc0489c433d9113d94b9ce3d67 (patch)
tree43c001f42d2c86ebaeb2dcfac1329ebfeb551475
parent95bf6b95a9d47a16219a26e19004d22c52180587 (diff)
downloadcontext-a3170089e0016cfc0489c433d9113d94b9ce3d67.tar.gz
2016-02-23 17:27:00
-rw-r--r--metapost/context/base/mpiv/mp-tool.mpiv17
-rw-r--r--tex/context/base/context-version.pdfbin4182 -> 4165 bytes
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/lang-url.lua199
-rw-r--r--tex/context/base/mkiv/lang-url.mkiv2
-rw-r--r--tex/context/base/mkiv/lang-wrd.lua138
-rw-r--r--tex/context/base/mkiv/math-ini.mkiv3
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin8951 -> 9095 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin260654 -> 261032 bytes
-rw-r--r--tex/context/base/mkiv/strc-itm.mkvi77
-rw-r--r--tex/context/modules/mkiv/s-languages-counters.lua2
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
13 files changed, 254 insertions, 190 deletions
diff --git a/metapost/context/base/mpiv/mp-tool.mpiv b/metapost/context/base/mpiv/mp-tool.mpiv
index 64500a056..caefcb643 100644
--- a/metapost/context/base/mpiv/mp-tool.mpiv
+++ b/metapost/context/base/mpiv/mp-tool.mpiv
@@ -1376,7 +1376,10 @@ enddef ;
%D \METAPOST\ definitions.
vardef arrowpath expr p = % patch by Peter Rolf: supports squared pen and shifting (hh: maybe just use center of head as first)
- (p cutafter makepath(pencircle scaled 2(ahlength*cosd(.5ahangle)) shifted point length p of p))
+ (p cutafter makepath(pencircle
+ scaled (if ahvariant > 0 : (1-ahdimple)* fi 2ahlength*cosd(ahangle/2))
+ shifted point length p of p
+ ))
enddef;
% def _finarr text t =
@@ -1385,12 +1388,12 @@ enddef;
% filldraw arrowhead _apth t ;
% enddef;
-def _finarr text t =
- if autoarrows : set_ahlength (t) fi ;
- draw arrowpath _apth t ; % arrowpath added
- fill arrowhead _apth t ;
- draw arrowhead _apth t ;
-enddef;
+% def _finarr text t =
+% if autoarrows : set_ahlength (t) fi ;
+% draw arrowpath _apth t ; % arrowpath added
+% fill arrowhead _apth t ;
+% draw arrowhead _apth t ;
+% enddef;
def _finarr text t =
if autoarrows : set_ahlength (t) fi ;
diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf
index de7e9a195..7a9c71000 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index dea0e124d..09569f3ce 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2016.02.22 19:54}
+\newcontextversion{2016.02.23 17:25}
%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/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index 92bb70e08..21f64f2f2 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -39,7 +39,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2016.02.22 19:54}
+\edef\contextversion{2016.02.23 17:25}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/lang-url.lua b/tex/context/base/mkiv/lang-url.lua
index 39418beef..93c3c02a8 100644
--- a/tex/context/base/mkiv/lang-url.lua
+++ b/tex/context/base/mkiv/lang-url.lua
@@ -7,13 +7,13 @@ if not modules then modules = { } end modules ['lang-url'] = {
}
local utfcharacters, utfvalues, utfbyte, utfchar = utf.characters, utf.values, utf.byte, utf.char
+local min, max = math.min, math.max
-local commands = commands
local context = context
local implement = interfaces.implement
-
local variables = interfaces.variables
+
local v_before = variables.before
local v_after = variables.after
@@ -26,91 +26,59 @@ parsing, but the following solution suits as well. After all, we're mostly
dealing with <l n='ascii'/> characters.</p>
]]--
-commands.hyphenatedurl = commands.hyphenatedurl or { }
-local hyphenatedurl = commands.hyphenatedurl
+local urls = { }
+languages.urls = urls
local characters = utilities.storage.allocate {
- ["!"] = "before",
- ["\""] = "before",
- ["#"] = "before",
- ["$"] = "before",
- ["%"] = "before",
- ["&"] = "before",
- ["("] = "before",
- ["*"] = "before",
- ["+"] = "before",
- [","] = "before",
- ["-"] = "before",
- ["."] = "before",
- ["/"] = "before",
- [":"] = "before",
- [";"] = "before",
- ["<"] = "before",
- ["="] = "before",
- [">"] = "before",
- ["?"] = "before",
- ["@"] = "before",
- ["["] = "before",
- ["\\"] = "before",
- ["^"] = "before",
- ["_"] = "before",
- ["`"] = "before",
- ["{"] = "before",
- ["|"] = "before",
- ["~"] = "before",
-
- ["'"] = "after",
- [")"] = "after",
- ["]"] = "after",
- ["}"] = "after",
+ ["!"] = "before",
+ ['"'] = "before",
+ ["#"] = "before",
+ ["$"] = "before",
+ ["%"] = "before",
+ ["&"] = "before",
+ ["("] = "before",
+ ["*"] = "before",
+ ["+"] = "before",
+ [","] = "before",
+ ["-"] = "before",
+ ["."] = "before",
+ ["/"] = "before",
+ [":"] = "before",
+ [";"] = "before",
+ ["<"] = "before",
+ ["="] = "before",
+ [">"] = "before",
+ ["?"] = "before",
+ ["@"] = "before",
+ ["["] = "before",
+ ["\\"] = "before",
+ ["^"] = "before",
+ ["_"] = "before",
+ ["`"] = "before",
+ ["{"] = "before",
+ ["|"] = "before",
+ ["~"] = "before",
+
+ ["'"] = "after",
+ [")"] = "after",
+ ["]"] = "after",
+ ["}"] = "after",
}
local mapping = utilities.storage.allocate {
-- [utfchar(0xA0)] = "~", -- nbsp (catch)
}
-hyphenatedurl.characters = characters
-hyphenatedurl.mapping = mapping
-hyphenatedurl.lefthyphenmin = 2
-hyphenatedurl.righthyphenmin = 3
-hyphenatedurl.discretionary = nil
-
--- more fun is to write nodes .. maybe it's nicer to do this
--- in an attribute handler anyway
-
--- local ctx_a = context.a
--- local ctx_b = context.b
--- local ctx_d = context.d
--- local ctx_n = context.n
--- local ctx_s = context.s
-
--- local function action(hyphenatedurl,str,left,right,disc)
--- local n = 0
--- local b = math.max( left or hyphenatedurl.lefthyphenmin, 2)
--- local e = math.min(#str-(right or hyphenatedurl.righthyphenmin)+2,#str)
--- local d = disc or hyphenatedurl.discretionary
--- local p = nil
--- for s in utfcharacters(str) do
--- n = n + 1
--- s = mapping[s] or s
--- if n > 1 then
--- ctx_s() -- can be option
--- end
--- if s == d then
--- ctx_d(utfbyte(s))
--- else
--- local c = characters[s]
--- if not c or n <= b or n >= e then
--- ctx_n(utfbyte(s))
--- elseif c == 1 then
--- ctx_b(utfbyte(s))
--- elseif c == 2 then
--- ctx_a(utfbyte(s))
--- end
--- end
--- p = s
--- end
--- end
+urls.characters = characters
+urls.mapping = mapping
+urls.lefthyphenmin = 2
+urls.righthyphenmin = 3
+urls.discretionary = nil
+urls.packslashes = false
+
+directives.register("hyphenators.urls.packslashes",function(v)
+ urls.packslashes = v
+end)
local ctx_a = context.a
local ctx_b = context.b
@@ -121,60 +89,73 @@ local ctx_C = context.C
local ctx_L = context.L
local function action(hyphenatedurl,str,left,right,disc)
- local n = 0
- local b = math.max( left or hyphenatedurl.lefthyphenmin, 2)
- local e = math.min(#str-(right or hyphenatedurl.righthyphenmin)+2,#str)
- local d = disc or hyphenatedurl.discretionary
- local p = nil
- for s in utfcharacters(str) do
- n = n + 1
- s = mapping[s] or s
- if s == d then
- ctx_d(utfbyte(s))
+ --
+ left = max( left or urls.lefthyphenmin, 2)
+ right = min(#str-(right or urls.righthyphenmin)+2,#str)
+ disc = disc or urls.discretionary
+ --
+ local word = nil
+ local prev = nil
+ local pack = urls.packslashes
+ local length = 0
+ --
+ for char in utfcharacters(str) do
+ length = length + 1
+ char = mapping[char] or char
+ if prev == char and prev == "/" then
+ ctx_c(utfbyte(char))
+ elseif char == disc then
+ ctx_d()
else
- local c = characters[s]
- if c == v_before then
- p = false
- ctx_b(utfbyte(s))
- elseif c == v_after then
- p = false
- ctx_a(utfbyte(s))
+ if prev == "/" then
+ ctx_d()
+ end
+ local how = characters[char]
+ if how == v_before then
+ word = false
+ ctx_b(utfbyte(char))
+ elseif how == v_after then
+ word = false
+ ctx_a(utfbyte(char))
else
- local l = is_letter[s]
- if n <= b or n >= e then
- if p and l then
- ctx_L(utfbyte(s))
+ local letter = is_letter[char]
+ if length <= left or length >= right then
+ if word and letter then
+ ctx_L(utfbyte(char))
else
- ctx_C(utfbyte(s))
+ ctx_C(utfbyte(char))
end
- elseif p and l then
- ctx_l(utfbyte(s))
+ elseif word and letter then
+ ctx_l(utfbyte(char))
else
- ctx_c(utfbyte(s))
+ ctx_c(utfbyte(char))
end
- p = l
+ word = letter
end
end
+ if pack then
+ prev = char
+ end
end
end
--- hyphenatedurl.action = function(_,...) action(...) end -- sort of obsolete
+-- urls.action = function(_,...) action(...) end -- sort of obsolete
table.setmetatablecall(hyphenatedurl,action) -- watch out: a caller
-- todo, no interface in mkiv yet
-function hyphenatedurl.setcharacters(str,value) -- 1, 2 == before, after
+function urls.setcharacters(str,value) -- 1, 2 == before, after
for s in utfcharacters(str) do
characters[s] = value or v_before
end
end
--- .hyphenatedurl.setcharacters("')]}",2)
+-- .urls.setcharacters("')]}",2)
implement {
name = "sethyphenatedurlcharacters",
- actions = hyphenatedurl.setcharacters,
+ actions = urls.setcharacters,
arguments = { "string", "string" }
}
diff --git a/tex/context/base/mkiv/lang-url.mkiv b/tex/context/base/mkiv/lang-url.mkiv
index db5b97516..833a583f9 100644
--- a/tex/context/base/mkiv/lang-url.mkiv
+++ b/tex/context/base/mkiv/lang-url.mkiv
@@ -74,7 +74,7 @@
\def\lang_url_a#1{\lang_url_more\char#1\lang_url_show\discretionary{}{\hyphenatedurlseparator}{}}
\def\lang_url_b#1{\lang_url_more\discretionary{\hyphenatedurlseparator}{}{}\lang_url_show\char#1\relax}
-\def\lang_url_d#1{\lang_url_more\discretionary{\lang_url_show}{\lang_url_show}{\lang_url_show}}
+\def\lang_url_d {\lang_url_more\discretionary{\lang_url_show}{\lang_url_show}{\lang_url_show}}
\def\lang_url_l#1{\lang_url_less\char#1\relax}
\def\lang_url_c#1{\lang_url_more\char#1\relax}
\def\lang_url_L#1{\lang_url_less\char#1\relax}
diff --git a/tex/context/base/mkiv/lang-wrd.lua b/tex/context/base/mkiv/lang-wrd.lua
index b564a02ae..7d625fa9e 100644
--- a/tex/context/base/mkiv/lang-wrd.lua
+++ b/tex/context/base/mkiv/lang-wrd.lua
@@ -8,9 +8,9 @@ if not modules then modules = { } end modules ['lang-wrd'] = {
local lower = string.lower
local utfchar = utf.char
-local concat = table.concat
+local concat, setmetatableindex = table.concat, table.setmetatableindex
local lpegmatch = lpeg.match
-local P, S, Cs = lpeg.P, lpeg.S, lpeg.Cs
+local P, S, Cs, Cf, Cg, Cc, C = lpeg.P, lpeg.S, lpeg.Cs, lpeg.Cf, lpeg.Cg, lpeg.Cc, lpeg.C
local report_words = logs.reporter("languages","words")
@@ -40,6 +40,7 @@ local getchar = nuts.getchar
local setattr = nuts.setattr
local traverse_nodes = nuts.traverse
+local traverse_ids = nuts.traverse_id
local wordsdata = words.data
local chardata = characters.data
@@ -63,13 +64,41 @@ local colist = attributes.list[a_color]
local is_letter = characters.is_letter -- maybe is_character as variant
local spacing = S(" \n\r\t")
-local markup = S("-=")
-local lbrace = P("{")
-local rbrace = P("}")
-local disc = (lbrace * (1-rbrace)^0 * rbrace)^1 -- or just 3 times, time this
-local word = Cs((markup/"" + disc/"" + (1-spacing))^1)
+local markup = S("-=") / ""
+local lbrace = P("{") / ""
+local rbrace = P("}") / ""
+local snippet = lbrace * (1-rbrace)^0 * rbrace
+local disc = snippet/"" -- pre
+ * snippet/"" -- post
+ * snippet -- replace
+local word = Cs((markup + disc + (1-spacing))^1)
+
+-- lpegmatch((spacing + word/function(s) print(s) end)^0,"foo foo-bar bar{}{}{}foo bar{}{}{foo}")
+
+local loaded = { } -- we share lists
+local loaders = {
+ txt = function(list,fullname)
+ local data = io.loaddata(fullname)
+ if data and data ~= "" then
+ local parser = (spacing + word/function(s) list[s] = true end)^0
+ -- local parser = Cf(Cc(list) * Cg(spacing^0 * word * Cc(true))^1,rawset) -- not better
+ lpegmatch(parser,data)
+ end
+ end,
+ lua = function(list,fullname)
+ local data = dofile(fullname)
+ if data and type(data) == "table" then
+ local words = data.words
+ if words then
+ for k, v in next, words do
+ list[k] = true
+ end
+ end
+ end
+ end,
+}
-local loaded = { } -- we share lists
+loaders.luc = loaders.lua
function words.load(tag,filename)
local fullname = resolvers.findfile(filename,'other text file') or ""
@@ -79,8 +108,9 @@ function words.load(tag,filename)
local list = loaded[fullname]
if not list then
list = wordsdata[tag] or { }
- local parser = (spacing + word/function(s) list[s] = true end)^0
- lpegmatch(parser,io.loaddata(fullname) or "")
+ local suffix = file.suffix(fullname)
+ local loader = loaders[suffix] or loaders.txt
+ loader(list,fullname)
loaded[fullname] = list
end
wordsdata[tag] = list
@@ -125,6 +155,8 @@ local function mark_words(head,whenfound) -- can be optimized and shared
end
n, s = 0, 0
end
+ -- we haven't done the fonts yet so we have characters (otherwise
+ -- we'd have to use the tounicodes)
while current do
local id = getid(current)
if id == glyph_code then
@@ -140,30 +172,28 @@ local function mark_words(head,whenfound) -- can be optimized and shared
action()
language = a
end
- local components = getfield(current,"components")
- if components then
+ local code = getchar(current)
+ local data = chardata[code]
+ if is_letter[data.category] then
n = n + 1
nds[n] = current
- for g in traverse_nodes(components) do
- s = s + 1
- str[s] = utfchar(getchar(g))
- end
- else
- local code = getchar(current)
- local data = chardata[code]
- if is_letter[data.category] then
- n = n + 1
- nds[n] = current
- s = s + 1
- str[s] = utfchar(code)
- elseif s > 0 then
- action()
- end
+ s = s + 1
+ str[s] = utfchar(code)
+ elseif s > 0 then
+ action()
end
elseif id == disc_code then -- take the replace
if n > 0 then
- n = n + 1
- nds[n] = current
+ local r = getfield(current,"replace")
+ if r then
+ for current in traverse_ids(glyph_code,r) do
+ local code = getchar(current)
+ n = n + 1
+ nds[n] = current
+ s = s + 1
+ str[s] = utfchar(code)
+ end
+ end
end
elseif id == kern_code and getsubtype(current) == kerning_code and s > 0 then
-- ok
@@ -201,7 +231,9 @@ function words.enable(settings)
local method = settings.method
wordmethod = method and tonumber(method) or wordmethod or 1
local e = enablers[wordmethod]
- if e then e(settings) end
+ if e then
+ e(settings)
+ end
tasks.enableaction("processors","languages.words.check")
enabled = true
end
@@ -254,35 +286,29 @@ local dumpthem = false
local listname = "document"
local category = { }
-local categories = { }
-
-setmetatable(categories, {
- __index = function(t,k)
- local languages = { }
- setmetatable(languages, {
- __index = function(t,k)
- local r = registered[k]
- local v = {
- number = language,
- parent = r and r.parent or nil,
- patterns = r and r.patterns or nil,
- tag = r and r.tag or nil,
- list = { },
- total = 0,
- unique = 0,
- }
- t[k] = v
- return v
- end
- } )
+
+local categories = setmetatableindex(function(t,k)
+ local languages = setmetatableindex(function(t,k)
+ local r = registered[k]
local v = {
- languages = languages,
- total = 0,
+ number = language,
+ parent = r and r.parent or nil,
+ patterns = r and r.patterns or nil,
+ tag = r and r.tag or nil,
+ list = { },
+ total = 0,
+ unique = 0,
}
t[k] = v
return v
- end
-} )
+ end)
+ local v = {
+ languages = languages,
+ total = 0,
+ }
+ t[k] = v
+ return v
+end)
local collected = {
total = 0,
@@ -330,7 +356,7 @@ local function dumpusedwords()
end
directives.register("languages.words.dump", function(v)
- dumpname = type(v) == "string" and v ~= "" and v
+ dumpname = (type(v) == "string" and v ~= "" and v) or dumpname
end)
luatex.registerstopactions(dumpusedwords)
diff --git a/tex/context/base/mkiv/math-ini.mkiv b/tex/context/base/mkiv/math-ini.mkiv
index 2fcfa6037..aff02c57a 100644
--- a/tex/context/base/mkiv/math-ini.mkiv
+++ b/tex/context/base/mkiv/math-ini.mkiv
@@ -258,7 +258,8 @@
\normalstopimath
\fi}
-\let\m\mathematics
+\let\m \mathematics
+\let\math\mathematics
% e.g.: \definemathematics[i:mp][setups=i:tight,openup=yes]
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index ad86c889c..8edd493b1 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 57684ac87..6297478c3 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/strc-itm.mkvi b/tex/context/base/mkiv/strc-itm.mkvi
index 053e35ef6..b826413b2 100644
--- a/tex/context/base/mkiv/strc-itm.mkvi
+++ b/tex/context/base/mkiv/strc-itm.mkvi
@@ -167,6 +167,8 @@
\newconditional\c_strc_itemgroups_head
\newconditional\c_strc_itemgroups_intro
\newconditional\c_strc_itemgroups_randomize
+\newconditional\c_strc_itemgroups_horizontal
+\newconditional\c_strc_itemgroups_collecting
\newconditional\c_strc_itemgroups_auto_intro
\newconditional\c_strc_itemgroups_pack
\newconditional\c_strc_itemgroups_paragraph
@@ -444,10 +446,26 @@
\setvalue{\??itemgroupkeyword\v!seven }{\letitemgroupparameter\c!n\plusseven}
\setvalue{\??itemgroupkeyword\v!eight }{\letitemgroupparameter\c!n\pluseight}
\setvalue{\??itemgroupkeyword\v!nine }{\letitemgroupparameter\c!n\plusnine}
-\setvalue{\??itemgroupkeyword\v!standard }{\setupcurrentitemgroup
- [\c!width=1.5em,\c!factor=0,\c!distance=.5em,\c!inner=,\c!factor=0,%
- \c!beforehead=,\c!afterhead=\blank,%
- \c!before=\blank,\c!inbetween=\blank,\c!after=\blank]}
+%setvalue{\??itemgroupkeyword\v!standard }{\setupcurrentitemgroup
+% [\c!width =1.5\emwidth,%
+% \c!distance =.5\emwidth,%
+% \c!factor =0,%
+% \c!inner =,%
+% \c!beforehead=,%
+% \c!afterhead =\blank,%
+% \c!before =\blank,%
+% \c!inbetween =\blank,%
+% \c!after =\blank]}
+\setvalue{\??itemgroupkeyword\v!standard }{\setitemgroupparameter\c!width {1.5\emwidth}%
+ \setitemgroupparameter\c!distance {.5\emwidth}%
+ \letitemgroupparameter\c!factor \!!zerocount
+ \letitemgroupparameter\c!inner \empty
+ \letitemgroupparameter\c!beforehead\empty
+ \letitemgroupparameter\c!afterhead \blank
+ \letitemgroupparameter\c!before \blank
+ \letitemgroupparameter\c!inbetween \blank
+ \letitemgroupparameter\c!after \blank}
+
\def\strc_itemgroups_initialize_local
{\setfalse\c_strc_itemgroups_inline
@@ -461,6 +479,8 @@
\setfalse\c_strc_itemgroups_after
\setfalse\c_strc_itemgroups_nowhite
\setfalse\c_strc_itemgroups_randomize
+ \setfalse\c_strc_itemgroups_horizontal
+ \setfalse\c_strc_itemgroups_collecting
\setfalse\c_strc_itemgroups_intro
\setfalse\c_strc_itemgroups_continue
% this will be a constant
@@ -477,9 +497,15 @@
\global\letitemgroupparameter\c!maxwidth\!!zeropoint
}
-\setvalue{\??itemgroupfirst\v!intro }{\settrue\c_strc_itemgroups_intro }
-\setvalue{\??itemgroupfirst\v!random }{\settrue\c_strc_itemgroups_randomize}
-\setvalue{\??itemgroupfirst\v!continue}{\settrue\c_strc_itemgroups_continue }
+\setvalue{\??itemgroupfirst\v!intro }{\settrue\c_strc_itemgroups_intro}
+\setvalue{\??itemgroupfirst\v!continue }{\settrue\c_strc_itemgroups_continue}
+\setvalue{\??itemgroupfirst\v!random }{\settrue\c_strc_itemgroups_randomize
+ \settrue\c_strc_itemgroups_collecting}
+\setvalue{\??itemgroupkeyword\v!horizontal}{\settrue\c_strc_itemgroups_horizontal
+ \settrue\c_strc_itemgroups_collecting
+ \settrue\c_strc_itemgroups_inline
+ \settrue\c_strc_itemgroups_joined
+ \strc_itemgroups_process_set_option_pack}
\def\strc_itemgroups_preset_stage_one#options%
{\processcommacommand[#options]\strc_itemgroups_preset_stage_one_indeed}
@@ -1536,10 +1562,33 @@
\newcount\c_strc_itemgroups_collected_done
\newcount\c_strc_itemgroups_collected_current
-\@EA\def\@EA\strc_itemgroups_collected_store\@EA#\@EA1\csname\e!stop\v!item\endcsname % use grabuntil
+% \expandafter\def\expandafter\strc_itemgroups_collected_store\expandafter#\expandafter1\csname\e!stop\v!item\endcsname % use grabuntil
+% {\advance\c_strc_itemgroups_collected_stored\plusone
+% \setvalue{\??itemgroupstack\number\c_strc_itemgroups_collected_stored}{\startitemgroupitem#1\stopitemgroupitem}}
+
+\let\strc_itemgroups_collected_store\relax
+
+\normalexpanded{\def\strc_itemgroups_collected_store#1\csname\e!stop\v!item\endcsname}%
{\advance\c_strc_itemgroups_collected_stored\plusone
\setvalue{\??itemgroupstack\number\c_strc_itemgroups_collected_stored}{\startitemgroupitem#1\stopitemgroupitem}}
+\def\strc_itemgroups_collected_flush_randomize
+ {\collecteditemgroupitem}
+
+\def\strc_itemgroups_collected_flush_horizontal
+ {\begingroup
+ \scratchcounter\itemgroupparameter\c!n\relax
+ \ifnum\c_strc_itemgroups_collected_done>\plusone
+ \ifcase\modulonumber\scratchcounter\c_strc_itemgroups_collected_done\relax
+ % compensate for rounding errors
+ \hfill % \hskip\zeropoint plus \scaledpoint minus \scaledpoint
+ \allowbreak
+ \fi
+ \fi
+ \noindent % no \dontleavehmode
+ \hbox to \dimexpr\availablehsize/\scratchcounter\relax{\collecteditemgroupitem}%
+ \endgroup}
+
\def\strc_itemgroups_collected_flush
{\ifconditional\c_strc_itemgroups_randomize
\getrandomcount\c_strc_itemgroups_collected_current\plusone\c_strc_itemgroups_collected_stored
@@ -1547,8 +1596,12 @@
\advance\c_strc_itemgroups_collected_current\plusone
\fi
\ifcsname\??itemgroupstack\number\c_strc_itemgroups_collected_current\endcsname
- \lastnamedcs
- \letbeundefined{\??itemgroupstack\number\c_strc_itemgroups_collected_current}%
+ \edef\collecteditemgroupitem{\lastnamedcs}%
+ \ifconditional\c_strc_itemgroups_horizontal
+ \strc_itemgroups_collected_flush_horizontal
+ \else
+ \collecteditemgroupitem
+ \fi
\advance\c_strc_itemgroups_collected_done\plusone
\fi
\ifnum\c_strc_itemgroups_collected_done<\c_strc_itemgroups_collected_stored
@@ -1556,7 +1609,7 @@
\fi}
\unexpanded\def\stopcollectitems
- {\ifconditional\c_strc_itemgroups_randomize
+ {\ifconditional\c_strc_itemgroups_collecting
\c_strc_itemgroups_collected_done \zerocount
\c_strc_itemgroups_collected_current\zerocount
\ifnum\c_strc_itemgroups_collected_stored>\zerocount
@@ -1565,7 +1618,7 @@
\fi}
\unexpanded\def\startcollectitems
- {\ifconditional\c_strc_itemgroups_randomize
+ {\ifconditional\c_strc_itemgroups_collecting
\c_strc_itemgroups_collected_stored\zerocount
\letvalue{\e!start\v!item}\strc_itemgroups_collected_store
\fi}
diff --git a/tex/context/modules/mkiv/s-languages-counters.lua b/tex/context/modules/mkiv/s-languages-counters.lua
index 436e64a64..45d68be8d 100644
--- a/tex/context/modules/mkiv/s-languages-counters.lua
+++ b/tex/context/modules/mkiv/s-languages-counters.lua
@@ -14,7 +14,7 @@ local data = converters.verbose.data
function moduledata.languages.counters.showverbose(specification)
specification = interfaces.checkedspecification(specification)
local list = utilities.parsers.settings_to_array(specification.language or "")
- if #list == 0then
+ if #list == 0 then
return
end
local used = { }
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index ca93a5609..04df65f02 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 : 02/22/16 19:54:56
+-- merge date : 02/23/16 17:25:08
do -- begin closure to overcome local limits and interference