diff options
Diffstat (limited to 'tex/context/base/mkiv/luat-cod.lua')
-rw-r--r-- | tex/context/base/mkiv/luat-cod.lua | 64 |
1 files changed, 57 insertions, 7 deletions
diff --git a/tex/context/base/mkiv/luat-cod.lua b/tex/context/base/mkiv/luat-cod.lua index 91bb7c2e1..dcb16c0dd 100644 --- a/tex/context/base/mkiv/luat-cod.lua +++ b/tex/context/base/mkiv/luat-cod.lua @@ -11,6 +11,10 @@ local match, gsub, find, format, gmatch = string.match, string.gsub, string.find local texconfig, lua = texconfig, lua +-- maybe pick up from commandline: +-- +-- texconfig.interaction: 0=batchmode 1=nonstopmode 2=scrollmode 3=errornonstopmode 4=normal + -- some basic housekeeping texconfig.kpse_init = false @@ -38,7 +42,7 @@ lua.bytedata = bytedata lua.bytedone = bytedone local setbytecode = lua.setbytecode -local getbytecode = lua.getbytecode +----- getbytecode = lua.getbytecode lua.firstbytecode = 501 lua.lastbytecode = lua.lastbytecode or (lua.firstbytecode - 1) -- as we load ourselves again ... maybe return earlier @@ -49,9 +53,13 @@ end -- no file.* and utilities.parsers.* functions yet +local strip = false if arg then for i=-1,#arg do if arg[i] == "--c:strip" then strip = true break end end end + function lua.registercode(filename,options) local barename = gsub(filename,"%.[%a%d]+$","") - if barename == filename then filename = filename .. ".lua" end + if barename == filename then + filename = filename .. ".lua" + end local basename = match(barename,"^.+[/\\](.-)$") or barename if not bytedone[basename] then local opts = { } @@ -66,7 +74,11 @@ function lua.registercode(filename,options) if environment.initex then local n = lua.lastbytecode + 1 bytedata[n] = { name = barename, options = opts } - setbytecode(n,code) + if strip or opts.strip then + setbytecode(n,code,true) + else + setbytecode(n,code) + end lua.lastbytecode = n end elseif environment.initex then @@ -129,6 +141,18 @@ if LUATEXVERION == nil then + (tonumber(LUATEXVERSION) or (string.byte(LUATEXVERSION)-string.byte("a")+10))/1000 end +if CONTEXTLMTXMODE == nil then + if status.obj_ptr == nil then + CONTEXTLMTXMODE = 2 + else + CONTEXTLMTXMODE = 0 + for i=1,#arg do if arg[i] == "--c:lmtx" then + CONTEXTLMTXMODE, pdf, img = 1, nil, nil + break + end end + end +end + if LUATEXFUNCTIONALITY == nil then LUATEXFUNCTIONALITY = status.development_id or 6346 end @@ -143,7 +167,7 @@ end environment.luatexengine = LUATEXENGINE environment.luatexversion = LUATEXVERSION -environment.luatexfuncitonality = LUATEXFUNCTIONALITY +environment.luatexfunctionality = LUATEXFUNCTIONALITY environment.jitsupported = JITSUPPORTED environment.initex = INITEXMODE environment.initexmode = INITEXMODE @@ -151,12 +175,14 @@ environment.initexmode = INITEXMODE if not environment.luafilechunk then function environment.luafilechunk(filename) + local fullname = filename if sourcepath ~= "" then - filename = sourcepath .. "/" .. filename + fullname = sourcepath .. "/" .. filename end - local data = loadfile(filename) - texio.write("term and log","<",data and "+ " or "- ",filename,">") + local data = loadfile(fullname) + texio.write("term and log","<",data and "+ " or "- ",fullname,">") if data then +-- package.loaded[gsub(filename,"%..-$"] = data() end return data @@ -187,6 +213,21 @@ end -- a kpse error when disabled. This is an engine issue that will -- be sorted out in due time. +if not lfs.isfile then + + local attributes = lfs.attributes + + function lfs.isdir(name) + return attributes(name,"mode") == "directory" + end + + function lfs.isfile(name) + local a = attributes(name,"mode") + return a == "file" or a == "link" or nil + end + +end + local isfile = lfs.isfile local function source_file(name) @@ -229,6 +270,15 @@ local function open_read_file(name) } end +local function find_data_file(name) + return source_file(name) +end + +local open_data_file = open_read_file + callback.register('find_read_file' , find_read_file ) callback.register('open_read_file' , open_read_file ) callback.register('find_write_file', find_write_file) + +callback.register('find_data_file' , find_data_file ) +callback.register('open_data_file' , open_data_file ) |