#!/usr/bin/env texlua -- Use an invalid directory name in order not to allow kpse to search -- in the current directory. os.setenv("TEXMFDOTDIR", package.config:find("^\\") and "NUL" or "/dev/null") kpse.set_program_name("luatex") local zip = require "zip" local archive = kpse.find_file("digestif.zip", "texmfscripts") or error("Can't find 'digestif.zip' archive") local function digestif_searcher(modname) local submod = modname:match("^digestif%.(.+)") if not submod then return end local zipfile = zip.open(archive) local luafile = zipfile and zipfile:open(submod .. ".lua") if not luafile then return "\n\t[digestif] no file '"..submod..".lua' in '"..archive.."'" end local chunk = luafile:read("*a") luafile:close(); zipfile:close() return load(chunk, "="..archive.."#"..submod..".lua") end -- Search inside digestif.zip when requiring digestif.* modules. table.insert(package.searchers, 2, digestif_searcher) -- Search inside digestif.zip when loading the *.tags data files. table.insert(require "digestif.config".data_dirs, archive) require "digestif.langserver".main(arg)