summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2012-04-17 22:37:00 +0200
committerHans Hagen <pragma@wxs.nl>2012-04-17 22:37:00 +0200
commit4833d4fc12d57cde9d0b70ff60ff6417b722b38d (patch)
tree43cebd2b1df7d4a76a4a2c9dce0e2358296ffbee
parent3159b11716778db5ba410914225bfdb6661f292d (diff)
downloadcontext-4833d4fc12d57cde9d0b70ff60ff6417b722b38d.tar.gz
beta 2012.04.17 22:37
-rw-r--r--context/data/scite/lexers/scite-context-lexer-cld.lua7
-rw-r--r--context/data/scite/lexers/scite-context-lexer-lua-longstring.lua3
-rw-r--r--context/data/scite/lexers/scite-context-lexer-lua.lua4
-rw-r--r--context/data/scite/lexers/scite-context-lexer-mps.lua4
-rw-r--r--context/data/scite/lexers/scite-context-lexer-pdf-object.lua4
-rw-r--r--context/data/scite/lexers/scite-context-lexer-pdf-xref.lua7
-rw-r--r--context/data/scite/lexers/scite-context-lexer-pdf.lua4
-rw-r--r--context/data/scite/lexers/scite-context-lexer-tex.lua10
-rw-r--r--context/data/scite/lexers/scite-context-lexer-txt.lua6
-rw-r--r--context/data/scite/lexers/scite-context-lexer-xml-cdata.lua16
-rw-r--r--context/data/scite/lexers/scite-context-lexer-xml-comment.lua8
-rw-r--r--context/data/scite/lexers/scite-context-lexer-xml.lua68
-rw-r--r--context/data/scite/lexers/scite-context-lexer.lua1
-rw-r--r--context/data/scite/lexers/themes/scite-context-theme.lua3
-rw-r--r--context/data/scite/scite-context-external.properties24
-rw-r--r--scripts/context/lua/mtx-context.lua1
-rw-r--r--scripts/context/lua/mtxrun.lua12
-rw-r--r--scripts/context/stubs/mswin/mtxrun.lua12
-rwxr-xr-xscripts/context/stubs/unix/mtxrun12
-rw-r--r--tex/context/base/cont-new.mkii2
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4070 -> 4073 bytes
-rw-r--r--tex/context/base/context-version.pngbin105445 -> 106054 bytes
-rw-r--r--tex/context/base/context.mkii2
-rw-r--r--tex/context/base/context.mkiv3
-rw-r--r--tex/context/base/core-dat.lua197
-rw-r--r--tex/context/base/core-dat.mkiv98
-rw-r--r--tex/context/base/core-uti.lua2
-rw-r--r--tex/context/base/lpdf-ini.lua14
-rw-r--r--tex/context/base/m-steps.mkvi10
-rw-r--r--tex/context/base/spac-pag.mkiv251
-rw-r--r--tex/context/base/status-files.pdfbin24326 -> 24323 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin172421 -> 173014 bytes
-rw-r--r--tex/context/base/status-mkiv.lua5
-rw-r--r--tex/context/base/strc-flt.mkvi74
-rw-r--r--tex/context/base/strc-not.mkvi25
-rw-r--r--tex/context/base/trac-log.lua8
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
38 files changed, 713 insertions, 188 deletions
diff --git a/context/data/scite/lexers/scite-context-lexer-cld.lua b/context/data/scite/lexers/scite-context-lexer-cld.lua
index 9623e2efe..4d235b1af 100644
--- a/context/data/scite/lexers/scite-context-lexer-cld.lua
+++ b/context/data/scite/lexers/scite-context-lexer-cld.lua
@@ -9,8 +9,10 @@ local info = {
local lexer = lexer
local token = lexer.token
-local cldlexer = { _NAME = "cld" }
-local lualexer = lexer.load('scite-context-lexer-lua')
+-- local cldlexer = { _NAME = "cld" }
+local cldlexer = { _NAME = "lua" } -- get whitespace right
+local whitespace = lexer.WHITESPACE
+local lualexer = lexer.load('scite-context-lexer-lua')
cldlexer._rules = lualexer._rules_cld
cldlexer._tokenstyles = lualexer._tokenstyles
@@ -18,3 +20,4 @@ cldlexer._foldsymbols = lualexer._foldsymbols
cldlexer._directives = lualexer._directives
return cldlexer
+
diff --git a/context/data/scite/lexers/scite-context-lexer-lua-longstring.lua b/context/data/scite/lexers/scite-context-lexer-lua-longstring.lua
index 6cc79aeb9..f4ac2cff0 100644
--- a/context/data/scite/lexers/scite-context-lexer-lua-longstring.lua
+++ b/context/data/scite/lexers/scite-context-lexer-lua-longstring.lua
@@ -2,8 +2,7 @@ local lexer = lexer
local token = lexer.token
local P = lpeg.P
-local stringlexer = { _NAME = "string" }
-
+local stringlexer = { _NAME = "lua-longstring" }
local whitespace = lexer.WHITESPACE
local space = lexer.space
diff --git a/context/data/scite/lexers/scite-context-lexer-lua.lua b/context/data/scite/lexers/scite-context-lexer-lua.lua
index 248672b06..473e45bb2 100644
--- a/context/data/scite/lexers/scite-context-lexer-lua.lua
+++ b/context/data/scite/lexers/scite-context-lexer-lua.lua
@@ -17,10 +17,10 @@ local setmetatable = setmetatable
-- beware: all multiline is messy, so even if it's no lexer, it should be an embedded lexer
local lualexer = { _NAME = "lua" }
-local stringlexer = lexer.load("scite-context-lexer-lua-longstring")
-
local whitespace = lexer.WHITESPACE
+local stringlexer = lexer.load("scite-context-lexer-lua-longstring")
+
local directives = { } -- communication channel
-- this will be extended
diff --git a/context/data/scite/lexers/scite-context-lexer-mps.lua b/context/data/scite/lexers/scite-context-lexer-mps.lua
index 4dd498b53..5e8a440fa 100644
--- a/context/data/scite/lexers/scite-context-lexer-mps.lua
+++ b/context/data/scite/lexers/scite-context-lexer-mps.lua
@@ -14,10 +14,8 @@ local token, exact_match = lexer.token, lexer.exact_match
local P, R, S, V, C, Cmt = lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.C, lpeg.Cmt
local type = type
-local metafunlexer = { _NAME = "metafun" }
-
+local metafunlexer = { _NAME = "mps" }
local whitespace = lexer.WHITESPACE
-
local context = lexer.context
local metapostprimitives = { }
diff --git a/context/data/scite/lexers/scite-context-lexer-pdf-object.lua b/context/data/scite/lexers/scite-context-lexer-pdf-object.lua
index ec950c26c..e98be07a7 100644
--- a/context/data/scite/lexers/scite-context-lexer-pdf-object.lua
+++ b/context/data/scite/lexers/scite-context-lexer-pdf-object.lua
@@ -10,10 +10,8 @@ local lexer = lexer
local token = lexer.token
local P, R, S, C, V = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.V
-local pdfobjectlexer = { _NAME = "pdfobject" }
-
+local pdfobjectlexer = { _NAME = "pdf-object" }
local whitespace = lexer.WHITESPACE -- triggers states
-
local context = lexer.context
local patterns = context.patterns
diff --git a/context/data/scite/lexers/scite-context-lexer-pdf-xref.lua b/context/data/scite/lexers/scite-context-lexer-pdf-xref.lua
index 9fd6df992..e250d3b84 100644
--- a/context/data/scite/lexers/scite-context-lexer-pdf-xref.lua
+++ b/context/data/scite/lexers/scite-context-lexer-pdf-xref.lua
@@ -10,13 +10,12 @@ local lexer = lexer
local token = lexer.token
local P = lpeg.P
-local pdfxreflexer = { _NAME = "pdfxref" }
-local pdfobjectlexer = lexer.load("scite-context-lexer-pdf-object")
-
+local pdfxreflexer = { _NAME = "pdf-xref" }
+local whitespace = lexer.WHITESPACE -- triggers states
local context = lexer.context
local patterns = context.patterns
-local whitespace = lexer.WHITESPACE -- triggers states
+local pdfobjectlexer = lexer.load("scite-context-lexer-pdf-object")
local spacing = patterns.spacing
diff --git a/context/data/scite/lexers/scite-context-lexer-pdf.lua b/context/data/scite/lexers/scite-context-lexer-pdf.lua
index 61cf819f0..6ed7d1ecd 100644
--- a/context/data/scite/lexers/scite-context-lexer-pdf.lua
+++ b/context/data/scite/lexers/scite-context-lexer-pdf.lua
@@ -13,11 +13,11 @@ local token = lexer.token
local P, R, S = lpeg.P, lpeg.R, lpeg.S
local pdflexer = { _NAME = "pdf" }
+local whitespace = lexer.WHITESPACE -- triggers states
+
local pdfobjectlexer = lexer.load("scite-context-lexer-pdf-object")
local pdfxreflexer = lexer.load("scite-context-lexer-pdf-xref")
-local whitespace = lexer.WHITESPACE -- triggers states
-
local context = lexer.context
local patterns = context.patterns
diff --git a/context/data/scite/lexers/scite-context-lexer-tex.lua b/context/data/scite/lexers/scite-context-lexer-tex.lua
index 3408d1eb4..e5fbf5900 100644
--- a/context/data/scite/lexers/scite-context-lexer-tex.lua
+++ b/context/data/scite/lexers/scite-context-lexer-tex.lua
@@ -44,12 +44,12 @@ local find, match, lower = string.find, string.match, string.lower
-- module(...)
-local contextlexer = { _NAME = "context" }
+local contextlexer = { _NAME = "tex" }
+local whitespace = lexer.WHITESPACE
+
local cldlexer = lexer.load('scite-context-lexer-cld')
local mpslexer = lexer.load('scite-context-lexer-mps')
--- local cldlexer = lexer.load('scite-context-lexer-lua') -- test
-
local commands = { en = { } }
local primitives = { }
local helpers = { }
@@ -189,8 +189,6 @@ end)
local commentline = P('%') * (1-S("\n\r"))^0
local endline = S("\n\r")^1
-local whitespace = lexer.WHITESPACE
-
local space = lexer.space -- S(" \n\r\t\f\v")
local any = lexer.any
local backslash = P("\\")
@@ -405,7 +403,7 @@ local stoplua = P("\\stop") * Cmt(luaenvironment,stopdisplaylua)
+ Cmt(P("}"),stopinlinelua_e)
local startluacode = token("embedded", startlua)
-local stopluacode = token("embedded", stoplua)
+local stopluacode = #stoplua * token("embedded", stoplua)
local metafuncall = ( P("use") + P("reusable") + P("unique") ) * ("MPgraphic")
diff --git a/context/data/scite/lexers/scite-context-lexer-txt.lua b/context/data/scite/lexers/scite-context-lexer-txt.lua
index 2f476a6a8..f607ee1eb 100644
--- a/context/data/scite/lexers/scite-context-lexer-txt.lua
+++ b/context/data/scite/lexers/scite-context-lexer-txt.lua
@@ -13,11 +13,9 @@ local token = lexer.token
local P, S, Cmt = lpeg.P, lpeg.S, lpeg.Cmt
local find, match = string.find, string.match
-local textlexer = { _NAME = "text" }
-
-local context = lexer.context
-
+local textlexer = { _NAME = "txt" }
local whitespace = lexer.WHITESPACE
+local context = lexer.context
local space = lexer.space
local any = lexer.any
diff --git a/context/data/scite/lexers/scite-context-lexer-xml-cdata.lua b/context/data/scite/lexers/scite-context-lexer-xml-cdata.lua
index 511465b01..7dfaed5bc 100644
--- a/context/data/scite/lexers/scite-context-lexer-xml-cdata.lua
+++ b/context/data/scite/lexers/scite-context-lexer-xml-cdata.lua
@@ -10,21 +10,21 @@ local lexer = lexer
local token = lexer.token
local P = lpeg.P
-local xmlcdatalexer = { _NAME = "xmlcdata" }
+local xmlcdatalexer = { _NAME = "xml-cdata" }
+local whitespace = lexer.WHITESPACE -- triggers states
+local context = lexer.context
-local whitespace = lexer.WHITESPACE -- triggers states
+local space = lexer.space
+local nospace = 1 - space - P("]]>")
-local space = lexer.space
-local nospace = 1 - space - P("]]>")
-
-local p_spaces = token(whitespace, space ^1)
-local p_cdata = token("comment", nospace^1)
+local p_spaces = token(whitespace, space ^1)
+local p_cdata = token("comment", nospace^1)
xmlcdatalexer._rules = {
{ "whitespace", p_spaces },
{ "cdata", p_cdata },
}
-xmlcdatalexer._tokenstyles = lexer.context.styleset
+xmlcdatalexer._tokenstyles = context.styleset
return xmlcdatalexer
diff --git a/context/data/scite/lexers/scite-context-lexer-xml-comment.lua b/context/data/scite/lexers/scite-context-lexer-xml-comment.lua
index 151270091..f2e24fa90 100644
--- a/context/data/scite/lexers/scite-context-lexer-xml-comment.lua
+++ b/context/data/scite/lexers/scite-context-lexer-xml-comment.lua
@@ -10,9 +10,9 @@ local lexer = lexer
local token = lexer.token
local P = lpeg.P
-local xmlcommentlexer = { _NAME = "xmlcomment" }
-
-local whitespace = lexer.WHITESPACE
+local xmlcommentlexer = { _NAME = "xml-comment" }
+local whitespace = lexer.WHITESPACE
+local context = lexer.context
local space = lexer.space
local nospace = 1 - space - P("-->")
@@ -25,7 +25,7 @@ xmlcommentlexer._rules = {
{ "comment", p_comment },
}
-xmlcommentlexer._tokenstyles = lexer.context.styleset
+xmlcommentlexer._tokenstyles = context.styleset
xmlcommentlexer._foldsymbols = {
_patterns = {
diff --git a/context/data/scite/lexers/scite-context-lexer-xml.lua b/context/data/scite/lexers/scite-context-lexer-xml.lua
index b74a43cc7..d938840c0 100644
--- a/context/data/scite/lexers/scite-context-lexer-xml.lua
+++ b/context/data/scite/lexers/scite-context-lexer-xml.lua
@@ -22,12 +22,12 @@ local type = type
local match, find = string.match, string.find
local xmllexer = { _NAME = "xml" }
-local xmlcommentlexer = lexer.load("scite-context-lexer-xml-comment") -- indirect (some issue with the lexer framework)
-local xmlcdatalexer = lexer.load("scite-context-lexer-xml-cdata") -- indirect (some issue with the lexer framework)
-
local whitespace = lexer.WHITESPACE -- triggers states
local context = lexer.context
+local xmlcommentlexer = lexer.load("scite-context-lexer-xml-comment") -- indirect (some issue with the lexer framework)
+local xmlcdatalexer = lexer.load("scite-context-lexer-xml-cdata") -- indirect (some issue with the lexer framework)
+
local space = lexer.space -- S(" \t\n\r\v\f")
local any = lexer.any -- P(1)
@@ -95,7 +95,8 @@ local p_word =
if validwords then
return checkedword(validwords,s,i)
else
- return true, { "text", i }
+ return true, { "text", i } -- or default
+-- return true, { "invisible", i }
end
end)
@@ -107,6 +108,7 @@ local p_text =
local p_spacing =
token(whitespace, space^1)
+-- token("whitespace", space^1)
local p_optionalwhitespace =
p_spacing^0
@@ -225,23 +227,29 @@ local p_doctype = token("command",P("<!DOCTYPE"))
lexer.embed_lexer(xmllexer, xmlcommentlexer, token("command",opencomment), token("command",closecomment))
lexer.embed_lexer(xmllexer, xmlcdatalexer, token("command",opencdata), token("command",closecdata))
-local p_name =
- token("plain",name)
- * (
- token("default",colon)
- * token("keyword",name)
- )^1
- + token("keyword",name)
-
-local p_key = p_name
+-- local p_name =
+-- token("plain",name)
+-- * (
+-- token("default",colon)
+-- * token("keyword",name)
+-- )
+-- + token("keyword",name)
+
+local p_name = -- more robust
+ token("plain",name * colon)^-1
+ * token("keyword",name)
+
+-- local p_key =
+-- token("plain",name)
+-- * (
+-- token("default",colon)
+-- * token("constant",name)
+-- )
+-- + token("constant",name)
local p_key =
- token("plain",name)
- * (
- token("default",colon)
- * token("constant",name)
- )^1
- + token("constant",name)
+ token("plain",name * colon)^-1
+ * token("constant",name)
local p_attributes = (
p_optionalwhitespace
@@ -255,16 +263,24 @@ local p_attributes = (
local p_open =
token("keyword",openbegin)
- * p_name
- * p_optionalwhitespace
- * p_attributes
- * token("keyword",closebegin)
+ * (
+ p_name
+ * p_optionalwhitespace
+ * p_attributes
+ * token("keyword",closebegin)
+ +
+ token("error",(1-closebegin)^1)
+ )
local p_close =
token("keyword",openend)
- * p_name
- * p_optionalwhitespace
- * token("keyword",closeend)
+ * (
+ p_name
+ * p_optionalwhitespace
+ * token("keyword",closeend)
+ +
+ token("error",(1-closeend)^1)
+ )
local p_entity =
token("constant",entity)
diff --git a/context/data/scite/lexers/scite-context-lexer.lua b/context/data/scite/lexers/scite-context-lexer.lua
index 2d1e8b205..d82a057b7 100644
--- a/context/data/scite/lexers/scite-context-lexer.lua
+++ b/context/data/scite/lexers/scite-context-lexer.lua
@@ -243,6 +243,7 @@ patterns.wordpattern = patterns.wordtoken^3 -- todo: if limit and #s < limit the
function context.checkedword(validwords,s,i) -- ,limit
if not validwords then
return true, { "text", i }
+-- return true, { "default", i }
else
-- keys are lower
local word = validwords[s]
diff --git a/context/data/scite/lexers/themes/scite-context-theme.lua b/context/data/scite/lexers/themes/scite-context-theme.lua
index fed7b0853..6351c290d 100644
--- a/context/data/scite/lexers/themes/scite-context-theme.lua
+++ b/context/data/scite/lexers/themes/scite-context-theme.lua
@@ -83,6 +83,7 @@ local style_regex = style { fore = colors.magenta }
-- reserved:
local style_default = style { font = font_name, size = font_size, fore = colors.black, back = colors.textpanel }
+local style_text = style { font = font_name, size = font_size, fore = colors.black, back = colors.textpanel }
local style_line_number = style { back = colors.linepanel }
local style_bracelight = style { fore = colors.orange, bold = true }
local style_bracebad = style { fore = colors.orange, bold = true }
@@ -176,6 +177,8 @@ local styles = { -- as we have globals we could do with less
["user"] = style_user,
["data"] = style_data,
+ ["text"] = style_text, -- style_default
+
}
local styleset = { }
diff --git a/context/data/scite/scite-context-external.properties b/context/data/scite/scite-context-external.properties
index d0e6fc9c5..6bba2b7ff 100644
--- a/context/data/scite/scite-context-external.properties
+++ b/context/data/scite/scite-context-external.properties
@@ -39,6 +39,15 @@ lexer.$(file.patterns.example)=lpeg_scite-context-lexer-xml
lexer.$(file.patterns.text)=lpeg_scite-context-lexer-txt
lexer.$(file.patterns.pdf)=lpeg_scite-context-lexer-pdf
+#~ lexer.$(file.patterns.metapost)=lpeg_ctx-mps
+#~ lexer.$(file.patterns.metafun)=lpeg_ctx-mps
+#~ lexer.$(file.patterns.context)=lpeg_ctx-tex
+#~ lexer.$(file.patterns.tex)=lpeg_ctx-tex
+#~ lexer.$(file.patterns.lua)=lpeg_ctx-lua
+#~ lexer.$(file.patterns.example)=lpeg_ctx-xml
+#~ lexer.$(file.patterns.text)=lpeg_ctx-txt
+#~ lexer.$(file.patterns.pdf)=lpeg_ctx-pdf
+
comment.block.lpeg_scite-context-lexer-tex=%
comment.block.at.line.start.lpeg_scite-context-lexer-tex=1
@@ -54,6 +63,21 @@ comment.block.at.line.start.lpeg_scite-context-lexer-cld=1
comment.block.lpeg_props=#
comment.block.at.line.start.lpeg_props=1
+#~ comment.block.lpeg_ctx-tex=%
+#~ comment.block.at.line.start.lpeg_ctx-tex=1
+
+#~ comment.block.lpeg_ctx-mps=%
+#~ comment.block.at.line.start.lpeg_ctx-mps=1
+
+#~ comment.block.lpeg_ctx-lua=--
+#~ comment.block.at.line.start.lpeg_ctx-lua=1
+
+#~ comment.block.lpeg_ctx-cld=--
+#~ comment.block.at.line.start.lpeg_ctx-cld=1
+
+#~ comment.block.lpeg_props=#
+#~ comment.block.at.line.start.lpeg_props=1
+
#~ style.*.34=bold
#~ style.*.35=bold
diff --git a/scripts/context/lua/mtx-context.lua b/scripts/context/lua/mtx-context.lua
index 16e8962c4..305236509 100644
--- a/scripts/context/lua/mtx-context.lua
+++ b/scripts/context/lua/mtx-context.lua
@@ -1646,6 +1646,7 @@ elseif environment.argument("ctx") then
elseif environment.argument("mp") or environment.argument("metapost") then
scripts.context.timed(scripts.context.metapost)
elseif environment.argument("version") then
+ application.identify()
scripts.context.version()
elseif environment.argument("touch") then
scripts.context.touch()
diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua
index 90ebe0b93..87d5c4460 100644
--- a/scripts/context/lua/mtxrun.lua
+++ b/scripts/context/lua/mtxrun.lua
@@ -6168,6 +6168,13 @@ local function reportbanner(t)
end
end
+local function reportversion(t)
+ local banner = t.banner
+ if banner then
+ t.report(banner)
+ end
+end
+
local function reporthelp(t,...)
local helpinfo = t.helpinfo
if type(helpinfo) == "string" then
@@ -6194,6 +6201,7 @@ function logs.application(t)
t.report = logs.reporter(t.name)
t.help = function(...) reportbanner(t) ; reporthelp(t,...) ; reportinfo(t) end
t.identify = function() reportbanner(t) end
+ t.version = function() reportversion(t) end
return t
end
@@ -16574,6 +16582,10 @@ elseif e_argument("help") and filename=='base' then
runners.execute_ctx_script("mtx-base","--help")
+elseif e_argument("version") then
+
+ application.version()
+
elseif e_argument("help") or filename=='help' or filename == "" then
application.help()
diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua
index 90ebe0b93..87d5c4460 100644
--- a/scripts/context/stubs/mswin/mtxrun.lua
+++ b/scripts/context/stubs/mswin/mtxrun.lua
@@ -6168,6 +6168,13 @@ local function reportbanner(t)
end
end
+local function reportversion(t)
+ local banner = t.banner
+ if banner then
+ t.report(banner)
+ end
+end
+
local function reporthelp(t,...)
local helpinfo = t.helpinfo
if type(helpinfo) == "string" then
@@ -6194,6 +6201,7 @@ function logs.application(t)
t.report = logs.reporter(t.name)
t.help = function(...) reportbanner(t) ; reporthelp(t,...) ; reportinfo(t) end
t.identify = function() reportbanner(t) end
+ t.version = function() reportversion(t) end
return t
end
@@ -16574,6 +16582,10 @@ elseif e_argument("help") and filename=='base' then
runners.execute_ctx_script("mtx-base","--help")
+elseif e_argument("version") then
+
+ application.version()
+
elseif e_argument("help") or filename=='help' or filename == "" then
application.help()
diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun
index 90ebe0b93..87d5c4460 100755
--- a/scripts/context/stubs/unix/mtxrun
+++ b/scripts/context/stubs/unix/mtxrun
@@ -6168,6 +6168,13 @@ local function reportbanner(t)
end
end
+local function reportversion(t)
+ local banner = t.banner
+ if banner then
+ t.report(banner)
+ end
+end
+
local function reporthelp(t,...)
local helpinfo = t.helpinfo
if type(helpinfo) == "string" then
@@ -6194,6 +6201,7 @@ function logs.application(t)
t.report = logs.reporter(t.name)
t.help = function(...) reportbanner(t) ; reporthelp(t,...) ; reportinfo(t) end
t.identify = function() reportbanner(t) end
+ t.version = function() reportversion(t) end
return t
end
@@ -16574,6 +16582,10 @@ elseif e_argument("help") and filename=='base' then
runners.execute_ctx_script("mtx-base","--help")
+elseif e_argument("version") then
+
+ application.version()
+
elseif e_argument("help") or filename=='help' or filename == "" then
application.help()
diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii
index 408e920a0..bd6a20f7a 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{2012.04.14 00:10}
+\newcontextversion{2012.04.17 22:37}
%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 0ffdc5a33..8ea0045c6 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{2012.04.14 00:10}
+\newcontextversion{2012.04.17 22:37}
%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 d6185843b..7d6dac649 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png
index cce844c07..47f40fdc4 100644
--- a/tex/context/base/context-version.png
+++ b/tex/context/base/context-version.png
Binary files differ
diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii
index 207c507e2..cf3bd5467 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{2012.04.14 00:10}
+\edef\contextversion{2012.04.17 22:37}
%D For those who want to use this:
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 0d9be0155..2c6813941 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -23,7 +23,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2012.04.14 00:10}
+\edef\contextversion{2012.04.17 22:37}
%D For those who want to use this:
@@ -178,6 +178,7 @@
\loadmarkfile{core-uti}
\loadmarkfile{core-two}
+\loadmarkfile{core-dat}
\loadmarkfile{colo-ini}
\loadmarkfile{colo-grp} % optional
diff --git a/tex/context/base/core-dat.lua b/tex/context/base/core-dat.lua
new file mode 100644
index 000000000..eab238704
--- /dev/null
+++ b/tex/context/base/core-dat.lua
@@ -0,0 +1,197 @@
+if not modules then modules = { } end modules ['core-dat'] = {
+ version = 1.001,
+ comment = "companion to core-dat.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+--[[ldx--
+<p>This module provides a (multipass) container for arbitrary data. It
+replaces the twopass data mechanism.</p>
+--ldx]]--
+
+local tonumber = tonumber
+
+local context, commands = context, commands
+
+local allocate = utilities.storage.allocate
+local settings_to_hash = utilities.parsers.settings_to_hash
+local format = string.format
+local texcount = tex.count
+
+local v_yes = interfaces.variables.yes
+
+local new_latelua = nodes.pool.latelua
+
+local collected = allocate()
+local tobesaved = allocate()
+
+local datasets = {
+ collected = collected,
+ tobesaved = tobesaved,
+}
+
+job.datasets = datasets
+
+local function initializer()
+ collected = datasets.collected
+ tobesaved = datasets.tobesaved
+end
+
+job.register('job.datasets.collected', tobesaved, initializer, nil)
+
+local sets = { }
+
+table.setmetatableindex(tobesaved, function(t,k)
+ local v = { }
+ t[k] = v
+ return v
+end)
+
+table.setmetatableindex(sets, function(t,k)
+ local v = {
+ index = 0,
+ order = 0,
+ }
+ t[k] = v
+ return v
+end)
+
+local function setdata(settings)
+ local name = settings.name
+ local tag = settings.tag
+ local data = settings.data
+ local list = tobesaved[name]
+ data = settings_to_hash(data) or { }
+ if not tag then
+ tag = #list + 1
+ else
+ tag = tonumber(tag) or tag -- autonumber saves keys
+ end
+ list[tag] = data
+ if settings.delay == v_yes then
+ local set = sets[name]
+ local index = set.index + 1
+ set.index = index
+ data.index = index
+ data.order = index
+ data.realpage = texcount.realpageno
+ end
+ return name, tag, data
+end
+
+datasets.setdata = setdata
+
+function datasets.extend(name,tag)
+ local set = sets[name]
+ local order = set.order + 1
+ set.order = order
+ local t = tobesaved[name][tag]
+ t.realpage = texcount.realpageno
+ t.order = order
+end
+
+function datasets.getdata(name,tag,key,default)
+ local t = collected[name]
+ t = t and (t[tag] or t[tonumber(tag)])
+ if not t then
+ -- back luck
+ elseif key then
+ return t[key] or default
+ else
+ return t
+ end
+end
+
+function commands.setdataset(settings)
+ local name, tag, data = setdata(settings)
+ if settings.delay ~= v_yes then
+ --
+ elseif type(tag) == "number" then
+ context(new_latelua(format("job.datasets.extend(%q,%i)",name,tag)))
+ else
+ context(new_latelua(format("job.datasets.extend(%q,%q)",name,tag)))
+ end
+end
+
+function commands.datasetvariable(name,tag,key)
+ local t = collected[name]
+ t = t and (t[tag] or t[tonumber(tag)])
+ if t then
+ local s = t[key]
+ if s then
+ context(s)
+ end
+ end
+end
+
+--[[ldx--
+<p>We also provide an efficient variant for page states.</p>
+--ldx]]--
+
+local collected = allocate()
+local tobesaved = allocate()
+
+local pagestates = {
+ collected = collected,
+ tobesaved = tobesaved,
+}
+
+job.pagestates = pagestates
+
+local function initializer()
+ collected = pagestates.collected
+ tobesaved = pagestates.tobesaved
+end
+
+job.register('job.pagestates.collected', tobesaved, initializer, nil)
+
+table.setmetatableindex(tobesaved, function(t,k)
+ local v = { }
+ t[k] = v
+ return v
+end)
+
+local function setstate(settings)
+ local name = settings.name
+ local tag = settings.tag
+ local list = tobesaved[name]
+ if not tag then
+ tag = #list + 1
+ else
+ tag = tonumber(tag) or tag -- autonumber saves keys
+ end
+ local data = texcount.realpageno
+ list[tag] = data
+ return name, tag, data
+end
+
+pagestates.setstate = setstate
+
+function pagestates.extend(name,tag)
+ tobesaved[name][tag] = texcount.realpageno
+end
+
+function pagestates.realpage(name,tag,default)
+ local t = collected[name]
+ t = t and (t[tag] or t[tonumber(tag)])
+ return tonumber(t or default)
+end
+
+function commands.setpagestate(settings)
+ local name, tag, data = setstate(settings)
+ if type(tag) == "number" then
+ context(new_latelua(format("job.pagestates.extend(%q,%i)",name,tag)))
+ else
+ context(new_latelua(format("job.pagestates.extend(%q,%q)",name,tag)))
+ end
+end
+
+function commands.pagestaterealpage(name,tag)
+ local t = collected[name]
+ t = t and (t[tag] or t[tonumber(tag)])
+ if t then
+ context(t)
+ end
+end
diff --git a/tex/context/base/core-dat.mkiv b/tex/context/base/core-dat.mkiv
new file mode 100644
index 000000000..f1d2a52cb
--- /dev/null
+++ b/tex/context/base/core-dat.mkiv
@@ -0,0 +1,98 @@
+%D \module
+%D [ file=core-dat,
+%D version=20122.04.17, % replaces core-two from 1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Multipass Datasets,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Core Macros / Multipass Datasets}
+
+%D \starttyping
+%D \definedataset[test-1]
+%D \definedataset[test-2][delay=yes]
+%D
+%D \startlines
+%D set 1: \setdataset[test-1][whatever=this-or-that-1]
+%D set 2: \setdataset[test-2][whatever=this-or-that-2]
+%D set 3: \setdataset[test-2][whatever=this-or-that-3]
+%D \stoplines
+%D
+%D \startlines
+%D get 1: \datasetvariable{test-1}{1}{whatever} / \datasetvariable{test-1}{1}{realpage}
+%D get 2: \datasetvariable{test-2}{1}{whatever} / \datasetvariable{test-2}{1}{realpage}
+%D get 3: \datasetvariable{test-2}{2}{whatever} / \datasetvariable{test-2}{2}{realpage}
+%D \stoplines
+%D \stoptyping
+
+\unprotect
+
+\registerctxluafile{core-dat}{1.001}
+
+\installcorenamespace{dataset}
+
+\installcommandhandler \??dataset {dataset} \??dataset
+
+\unexpanded\def\setdataset
+ {\dotripleempty\syst_datasets_set}
+
+\def\syst_datasets_set
+ {\ifthirdargument
+ \expandafter\syst_datasets_set_named
+ \else
+ \expandafter\syst_datasets_set_indexed
+ \fi}
+
+\def\syst_datasets_set_named[#1][#2][#3]%
+ {\begingroup
+ \edef\currentdataset{#1}%
+ \ctxcommand{setdataset{
+ name = "\currentdataset",
+ tag = \!!bs#2\!!es,
+ delay = "\datasetparameter\c!delay",
+ data = \!!bs#3\!!es
+ }}%
+ \endgroup}
+
+\def\syst_datasets_set_indexed[#1][#2][#3]%
+ {\begingroup
+ \edef\currentdataset{#1}%
+ \ctxcommand{setdataset{
+ name = "\currentdataset",
+ delay = "\datasetparameter\c!delay",
+ data = \!!bs#2\!!es
+ }}%
+ \endgroup}
+
+\def\datasetvariable#1#2#3%
+ {\ctxcommand{datasetvariable("#1","#2","#3")}}
+
+\installcorenamespace{pagestate}
+
+\installcommandhandler \??pagestate {pagestate} \??pagestate
+
+\setuppagestate
+ [\c!delay=\v!yes]
+
+\unexpanded\def\setpagestate
+ {\dodoubleempty\syst_pagestates_set}
+
+\def\syst_pagestates_set[#1][#2]%
+ {\begingroup
+ \edef\currentpagestate{#1}%
+ \ctxcommand{setpagestate{
+ name = "\currentpagestate",
+ tag = \!!bs#2\!!es,
+ delay = "\pagestateparameter\c!delay",
+ }}%
+ \endgroup}
+
+\def\pagestaterealpage#1#2%
+ {\ctxcommand{pagestaterealpage("#1","#2")}}
+
+\protect
diff --git a/tex/context/base/core-uti.lua b/tex/context/base/core-uti.lua
index cfe95a6bb..1657a75e2 100644
--- a/tex/context/base/core-uti.lua
+++ b/tex/context/base/core-uti.lua
@@ -34,7 +34,7 @@ local report_jobcontrol = logs.reporter("jobcontrol")
job = job or { }
local job = job
-job.version = 1.18
+job.version = 1.19
-- some day we will implement loading of other jobs and then we need
-- job.jobs
diff --git a/tex/context/base/lpdf-ini.lua b/tex/context/base/lpdf-ini.lua
index 88999358c..8e54666be 100644
--- a/tex/context/base/lpdf-ini.lua
+++ b/tex/context/base/lpdf-ini.lua
@@ -806,3 +806,17 @@ if not pdfreferenceobject then
end
end
+
+-- -- Maybe this will be an option (suggested on the mailing list by Peter Rolf):
+--
+-- function backends.codeinjections.rgbtransparencygroup()
+-- local d = lpdf.dictionary {
+-- S = lpdf.constant("Transparency"),
+-- CS = lpdf.constant("DeviceRGB"),
+-- I = true
+-- }
+-- lpdf.registerpagefinalizer(function()
+-- lpdf.addtopageattributes("Group",d) end)
+-- end
+--
+-- backends.codeinjections.rgbtransparencygroup()
diff --git a/tex/context/base/m-steps.mkvi b/tex/context/base/m-steps.mkvi
index de861e619..a07ece3ae 100644
--- a/tex/context/base/m-steps.mkvi
+++ b/tex/context/base/m-steps.mkvi
@@ -17,11 +17,11 @@
\unprotect
-\definecorenamespace {stepcharts}
-\definecorenamespace {steptables}
-\definecorenamespace {stepcells}
-\definecorenamespace {steptexts}
-\definecorenamespace {steplines}
+\installcorenamespace {stepcharts}
+\installcorenamespace {steptables}
+\installcorenamespace {stepcells}
+\installcorenamespace {steptexts}
+\installcorenamespace {steplines}
\installsimplecommandhandler \??stepcharts {STEPchart} \??stepcharts
\installsimplecommandhandler \??steptables {STEPtable} \??steptables
diff --git a/tex/context/base/spac-pag.mkiv b/tex/context/base/spac-pag.mkiv
index e44411fba..10b5d1acd 100644
--- a/tex/context/base/spac-pag.mkiv
+++ b/tex/context/base/spac-pag.mkiv
@@ -18,6 +18,8 @@
%D The code here has evolved over time and might not be the best
%D around. Maybe much will be gone a some point.
+%D The pagestate code will be redone.
+
\installcorenamespace {alignswitch}
\letvalue{\??alignswitch\v!left }\zerocount
@@ -27,7 +29,6 @@
\def\setalignmentswitch#1%
{\chardef\alignmentswitch\csname\??alignswitch\ifcsname\??alignswitch#1\endcsname#1\else\v!left\fi\endcsname}
-\newcount \noftrackedpagestates
\newif \ifpagestatemismatch
\newcount \realpagestateno
\newconstant\frozenpagestate
@@ -37,14 +38,106 @@
\doforcedtrackpagestate{#1}{#2}%
\fi \fi}
+% \def\doforcedtrackpagestate#1#2%
+% {\ifcase\frozenpagestate
+% \global\advance#2\plusone
+% \lazysavetaggedtwopassdata{#1}{0}{\number#2}{\noexpand\realfolio}%
+% \fi}
+
\def\doforcedtrackpagestate#1#2%
{\ifcase\frozenpagestate
- \global\advance\noftrackedpagestates\plusone
\global\advance#2\plusone
- \lazysavetaggedtwopassdata{#1}{\number\noftrackedpagestates}{\number#2}{\noexpand\realfolio}%
- %\llap{\infofont\number\noftrackedpagestates/\number#2}% tracing
+ \setpagestate[#1][\number#2]%
\fi}
+% \def\doifrightpagestateelse#1#2% not expandable !
+% {\ifcase\frozenpagestate
+% \pagestatemismatchfalse
+% \realpagestateno\realfolio
+% \ifinpagebody
+% \ifdoublesided
+% \ifodd\realpageno\relax
+% \syst_twopass_set_found
+% \else
+% \syst_twopass_set_not_found
+% \fi
+% \else
+% \syst_twopass_set_found
+% \fi
+% \else\ifdoublesided
+% \findtwopassdata{#1}{\number#2}%
+% \ifconditional\twopassdatafound
+% \realpagestateno\twopassdata\relax
+% \ifnum\twopassdata=\realpageno \else
+% \pagestatemismatchtrue
+% \fi
+% \ifodd\twopassdata\relax
+% \syst_twopass_set_found
+% \else
+% \syst_twopass_set_not_found
+% \fi
+% \else
+% \ifodd\realpageno\relax
+% \syst_twopass_set_found
+% \else
+% \syst_twopass_set_not_found
+% \fi
+% \fi
+% \else
+% \syst_twopass_set_found
+% \fi\fi
+% \else
+% \ifodd\realpagestateno\relax
+% \syst_twopass_set_found
+% \else
+% \syst_twopass_set_not_found
+% \fi
+% \fi
+% \ifconditional\twopassdatafound
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+
+% \def\doifforcedrightpagestateelse#1#2%
+% {\ifcase\frozenpagestate
+% \pagestatemismatchfalse
+% \realpagestateno\realfolio
+% \findtwopassdata{#1}{\number#2}%
+% \ifconditional\twopassdatafound
+% \realpagestateno\twopassdata\relax
+% \ifnum\twopassdata=\realpageno \else
+% \pagestatemismatchtrue
+% \fi
+% \ifodd\twopassdata\relax
+% \syst_twopass_set_found
+% \else
+% \syst_twopass_set_not_found
+% \fi
+% \else
+% \ifodd\realpageno\relax
+% \syst_twopass_set_found
+% \else
+% \syst_twopass_set_not_found
+% \fi
+% \fi
+% \else
+% \ifodd\realpagestateno\relax
+% \syst_twopass_set_found
+% \else
+% \syst_twopass_set_not_found
+% \fi
+% \fi
+% \ifconditional\twopassdatafound
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+
+\let\m_spac_pagestates_realpage\empty
+
+\newconditional\c_spac_pagestates_found
+
\def\doifrightpagestateelse#1#2% not expandable !
{\ifcase\frozenpagestate
\pagestatemismatchfalse
@@ -52,43 +145,43 @@
\ifinpagebody
\ifdoublesided
\ifodd\realpageno\relax
- \syst_twopass_set_found
+ \settrue\c_spac_pagestates_found
\else
- \syst_twopass_set_not_found
+ \setfalse\c_spac_pagestates_found
\fi
\else
- \syst_twopass_set_found
+ \settrue\c_spac_pagestates_found
\fi
\else\ifdoublesided
- \findtwopassdata{#1}{\number#2}%
- \ifconditional\twopassdatafound
- \realpagestateno\twopassdata\relax
- \ifnum\twopassdata=\realpageno \else
- \pagestatemismatchtrue
- \fi
- \ifodd\twopassdata\relax
- \syst_twopass_set_found
+ \edef\m_spac_pagestates_realpage{\pagestaterealpage{#1}{\number#2}}%
+ \ifx\m_spac_pagestates_realpage\empty
+ \ifodd\realpageno\relax
+ \settrue\c_spac_pagestates_found
\else
- \syst_twopass_set_not_found
+ \setfalse\c_spac_pagestates_found
\fi
\else
- \ifodd\realpageno\relax
- \syst_twopass_set_found
+ \realpagestateno\m_spac_pagestates_realpage\relax
+ \ifnum\realpagestateno=\realpageno \else
+ \pagestatemismatchtrue
+ \fi
+ \ifodd\realpagestateno\relax
+ \settrue\c_spac_pagestates_found
\else
- \syst_twopass_set_not_found
+ \setfalse\c_spac_pagestates_found
\fi
\fi
\else
- \syst_twopass_set_found
+ \settrue\c_spac_pagestates_found
\fi\fi
\else
\ifodd\realpagestateno\relax
- \syst_twopass_set_found
+ \settrue\c_spac_pagestates_found
\else
- \syst_twopass_set_not_found
+ \setfalse\c_spac_pagestates_found
\fi
\fi
- \ifconditional\twopassdatafound
+ \ifconditional\c_spac_pagestates_found
\expandafter\firstoftwoarguments
\else
\expandafter\secondoftwoarguments
@@ -98,32 +191,32 @@
{\ifcase\frozenpagestate
\pagestatemismatchfalse
\realpagestateno\realfolio
- \findtwopassdata{#1}{\number#2}%
- \ifconditional\twopassdatafound
- \realpagestateno\twopassdata\relax
- \ifnum\twopassdata=\realpageno \else
- \pagestatemismatchtrue
- \fi
- \ifodd\twopassdata\relax
- \syst_twopass_set_found
+ \edef\m_spac_pagestates_realpage{\pagestaterealpage{#1}{\number#2}}%
+ \ifx\m_spac_pagestates_realpage\empty
+ \ifodd\realpageno\relax
+ \settrue\c_spac_pagestates_found
\else
- \syst_twopass_set_not_found
+ \setfalse\c_spac_pagestates_found
\fi
\else
- \ifodd\realpageno\relax
- \syst_twopass_set_found
+ \realpagestateno\m_spac_pagestates_realpage\relax
+ \ifnum\realpagestateno=\realpageno \else
+ \pagestatemismatchtrue
+ \fi
+ \ifodd\realpagestateno\relax
+ \settrue\c_spac_pagestates_found
\else
- \syst_twopass_set_not_found
+ \setfalse\c_spac_pagestates_found
\fi
\fi
\else
\ifodd\realpagestateno\relax
- \syst_twopass_set_found
+ \settrue\c_spac_pagestates_found
\else
- \syst_twopass_set_not_found
+ \setfalse\c_spac_pagestates_found
\fi
\fi
- \ifconditional\twopassdatafound
+ \ifconditional\c_spac_pagestates_found
\expandafter\firstoftwoarguments
\else
\expandafter\secondoftwoarguments
@@ -134,73 +227,49 @@
% we can make more of these on top, but how to deal with mixed frozen states
-\definetwopasslist\s!paragraph \newcount\nofraggedparagraphs
+% \dorecurse{500}{\dontleavehmode\signalrightpage\doifrightpageelse{right}{left}\par} % given doublesided
-\def\signalrightpage {\dotrackpagestate \s!paragraph\nofraggedparagraphs}
-\def\doifrightpageelse{\doifrightpagestateelse\s!paragraph\nofraggedparagraphs}
+% \definetwopasslist\s!paragraph
+
+\newcount\nofraggedparagraphs
-% no longer used
-%
-% \newcount\pagesignallevel
-%
-% \unexpanded\def\startsignalrightpage % one may do a \postsignalrightplace
-% {\advance\pagesignallevel\plusone
-% \presignalrightpage
-% \let\signalrightpage\relax
-% \let\presignalrightpage\relax
-% \let\startsignalrightpage\relax
-% \doifrightpageelse\donothing\donothing
-% \freezepagestate}
-%
-% \unexpanded\def\stopsignalrightpage
-% {\ifcase\pagesignallevel\or\postsignalrightpage\fi
-% \advance\pagesignallevel\minusone}
-%
-% \ifx\swapmargins\undefined \let\swapmargins\undefined \fi % todo
-%
-% \def\doifswappedrightpageelse#1#2% alleen in box construction !
-% {\doifrightpageelse
-% {#1}
-% {\scratchcounter\realpageno
-% \realpageno\realpagestateno\relax
-% \swapmargins
-% \realpageno\scratchcounter
-% #2}}
-%
-% \newbox\signaledrightpage % this way we can avoid interference, i.e. postpone placement
-%
-% \def\presignalrightpage {\global\setbox\signaledrightpage\hbox{\signalrightpage}}
-% \def\postsignalrightpage{\ifvoid\signaledrightpage\else\box\signaledrightpage\fi}
-%
-% % The next feature is is used in:
-% %
-% % \definenumber[test][way=bypage]
-% %
-% % \def\Test
-% % {\incrementnumber[test]\rawnumber[test]/%
-% % \incrementnumber[test]\rawnumber[test]/%
-% % \incrementnumber[test]\rawnumber[test]\space
-% % \checkpagechange{oeps}\changedpage{oeps}\space
-% % \ifpagechanged TRUE\else FALSE\fi}
-% %
-% % \Test\page \Test\par \Test\page \Test\par \Test\page \Test\page
+\definepagestate[\s!paragraph]
+
+\def\signalrightpage {\dotrackpagestate \s!paragraph\nofraggedparagraphs} % use \dontleavehmode if needed
+\def\doifrightpageelse{\doifrightpagestateelse\s!paragraph\nofraggedparagraphs}
\installcorenamespace{pagechanges}
\newif\ifpagechanged \let\lastchangedpage\empty
+% \def\spac_pagechanges_check#1#2#3%
+% {\pagechangedfalse
+% \doforcedtrackpagestate{#2}{#3}%
+% \findtwopassdata{#2}{\number#3}%
+% \ifconditional\twopassdatafound
+% \ifnum\twopassdata>0\getvalue{\??pagechanges#2:#1}\relax
+% \pagechangedtrue
+% \fi
+% \fi
+% \ifpagechanged
+% \letgvalue{\??pagechanges#2:#1}\twopassdata
+% \globallet\lastchangedpage\twopassdata
+% \else
+% \globallet\lastchangedpage\realfolio
+% \fi}
+
\def\spac_pagechanges_check#1#2#3%
{\pagechangedfalse
\doforcedtrackpagestate{#2}{#3}%
- \findtwopassdata{#2}{\number#3}%
- \ifconditional\twopassdatafound
- \ifnum\twopassdata>0\getvalue{\??pagechanges#2:#1}\relax
+ \edef\m_spac_pagestates_realpage{\pagestaterealpage{#2}{\number#3}}%
+ \ifx\m_spac_pagestates_realpage\empty \else
+ \ifnum\m_spac_pagestates_realpage>0\getvalue{\??pagechanges#2:#1}\relax
\pagechangedtrue
\fi
\fi
\ifpagechanged
- \letgvalue{\??pagechanges#2:#1}\twopassdata
- \globallet\lastchangedpage\twopassdata
+ \letgvalue{\??pagechanges#2:#1}\m_spac_pagestates_realpage
+ \globallet\lastchangedpage\m_spac_pagestates_realpage
\else
\globallet\lastchangedpage\realfolio
\fi}
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index ff117e85e..c022049d5 100644
--- a/tex/context/base/status-files.pdf
+++ b/tex/context/base/status-files.pdf
Binary files differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index e15816a17..850e11e23 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/status-mkiv.lua b/tex/context/base/status-mkiv.lua
index 86af98fbd..5c54b079f 100644
--- a/tex/context/base/status-mkiv.lua
+++ b/tex/context/base/status-mkiv.lua
@@ -385,6 +385,11 @@ return {
comment = "maybe rename to core-two",
},
{
+ filename = "core-dat",
+ marktype = "mkiv",
+ status = "okay",
+ },
+ {
filename = "colo-ini",
marktype = "mkiv",
status = "okay",
diff --git a/tex/context/base/strc-flt.mkvi b/tex/context/base/strc-flt.mkvi
index ba1f4e29c..05cfa40e3 100644
--- a/tex/context/base/strc-flt.mkvi
+++ b/tex/context/base/strc-flt.mkvi
@@ -355,26 +355,66 @@
\fi
\fi}
-% the tricky part of getting float related two pass data is
+% The tricky part of getting float related two pass data is
% that we should fetch is early but can only save it with
% the composed float box; this determines the order: get it
-% before saving it
+% before saving it.
-\definetwopasslist{\s!float\s!data} \newcounter\noffloatdata
+% We had this:
+%
+% \definetwopasslist{\s!float\s!data} \newcounter\noffloatdata
+%
+% \let\strc_float_realpage\realpageno % used for odd/even determination, can be combined with nodelocation
+%
+% \def\strc_float_save_data % \expanded ... will change in mkiv
+% {\doglobal\increment\noffloatdata
+% \lazysavetaggedtwopassdata{\s!float\s!data}{\noffloatdata}{\noffloatpages}{\noexpand\realfolio}}% later {}{}{}{} and \getfirst...
+%
+% \def\strc_float_load_data % precedes save !
+% {\doglobal\increment\noffloatpages
+% \findtwopassdata{\s!float\s!data}{\noffloatpages}%
+% \ifconditional\twopassdatafound
+% \globallet\strc_float_realpage\twopassdata
+% \else
+% \globallet\strc_float_realpage\realpageno % \realfolio
+% \fi}
+
+%D We can do this ...
+%D
+%D \starttyping
+%D \newcount\c_strc_floats_n
+%D
+%D \definedataset[\s!float][\c!delay=\v!yes]
+%D
+%D \let\strc_float_realpage\realpageno
+%D
+%D \def\strc_float_save_data
+%D {\setdataset[\s!float][\number\c_strc_floats_n][]}
+%D
+%D \def\strc_float_load_data % precedes save !
+%D {\global\advance\c_strc_floats_n\plusone
+%D \xdef\strc_float_realpage{\datasetvariable\s!float{\number\c_strc_floats_n}\s!page}%
+%D \ifx\strc_float_realpage\empty
+%D \globallet\strc_float_realpage\realpageno % \realfolio
+%D \fi}
+%D \stoptyping
+%D
+%D ... but this is more efficient:
-\let\twopassfloatdata\realpageno % used for odd/even determination, can be combined with nodelocation
+\definepagestate[\s!float][\c!delay=\v!yes]
-\def\dosavefloatdata % \expanded ... will change in mkiv
- {\doglobal\increment\noffloatdata
- \lazysavetaggedtwopassdata{\s!float\s!data}{\noffloatdata}{\noffloatpages}{\noexpand\realfolio}}% later {}{}{}{} and \getfirst...
+\newcount\c_strc_floats_n
-\def\dogetfloatdata % precedes save !
- {\doglobal\increment\noffloatpages
- \findtwopassdata{\s!float\s!data}{\noffloatpages}%
- \ifconditional\twopassdatafound
- \globallet\twopassfloatdata\twopassdata
- \else
- \globallet\twopassfloatdata\realpageno % \realfolio
+\let\strc_float_realpage\realpageno
+
+\def\strc_float_save_data
+ {\setpagestate[\s!float][\number\c_strc_floats_n]}
+
+\def\strc_float_load_data % precedes save !
+ {\global\advance\c_strc_floats_n\plusone
+ \xdef\strc_float_realpage{\pagestaterealpage\s!float{\number\c_strc_floats_n}}%
+ \ifx\strc_float_realpage\empty
+ \globallet\strc_float_realpage\realpageno % \realfolio
\fi}
%D test case:
@@ -807,7 +847,7 @@
\appendtoks
\everyinsidefloat\emptytoks % in case it's called earlier
- \dogetfloatdata
+ \strc_float_load_data
\to \everyinsidefloat
\def\doifrightpagefloatelse
@@ -822,7 +862,7 @@
\fi}
\def\doifoddfloatpageelse
- {\ifodd\purenumber\twopassfloatdata\space
+ {\ifodd\purenumber\strc_float_realpage\space
\expandafter\firstoftwoarguments
\else
\expandafter\secondoftwoarguments
@@ -1816,7 +1856,7 @@
\fi
\strc_floats_set_local_dimensions
\global\advance\totalnoffloats\plusone
- \setbox\floatbox\hbox{\dosavefloatdata\box\floatbox}% still needed? we will do renumbering differently
+ \setbox\floatbox\hbox{\strc_float_save_data\box\floatbox}% still needed? we will do renumbering differently
\global\floatheight\htdp\floatbox
\global\floatwidth\wd\floatbox
\doifnotinset\v!margin\floatlocation % gaat namelijk nog fout
diff --git a/tex/context/base/strc-not.mkvi b/tex/context/base/strc-not.mkvi
index f8f25900f..5f1f041e3 100644
--- a/tex/context/base/strc-not.mkvi
+++ b/tex/context/base/strc-not.mkvi
@@ -332,8 +332,9 @@
\c!rulethickness=\linewidth,
\c!frame=\v!off,
\c!distance=.125em, % in the text between symbols
+ % \c!textseparator={,}, % optional separator
\c!columndistance=1em,
-% \c!margindistance=.5em,
+ % \c!margindistance=.5em,
\c!align=, % also use instead of \c!tolerance
\c!split=\v!tolerant,
\c!width=\makeupwidth, % \ifdim\hsize<\makeupwidth\hsize\else\makeupwidth\fi
@@ -608,7 +609,8 @@
{\removeunwantedspaces
\doifitalicelse\/\donothing % Charles IV \footnote{the fourth}
\ifdim\lastkern=\notesignal
- \kern\noteparameter\c!distance % yes or no note font? or main text
+ % \kern\noteparameter\c!distance % yes or no note font? or main text
+ \strc_notes_inject_separator
\fi
\nobreak
\begingroup
@@ -632,12 +634,29 @@
{\removeunwantedspaces
\doifitalicelse\/\donothing % Charles IV \footnote{the fourth}
\ifdim\lastkern=\notesignal
- \kern\noteparameter\c!distance % yes or no note font? or main text
+ % \kern\noteparameter\c!distance % yes or no note font? or main text
+ \strc_notes_inject_separator
\fi
\nobreak
\hbox to .5em{}%
\globallet\lastnotesymbol\relax}
+\unexpanded\def\strc_notes_inject_separator % patch by WS due to request on list
+ {\edef\p_textseparator{\noteparameter\c!textseparator}%
+ \ifx\p_textseparator\empty
+ \kern\noteparameter\c!distance
+ \else
+ % skip or kern
+ \nobreak
+ \hbox\bgroup
+ \strc_notes_interaction_check_inline
+ \strc_notes_set_style_color_inline\c!textstyle\c!textcolor
+ \noteparameter\c!textcommand{\p_textseparator}%
+ \kern\noteparameter\c!distance
+ \egroup
+ \nobreak
+ \fi}
+
% this needs a further cleanup ... soon as it's a slow mechanism
%
% -- set breakpoint in descriptions
diff --git a/tex/context/base/trac-log.lua b/tex/context/base/trac-log.lua
index c1d890276..44de8ebe6 100644
--- a/tex/context/base/trac-log.lua
+++ b/tex/context/base/trac-log.lua
@@ -536,6 +536,13 @@ local function reportbanner(t)
end
end
+local function reportversion(t)
+ local banner = t.banner
+ if banner then
+ t.report(banner)
+ end
+end
+
local function reporthelp(t,...)
local helpinfo = t.helpinfo
if type(helpinfo) == "string" then
@@ -562,6 +569,7 @@ function logs.application(t)
t.report = logs.reporter(t.name)
t.help = function(...) reportbanner(t) ; reporthelp(t,...) ; reportinfo(t) end
t.identify = function() reportbanner(t) end
+ t.version = function() reportversion(t) end
return t
end
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index df477dd17..7808e2cea 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 : 04/14/12 00:10:51
+-- merge date : 04/17/12 22:37:22
do -- begin closure to overcome local limits and interference