summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/context/lua/mtxrun.lua53
-rw-r--r--scripts/context/stubs/mswin/mtxrun.lua53
-rwxr-xr-xscripts/context/stubs/unix/mtxrun53
-rw-r--r--tex/context/base/back-pdf.mkiv7
-rw-r--r--tex/context/base/char-map.lua2
-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.pdfbin4085 -> 4088 bytes
-rw-r--r--tex/context/base/context-version.pngbin106470 -> 106517 bytes
-rw-r--r--tex/context/base/context.mkii2
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/core-sys.lua6
-rw-r--r--tex/context/base/l-file.lua5
-rw-r--r--tex/context/base/lpdf-fmt.lua37
-rw-r--r--tex/context/base/m-spreadsheet.lua22
-rw-r--r--tex/context/base/m-spreadsheet.mkiv35
-rw-r--r--tex/context/base/status-files.pdfbin24430 -> 24422 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin190389 -> 190438 bytes
-rw-r--r--tex/context/base/typo-scr.mkiv6
-rw-r--r--tex/context/base/util-lua.lua48
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua7
21 files changed, 238 insertions, 104 deletions
diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua
index 3045b6866..f65c8c0ac 100644
--- a/scripts/context/lua/mtxrun.lua
+++ b/scripts/context/lua/mtxrun.lua
@@ -2962,6 +2962,11 @@ end
file.isreadable = file.is_readable -- depricated
file.iswritable = file.is_writable -- depricated
+function file.size(name)
+ local a = attributes(name)
+ return a and a.size or 0
+end
+
-- todo: lpeg \\ / .. does not save much
local checkedsplit = string.checkedsplit
@@ -4877,6 +4882,7 @@ utilities.report = logs and logs.reporter("system") or print
local tracestripping = false
local forcestupidcompile = true
luautilities.stripcode = true
+luautilities.alwaysstripcode = false -- saves 1 meg on 7 meg compressed format file (2012.08.12)
luautilities.nofstrippedchunks = 0
luautilities.nofstrippedbytes = 0
@@ -4962,7 +4968,7 @@ end
-- ... end of borrowed code.
local function strippedbytecode(code,forcestrip,name)
- if forcestrip and luautilities.stripcode then
+ if (forcestrip and luautilities.stripcode) or luautilities.alwaysstripcode then
return strip_code_pc(code,name)
else
return code, 0
@@ -4972,8 +4978,16 @@ end
luautilities.stripbytecode = strip_code_pc
luautilities.strippedbytecode = strippedbytecode
+local function fatalerror(name)
+ utilities.report(format("fatal error in %q",name or "unknown"))
+end
+
+-- quite subtle ... doing this wrong incidentally can give more bytes
+
+
function luautilities.loadedluacode(fullname,forcestrip,name)
-- quite subtle ... doing this wrong incidentally can give more bytes
+ name = name or fullname
local code = loadfile(fullname)
if code then
code()
@@ -4983,34 +4997,45 @@ function luautilities.loadedluacode(fullname,forcestrip,name)
forcestrip = forcestrip(fullname)
end
if forcestrip then
- local code, n = strip_code_pc(dump(code,name or fullname))
+ local code, n = strip_code_pc(dump(code,name))
return loadstring(code), n
+ elseif luautilities.alwaysstripcode then
+ return loadstring(strip_code_pc(dump(code),name))
else
return code, 0
end
+ elseif luautilities.alwaysstripcode then
+ return loadstring(strip_code_pc(dump(code),name))
else
return code, 0
end
end
-function luautilities.strippedloadstring(str,forcestrip,name) -- better inline
- if forcestrip and luautilities.stripcode then
- local code, n = strip_code_pc(dump(loadstring(str)),name)
- return loadstring(code), n
- else
- return loadstring(str)
+function luautilities.strippedloadstring(code,forcestrip,name) -- not executed
+ local n = 0
+ if (forcestrip and luautilities.stripcode) or luautilities.alwaysstripcode then
+ code = loadstring(code)
+ if not code then
+ fatalerror(name)
+ end
+ code, n = strip_code_pc(dump(code),name)
end
+ return loadstring(code), n
end
local function stupidcompile(luafile,lucfile,strip)
- local data = io.loaddata(luafile)
- if data and data ~= "" then
- data = dump(loadstring(data))
+ local code = io.loaddata(luafile)
+ if code and code ~= "" then
+ code = loadstring(code)
+ if not code then
+ fatalerror()
+ end
+ code = dump(code)
if strip then
- data = strippedbytecode(data,true,luafile) -- last one is reported
+ code = strippedbytecode(code,true,luafile) -- last one is reported
end
- if data and data ~= "" then
- io.savedata(lucfile,data)
+ if code and code ~= "" then
+ io.savedata(lucfile,code)
end
end
end
diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua
index 3045b6866..f65c8c0ac 100644
--- a/scripts/context/stubs/mswin/mtxrun.lua
+++ b/scripts/context/stubs/mswin/mtxrun.lua
@@ -2962,6 +2962,11 @@ end
file.isreadable = file.is_readable -- depricated
file.iswritable = file.is_writable -- depricated
+function file.size(name)
+ local a = attributes(name)
+ return a and a.size or 0
+end
+
-- todo: lpeg \\ / .. does not save much
local checkedsplit = string.checkedsplit
@@ -4877,6 +4882,7 @@ utilities.report = logs and logs.reporter("system") or print
local tracestripping = false
local forcestupidcompile = true
luautilities.stripcode = true
+luautilities.alwaysstripcode = false -- saves 1 meg on 7 meg compressed format file (2012.08.12)
luautilities.nofstrippedchunks = 0
luautilities.nofstrippedbytes = 0
@@ -4962,7 +4968,7 @@ end
-- ... end of borrowed code.
local function strippedbytecode(code,forcestrip,name)
- if forcestrip and luautilities.stripcode then
+ if (forcestrip and luautilities.stripcode) or luautilities.alwaysstripcode then
return strip_code_pc(code,name)
else
return code, 0
@@ -4972,8 +4978,16 @@ end
luautilities.stripbytecode = strip_code_pc
luautilities.strippedbytecode = strippedbytecode
+local function fatalerror(name)
+ utilities.report(format("fatal error in %q",name or "unknown"))
+end
+
+-- quite subtle ... doing this wrong incidentally can give more bytes
+
+
function luautilities.loadedluacode(fullname,forcestrip,name)
-- quite subtle ... doing this wrong incidentally can give more bytes
+ name = name or fullname
local code = loadfile(fullname)
if code then
code()
@@ -4983,34 +4997,45 @@ function luautilities.loadedluacode(fullname,forcestrip,name)
forcestrip = forcestrip(fullname)
end
if forcestrip then
- local code, n = strip_code_pc(dump(code,name or fullname))
+ local code, n = strip_code_pc(dump(code,name))
return loadstring(code), n
+ elseif luautilities.alwaysstripcode then
+ return loadstring(strip_code_pc(dump(code),name))
else
return code, 0
end
+ elseif luautilities.alwaysstripcode then
+ return loadstring(strip_code_pc(dump(code),name))
else
return code, 0
end
end
-function luautilities.strippedloadstring(str,forcestrip,name) -- better inline
- if forcestrip and luautilities.stripcode then
- local code, n = strip_code_pc(dump(loadstring(str)),name)
- return loadstring(code), n
- else
- return loadstring(str)
+function luautilities.strippedloadstring(code,forcestrip,name) -- not executed
+ local n = 0
+ if (forcestrip and luautilities.stripcode) or luautilities.alwaysstripcode then
+ code = loadstring(code)
+ if not code then
+ fatalerror(name)
+ end
+ code, n = strip_code_pc(dump(code),name)
end
+ return loadstring(code), n
end
local function stupidcompile(luafile,lucfile,strip)
- local data = io.loaddata(luafile)
- if data and data ~= "" then
- data = dump(loadstring(data))
+ local code = io.loaddata(luafile)
+ if code and code ~= "" then
+ code = loadstring(code)
+ if not code then
+ fatalerror()
+ end
+ code = dump(code)
if strip then
- data = strippedbytecode(data,true,luafile) -- last one is reported
+ code = strippedbytecode(code,true,luafile) -- last one is reported
end
- if data and data ~= "" then
- io.savedata(lucfile,data)
+ if code and code ~= "" then
+ io.savedata(lucfile,code)
end
end
end
diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun
index 3045b6866..f65c8c0ac 100755
--- a/scripts/context/stubs/unix/mtxrun
+++ b/scripts/context/stubs/unix/mtxrun
@@ -2962,6 +2962,11 @@ end
file.isreadable = file.is_readable -- depricated
file.iswritable = file.is_writable -- depricated
+function file.size(name)
+ local a = attributes(name)
+ return a and a.size or 0
+end
+
-- todo: lpeg \\ / .. does not save much
local checkedsplit = string.checkedsplit
@@ -4877,6 +4882,7 @@ utilities.report = logs and logs.reporter("system") or print
local tracestripping = false
local forcestupidcompile = true
luautilities.stripcode = true
+luautilities.alwaysstripcode = false -- saves 1 meg on 7 meg compressed format file (2012.08.12)
luautilities.nofstrippedchunks = 0
luautilities.nofstrippedbytes = 0
@@ -4962,7 +4968,7 @@ end
-- ... end of borrowed code.
local function strippedbytecode(code,forcestrip,name)
- if forcestrip and luautilities.stripcode then
+ if (forcestrip and luautilities.stripcode) or luautilities.alwaysstripcode then
return strip_code_pc(code,name)
else
return code, 0
@@ -4972,8 +4978,16 @@ end
luautilities.stripbytecode = strip_code_pc
luautilities.strippedbytecode = strippedbytecode
+local function fatalerror(name)
+ utilities.report(format("fatal error in %q",name or "unknown"))
+end
+
+-- quite subtle ... doing this wrong incidentally can give more bytes
+
+
function luautilities.loadedluacode(fullname,forcestrip,name)
-- quite subtle ... doing this wrong incidentally can give more bytes
+ name = name or fullname
local code = loadfile(fullname)
if code then
code()
@@ -4983,34 +4997,45 @@ function luautilities.loadedluacode(fullname,forcestrip,name)
forcestrip = forcestrip(fullname)
end
if forcestrip then
- local code, n = strip_code_pc(dump(code,name or fullname))
+ local code, n = strip_code_pc(dump(code,name))
return loadstring(code), n
+ elseif luautilities.alwaysstripcode then
+ return loadstring(strip_code_pc(dump(code),name))
else
return code, 0
end
+ elseif luautilities.alwaysstripcode then
+ return loadstring(strip_code_pc(dump(code),name))
else
return code, 0
end
end
-function luautilities.strippedloadstring(str,forcestrip,name) -- better inline
- if forcestrip and luautilities.stripcode then
- local code, n = strip_code_pc(dump(loadstring(str)),name)
- return loadstring(code), n
- else
- return loadstring(str)
+function luautilities.strippedloadstring(code,forcestrip,name) -- not executed
+ local n = 0
+ if (forcestrip and luautilities.stripcode) or luautilities.alwaysstripcode then
+ code = loadstring(code)
+ if not code then
+ fatalerror(name)
+ end
+ code, n = strip_code_pc(dump(code),name)
end
+ return loadstring(code), n
end
local function stupidcompile(luafile,lucfile,strip)
- local data = io.loaddata(luafile)
- if data and data ~= "" then
- data = dump(loadstring(data))
+ local code = io.loaddata(luafile)
+ if code and code ~= "" then
+ code = loadstring(code)
+ if not code then
+ fatalerror()
+ end
+ code = dump(code)
if strip then
- data = strippedbytecode(data,true,luafile) -- last one is reported
+ code = strippedbytecode(code,true,luafile) -- last one is reported
end
- if data and data ~= "" then
- io.savedata(lucfile,data)
+ if code and code ~= "" then
+ io.savedata(lucfile,code)
end
end
end
diff --git a/tex/context/base/back-pdf.mkiv b/tex/context/base/back-pdf.mkiv
index 5b5781531..f537b3936 100644
--- a/tex/context/base/back-pdf.mkiv
+++ b/tex/context/base/back-pdf.mkiv
@@ -68,16 +68,17 @@
{\ctxcommand{setxmpfile("\backendparameter{xmpfile}")}}%
\to \everysetupbackend
+% \doifsomething{\backendparameter\c!format} .. at the lua end
+
\appendtoks
- \doifsomething{\backendparameter\c!format}
- {\ctxcommand{setformat {
+ \ctxcommand{setformat {
format = "\backendparameter\c!format",
level = "\backendparameter\c!level",
option = "\backendparameter\c!option",
profile = "\backendparameter\c!profile",
intent = "\backendparameter\c!intent",
file = "\backendparameter\c!file",
- }}}%
+ }}%
\to \everysetupbackend
%D For the moment we keep these.
diff --git a/tex/context/base/char-map.lua b/tex/context/base/char-map.lua
index 93a307a97..749da5289 100644
--- a/tex/context/base/char-map.lua
+++ b/tex/context/base/char-map.lua
@@ -3,7 +3,7 @@ if not modules then modules = { } end modules ['char-map'] = {
comment = "companion to char-ini.mkiv",
author = "Hans Hagen & Arthur Reutenauer",
copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
+ license = "see context related readme files",
dataonly = true,
}
diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii
index cf0b9bc4f..90476aa22 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.08.10 19:40}
+\newcontextversion{2012.08.11 11:43}
%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 c1eb31960..91f64ab11 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.08.10 19:40}
+\newcontextversion{2012.08.11 11:43}
%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 c2b73175e..0622580ce 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 738fa1b3f..c28523396 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 b173fe811..12f009b90 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.08.10 19:40}
+\edef\contextversion{2012.08.11 11:43}
%D For those who want to use this:
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 6ee088294..6f5adf2f7 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -25,7 +25,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2012.08.10 19:40}
+\edef\contextversion{2012.08.11 11:43}
%D For those who want to use this:
diff --git a/tex/context/base/core-sys.lua b/tex/context/base/core-sys.lua
index 703bcac0f..ddcb6e938 100644
--- a/tex/context/base/core-sys.lua
+++ b/tex/context/base/core-sys.lua
@@ -22,5 +22,9 @@ end
statistics.register("result saved in file", function()
-- suffix will be fetched from backend
- return format( "%s.%s", environment.outputfilename, (tex.pdfoutput>0 and "pdf") or "dvi")
+ if tex.pdfoutput > 0 then
+ return format( "%s.%s, compresslevel %s, objectcompreslevel %s", environment.outputfilename, "pdf", tex.pdfcompresslevel, tex.pdfobjcompresslevel)
+ else
+ return format( "%s.%s", environment.outputfilename, "dvi") -- hard to imagine
+ end
end)
diff --git a/tex/context/base/l-file.lua b/tex/context/base/l-file.lua
index d7b5b7623..bea4ef0aa 100644
--- a/tex/context/base/l-file.lua
+++ b/tex/context/base/l-file.lua
@@ -198,6 +198,11 @@ end
file.isreadable = file.is_readable -- depricated
file.iswritable = file.is_writable -- depricated
+function file.size(name)
+ local a = attributes(name)
+ return a and a.size or 0
+end
+
-- todo: lpeg \\ / .. does not save much
local checkedsplit = string.checkedsplit
diff --git a/tex/context/base/lpdf-fmt.lua b/tex/context/base/lpdf-fmt.lua
index 3ae41b4f6..626e66d3c 100644
--- a/tex/context/base/lpdf-fmt.lua
+++ b/tex/context/base/lpdf-fmt.lua
@@ -36,6 +36,8 @@ local pdfstring = lpdf.string
local pdfverbose = lpdf.verbose
local pdfflushstreamfileobject = lpdf.flushstreamfileobject
+local texset = tex.set -- we could make tex.setglobal
+
local addtoinfo = lpdf.addtoinfo
local injectxmpinfo = lpdf.injectxmpinfo
local insertxmpinfo = lpdf.insertxmpinfo
@@ -625,15 +627,16 @@ end
lpdf.registerdocumentfinalizer(flushoutputintents,2,"output intents")
function codeinjections.setformat(s)
- local format, level, profile, intent, option, filename =
- s.format or "", s.level or "", s.profile or "", s.intent or "", s.option or "", s.file or ""
- if format == "" then
- -- we ignore this as we hook it in \everysetupbackend
- else
+ local format = s.format or ""
+ local level = tonumber(s.level)
+ local profile = s.profile or ""
+ local option = s.option or ""
+ local filename = s.file or ""
+ if format ~= "" then
local spec = formats[lower(format)]
if spec then
- formatspecification, formatname = spec, spec.format_name
- level = level and tonumber(level)
+ formatspecification = spec
+ formatname = spec.format_name
report_backend("setting format to '%s'",formatname)
local xmp_file = formatspecification.xmp_file or ""
if xmp_file == "" then
@@ -641,13 +644,20 @@ function codeinjections.setformat(s)
else
codeinjections.setxmpfile(xmp_file)
end
- local pdf_version, inject_metadata = spec.pdf_version * 10, spec.inject_metadata
- local majorversion, minorversion = math.div(pdf_version,10), math.mod(pdf_version,10)
+ if not level then
+ level = 3 -- good compromise, default anyway
+ end
+ local pdf_version = spec.pdf_version * 10
+ local inject_metadata = spec.inject_metadata
+ local majorversion = math.div(pdf_version,10)
+ local minorversion = math.mod(pdf_version,10)
local objectcompression = spec.object_compression and pdf_version >= 15
local compresslevel = level or tex.pdfcompresslevel -- keep default
local objectcompresslevel = (objectcompression and (level or tex.pdfobjcompresslevel)) or 0
- tex.pdfcompresslevel, tex.pdfobjcompresslevel = compresslevel, objectcompresslevel
- tex.pdfmajorversion, tex.pdfminorversion = majorversion, minorversion
+ texset("global","pdfcompresslevel",compresslevel)
+ texset("global","pdfobjcompresslevel",objectcompresslevel)
+ texset("global","pdfmajorversion",majorversion)
+ texset("global","pdfminorversion",minorversion)
if objectcompression then
report_backend("forcing pdf version %s.%s, compression level %s, object compression level %s",
majorversion,minorversion,compresslevel,objectcompresslevel)
@@ -704,6 +714,11 @@ function codeinjections.setformat(s)
else
report_backend("error, format '%s' is not supported",format)
end
+ elseif level then
+ texset("global","pdfcompresslevel",level)
+ texset("global","pdfobjcompresslevel",level)
+ else
+ -- we ignore this as we hook it in \everysetupbackend
end
end
diff --git a/tex/context/base/m-spreadsheet.lua b/tex/context/base/m-spreadsheet.lua
index 049154f27..4986079d5 100644
--- a/tex/context/base/m-spreadsheet.lua
+++ b/tex/context/base/m-spreadsheet.lua
@@ -151,11 +151,21 @@ local template = [[
-- to be considered: a weak cache
+local function propername(name)
+ if name ~= "" then
+ return name
+ elseif current ~= "" then
+ return current
+ else
+ return defaultname
+ end
+end
+
local function execute(name,r,c,str)
-- if name == "" then name = current if name == "" then name = defaultname end end
str = lpegmatch(pattern,str,1,name)
str = format(template,name,str)
- local result = loadstring(str)
+ local result = loadstring(str) -- utilities.lua.strippedloadstring(str,true) -- when tracing
result = result and result() or 0
data[name].data[c][r] = result
if type(result) == "function" then
@@ -166,12 +176,12 @@ local function execute(name,r,c,str)
end
function spreadsheets.set(name,r,c,str)
- if name == "" then name = current if name == "" then name = defaultname end end
+ name = propername(name)
execute(name,r,c,str)
end
function spreadsheets.get(name,r,c,str)
- if name == "" then name = current if name == "" then name = defaultname end end
+ name = propername(name)
local dname = data[name]
if not str or str == "" then
context(dname.data[c][r] or 0)
@@ -198,12 +208,12 @@ function spreadsheets.get(name,r,c,str)
end
function spreadsheets.doifelsecell(name,r,c)
- if name == "" then name = current if name == "" then name = defaultname end end
+ name = propername(name)
local d = data[name]
commands.doifelse(d and d.data[c][r])
end
function spreadsheets.show(name)
- if name == "" then name = current if name == "" then name = defaultname end end
- table.print(data[name].data,name)
+ name = propername(name)
+ inspect(data[name].data,name)
end
diff --git a/tex/context/base/m-spreadsheet.mkiv b/tex/context/base/m-spreadsheet.mkiv
index e065ac7e8..9da9ba9b1 100644
--- a/tex/context/base/m-spreadsheet.mkiv
+++ b/tex/context/base/m-spreadsheet.mkiv
@@ -37,15 +37,15 @@
\c!split=\v!no]
\unexpanded\def\resetspreadsheet
- {\dosingleempty\doresetspreadsheet}
+ {\dosingleempty\module_spreadsheet_reset}
-\unexpanded\def\doresetspreadsheet[#1]%
+\unexpanded\def\module_spreadsheet_reset[#1]%
{\ctxlua{moduledata.spreadsheets.reset("#1")}}
\unexpanded\def\startspreadsheet
- {\dosingleempty\dostartspreadsheet}
+ {\dosingleempty\module_spreadsheet_start}
-\unexpanded\def\dostartspreadsheet[#1]%
+\unexpanded\def\module_spreadsheet_start[#1]%
{\pushmacro\currentspreadsheet
\edef\currentspreadsheet{#1}%
\checkspreadsheetparent
@@ -62,27 +62,27 @@
\popmacro\currentspreadsheet}
\unexpanded\def\showspreadsheet
- {\dosingleempty\doshowspreadsheet}
+ {\dosingleempty\module_spreadsheet_show}
-\unexpanded\def\doshowspreadsheet[#1]%
+\unexpanded\def\module_spreadsheet_show[#1]%
{\ctxlua{moduledata.spreadsheets.show("#1")}}
-\unexpanded\def\getspreadsheet
- {\dosingleempty\dogetspreadsheet}
+\unexpanded\def\setspreadsheet
+ {\dosingleempty\module_spreadsheet_set}
-\unexpanded\def\dosetspreadsheet[#1]#2#3#4%
+\unexpanded\def\module_spreadsheet_set[#1]#2#3#4%
{\ctxlua{moduledata.spreadsheets.set("#1",\number#2,\number#3,"#4")}}
-\unexpanded\def\setspreadsheet
- {\dosingleempty\dosetspreadsheet}
+\unexpanded\def\getspreadsheet
+ {\dosingleempty\module_spreadsheet_get}
-\unexpanded\def\dogetspreadsheet[#1]#2#3#4%
+\unexpanded\def\module_spreadsheet_get[#1]#2#3#4%
{\ctxlua{moduledata.spreadsheets.get("#1",\number#2,\number#3,"#4")}}
\unexpanded\def\doifelsespreadsheetcell
- {\dosingleempty\dodoifelsespreadsheetcell}
+ {\dosingleempty\module_spreadsheet_doifelse_cell}
-\unexpanded\def\dodoifelsespreadsheetcell[#1]#2#3%
+\unexpanded\def\module_spreadsheet_doifelse_cell[#1]#2#3%
{\ctxlua{moduledata.spreadsheets.doifelsecell("#1","#2","#3")}}
\ifdefined\tblrow
@@ -97,7 +97,6 @@
\fi
-
\appendtoks
\resetspreadsheet
\let\setspr\TABLEsetspreadsheet
@@ -105,11 +104,11 @@
\to \everyTABLEpass
\unexpanded\def\startspreadsheettable % quick and dirty
- {\dosingleempty\dostartspreadsheettable}
+ {\dosingleempty\module_spreadsheet_start_table}
-\unexpanded\def\dostartspreadsheettable[#1]%
+\unexpanded\def\module_spreadsheet_start_table[#1]%
{\bgroup
- \dostartspreadsheet[#1]%%
+ \module_spreadsheet_start[#1]%%
\unexpanded\def\startrow{\bTR}%
\unexpanded\def\stoprow {\eTR}%
\unexpanded\def\startcell##1\stopcell{\bTD\getspr{##1}\eTD}%
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 16ade95a6..3ef6fd827 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 17bbb0a67..7ff12a5ba 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/typo-scr.mkiv b/tex/context/base/typo-scr.mkiv
index 1a6a80d06..7ec6e6f59 100644
--- a/tex/context/base/typo-scr.mkiv
+++ b/tex/context/base/typo-scr.mkiv
@@ -140,7 +140,7 @@
\edef\currentlowhigh{#1}%
\dosingleempty} % #2
-\unexpanded\def\typo_scripts_lowhigh_indeed[#1]#2#3%
+\unexpanded\def\typo_scripts_lowhigh_indeed[#1]#2#3% todo: align .. [#1] is compatible hack
{\dostarttagged\t!subsup\currentlowhigh
\setbox\plusfour\hbox{\typo_scripts_lowhigh_low_high\lower\c!down\t!sub{#2}}%
\setbox\plussix \hbox{\typo_scripts_lowhigh_low_high\raise\c!up \t!sup{#3}}%
@@ -233,8 +233,8 @@
\dostarttagged\t!subsup\currentlowmidhigh
\uselowmidhighstyleandcolor\c!style\c!color
\setstrut
- \setbox\plustwo \hbox{\strut\dostarttagged\t!sub\empty#2\dostoptagged}%
- \setbox\plusfour\hbox{\strut\dostarttagged\t!mid\empty#3\dostoptagged}% inefficient
+ \setbox\plustwo \hbox{\strut\dostarttagged\t!sub\empty#3\dostoptagged}%
+ \setbox\plusfour\hbox{\strut\dostarttagged\t!mid\empty#2\dostoptagged}% inefficient
\setbox\plussix \hbox{\strut\dostarttagged\t!sup\empty#4\dostoptagged}%
\scratchdimen \wd
\ifdim\wd\plustwo>\wd\plusfour
diff --git a/tex/context/base/util-lua.lua b/tex/context/base/util-lua.lua
index 879ce7f79..9e5328044 100644
--- a/tex/context/base/util-lua.lua
+++ b/tex/context/base/util-lua.lua
@@ -19,6 +19,7 @@ utilities.report = logs and logs.reporter("system") or print
local tracestripping = false
local forcestupidcompile = true
luautilities.stripcode = true
+luautilities.alwaysstripcode = false -- saves 1 meg on 7 meg compressed format file (2012.08.12)
luautilities.nofstrippedchunks = 0
luautilities.nofstrippedbytes = 0
@@ -104,7 +105,7 @@ end
-- ... end of borrowed code.
local function strippedbytecode(code,forcestrip,name)
- if forcestrip and luautilities.stripcode then
+ if (forcestrip and luautilities.stripcode) or luautilities.alwaysstripcode then
return strip_code_pc(code,name)
else
return code, 0
@@ -114,8 +115,16 @@ end
luautilities.stripbytecode = strip_code_pc
luautilities.strippedbytecode = strippedbytecode
+local function fatalerror(name)
+ utilities.report(format("fatal error in %q",name or "unknown"))
+end
+
+-- quite subtle ... doing this wrong incidentally can give more bytes
+
+
function luautilities.loadedluacode(fullname,forcestrip,name)
-- quite subtle ... doing this wrong incidentally can give more bytes
+ name = name or fullname
local code = loadfile(fullname)
if code then
code()
@@ -125,34 +134,45 @@ function luautilities.loadedluacode(fullname,forcestrip,name)
forcestrip = forcestrip(fullname)
end
if forcestrip then
- local code, n = strip_code_pc(dump(code,name or fullname))
+ local code, n = strip_code_pc(dump(code,name))
return loadstring(code), n
+ elseif luautilities.alwaysstripcode then
+ return loadstring(strip_code_pc(dump(code),name))
else
return code, 0
end
+ elseif luautilities.alwaysstripcode then
+ return loadstring(strip_code_pc(dump(code),name))
else
return code, 0
end
end
-function luautilities.strippedloadstring(str,forcestrip,name) -- better inline
- if forcestrip and luautilities.stripcode then
- local code, n = strip_code_pc(dump(loadstring(str)),name)
- return loadstring(code), n
- else
- return loadstring(str)
+function luautilities.strippedloadstring(code,forcestrip,name) -- not executed
+ local n = 0
+ if (forcestrip and luautilities.stripcode) or luautilities.alwaysstripcode then
+ code = loadstring(code)
+ if not code then
+ fatalerror(name)
+ end
+ code, n = strip_code_pc(dump(code),name)
end
+ return loadstring(code), n
end
local function stupidcompile(luafile,lucfile,strip)
- local data = io.loaddata(luafile)
- if data and data ~= "" then
- data = dump(loadstring(data))
+ local code = io.loaddata(luafile)
+ if code and code ~= "" then
+ code = loadstring(code)
+ if not code then
+ fatalerror()
+ end
+ code = dump(code)
if strip then
- data = strippedbytecode(data,true,luafile) -- last one is reported
+ code = strippedbytecode(code,true,luafile) -- last one is reported
end
- if data and data ~= "" then
- io.savedata(lucfile,data)
+ if code and code ~= "" then
+ io.savedata(lucfile,code)
end
end
end
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index fb1bba060..81280b892 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : luatex-fonts-merged.lua
-- parent file : luatex-fonts.lua
--- merge date : 08/10/12 19:40:14
+-- merge date : 08/11/12 11:43:49
do -- begin closure to overcome local limits and interference
@@ -2198,6 +2198,11 @@ end
file.isreadable = file.is_readable -- depricated
file.iswritable = file.is_writable -- depricated
+function file.size(name)
+ local a = attributes(name)
+ return a and a.size or 0
+end
+
-- todo: lpeg \\ / .. does not save much
local checkedsplit = string.checkedsplit