summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/context/lua/mtx-interface.lua277
1 files changed, 173 insertions, 104 deletions
diff --git a/scripts/context/lua/mtx-interface.lua b/scripts/context/lua/mtx-interface.lua
index 954cb4498..db66d4eed 100644
--- a/scripts/context/lua/mtx-interface.lua
+++ b/scripts/context/lua/mtx-interface.lua
@@ -47,132 +47,167 @@ local flushers = { }
local userinterfaces = { 'en','cs','de','it','nl','ro','fr','pe' }
local messageinterfaces = { 'en','cs','de','it','nl','ro','fr','pe','no' }
-function flushers.scite(interface,commands)
- local result, i = {}, 0
- result[#result+1] = format("keywordclass.macros.context.%s=",interface)
- for i=1,#commands do
- local command = commands[i]
- if i==0 then
- result[#result+1] = "\\\n"
- i = 5
- else
- i = i - 1
+local function collect(filename,class,data)
+ if data then
+ local result = { }
+ for name, list in next, data do
+ result[#result+1] = format("keywordclass.%s.%s=\\\n",class,name)
+ for i=1,#list do
+ if i%5 == 0 then
+ result[#result+1] = "\\\n"
+ end
+ result[#result+1] = format("%s ",list[i])
+ end
+ result[#result+1] = "\n\n"
end
- result[#result+1] = format("%s ",command)
+ io.savedata(file.addsuffix(filename,"properties"),concat(result))
+ io.savedata(file.addsuffix(filename,"lua"), table.serialize(data,true))
+ else
+ os.remove(filename)
+ end
+end
+
+function flushers.scite(collected)
+ local data = { }
+ for interface, whatever in next, collected do
+ data[interface] = whatever.commands
end
- io.savedata(format("cont-%s-scite.properties",interface), concat(result),"\n")
- io.savedata(format("cont-%s-scite.lua",interface), table.serialize(commands,true))
+ collect("scite-context-data-interfaces", "context", data)
+ collect("scite-context-data-metapost", "metapost", dofile(resolvers.findfile("mult-mps.lua")))
+ collect("scite-context-data-metafun", "metafun", dofile(resolvers.findfile("mult-fun.lua")))
+ collect("scite-context-data-context", "context", dofile(resolvers.findfile("mult-low.lua")))
+ collect("scite-context-data-tex", "tex", dofile(resolvers.findfile("mult-prm.lua")))
end
-function flushers.jedit(interface,commands)
- local result = {}
- result[#result+1] = "<?xml version='1.0'?>"
- result[#result+1] = "<!DOCTYPE MODE SYSTEM 'xmode.dtd'>\n"
- result[#result+1] = "<MODE>"
- result[#result+1] = "\t<RULES>"
- result[#result+1] = "\t\t<KEYWORDS>"
- for i=1,#commands do
- result[#result+1] = format("\t\t\t<KEYWORD2>%s</KEYWORD2>",commands[i])
+function flushers.jedit(collected)
+ for interface, whatever in next, collected do
+ local commands = whatever.commands
+ local environments = whatever.environments
+ local result = { }
+ result[#result+1] = "<?xml version='1.0'?>"
+ result[#result+1] = "<!DOCTYPE MODE SYSTEM 'xmode.dtd'>\n"
+ result[#result+1] = "<MODE>"
+ result[#result+1] = "\t<RULES>"
+ result[#result+1] = "\t\t<KEYWORDS>"
+ for i=1,#commands do
+ result[#result+1] = format("\t\t\t<KEYWORD2>%s</KEYWORD2>",commands[i])
+ end
+ result[#result+1] = "\t\t</KEYWORDS>"
+ result[#result+1] = "\t</RULES>"
+ result[#result+1] = "</MODE>"
+ io.savedata(format("context-jedit-%s.xml",interface), concat(result),"\n")
end
- result[#result+1] = "\t\t</KEYWORDS>"
- result[#result+1] = "\t</RULES>"
- result[#result+1] = "</MODE>"
- io.savedata(format("context-jedit-%s.xml",interface), concat(result),"\n")
end
-function flushers.bbedit(interface,commands)
- local result = {}
- result[#result+1] = "<?xml version='1.0'?>"
- result[#result+1] = "<key>BBLMKeywordList</key>"
- result[#result+1] = "<array>"
- for i=1,#commands do
- result[#result+1] = format("\t<string>\\%s</string>",commands[i])
+function flushers.bbedit(collected)
+ for interface, whatever in next, collected do
+ local commands = whatever.commands
+ local environments = whatever.environments
+ local result = {}
+ result[#result+1] = "<?xml version='1.0'?>"
+ result[#result+1] = "<key>BBLMKeywordList</key>"
+ result[#result+1] = "<array>"
+ for i=1,#commands do
+ result[#result+1] = format("\t<string>\\%s</string>",commands[i])
+ end
+ result[#result+1] = "</array>"
+ io.savedata(format("context-bbedit-%s.xml",interface), concat(result),"\n")
end
- result[#result+1] = "</array>"
- io.savedata(format("context-bbedit-%s.xml",interface), concat(result),"\n")
end
-function flushers.raw(interface,commands)
- for i=1,#commands do
- report(commands[i])
+function flushers.raw(collected)
+ for interface, whatever in next, collected do
+ local commands = whatever.commands
+ local environments = whatever.environments
+ for i=1,#commands do
+ report(commands[i])
+ end
end
end
local textpadcreator = "mtx-interface-textpad.lua"
-function flushers.text(interface,commands,environments)
- local c, cname = { }, format("context-commands-%s.txt",interface)
- local e, ename = { }, format("context-environments-%s.txt",interface)
- report("saving '%s'",cname)
- for i=1,#commands do
- c[#c+1] = format("\\%s",commands[i])
- end
- io.savedata(cname,concat(c,"\n"))
- report("saving '%s'",ename)
- for i=1,#environments do
- e[#e+1] = format("\\start%s",environments[i])
- e[#e+1] = format("\\stop%s", environments[i])
+function flushers.text(collected)
+ for interface, whatever in next, collected do
+ local commands = whatever.commands
+ local environments = whatever.environments
+ local c, cname = { }, format("context-commands-%s.txt",interface)
+ local e, ename = { }, format("context-environments-%s.txt",interface)
+ report("saving '%s'",cname)
+ for i=1,#commands do
+ c[#c+1] = format("\\%s",commands[i])
+ end
+ io.savedata(cname,concat(c,"\n"))
+ report("saving '%s'",ename)
+ for i=1,#environments do
+ e[#e+1] = format("\\start%s",environments[i])
+ e[#e+1] = format("\\stop%s", environments[i])
+ end
+ io.savedata(format("context-environments-%s.txt",interface),concat(e,"\n"))
end
- io.savedata(format("context-environments-%s.txt",interface),concat(e,"\n"))
end
-function flushers.textpad(interface,commands,environments)
- flushers.text(interface,commands,environments)
- --
- -- plugin, this is a rewrite of a file provided by Lukas Prochazka
- --
- local function merge(templatedata,destinationdata,categories)
- report("loading '%s'",templatedata)
- local data = io.loaddata(templatedata)
- local done = 0
- for i=1,#categories do
- local category = categories[i]
- local cpattern = ";%s*category:%s*(" .. category .. ")%s*[\n\r]+"
- local fpattern = ";%s*filename:%s*(" .. "%S+" .. ")%s*[\n\r]+"
- data = gsub(data,cpattern..fpattern,function(category,filename)
- local found = resolvers.findfile(filename) or ""
- local blob = found ~= "" and io.loaddata(found) or ""
- if blob == "" then
- report("category: %s, filename: %s, not found",category,filename)
- else
- done = done + 1
- report("category: %s, filename: %s, merged",category,filename)
- end
- return format("; category: %s\n; filename: %s\n%s\n\n",category,filename,blob)
- end)
+function flushers.textpad(collected)
+ flushers.text(collected)
+ for interface, whatever in next, collected do
+ local commands = whatever.commands
+ local environments = whatever.environments
+ --
+ -- plugin, this is a rewrite of a file provided by Lukas Prochazka
+ --
+ local function merge(templatedata,destinationdata,categories)
+ report("loading '%s'",templatedata)
+ local data = io.loaddata(templatedata)
+ local done = 0
+ for i=1,#categories do
+ local category = categories[i]
+ local cpattern = ";%s*category:%s*(" .. category .. ")%s*[\n\r]+"
+ local fpattern = ";%s*filename:%s*(" .. "%S+" .. ")%s*[\n\r]+"
+ data = gsub(data,cpattern..fpattern,function(category,filename)
+ local found = resolvers.findfile(filename) or ""
+ local blob = found ~= "" and io.loaddata(found) or ""
+ if blob == "" then
+ report("category: %s, filename: %s, not found",category,filename)
+ else
+ done = done + 1
+ report("category: %s, filename: %s, merged",category,filename)
+ end
+ return format("; category: %s\n; filename: %s\n%s\n\n",category,filename,blob)
+ end)
+ end
+ if done > 0 then
+ report("saving '%s' (%s files merged)",destinationdata,done)
+ io.savedata(destinationdata,data)
+ else
+ report("skipping '%s' (no files merged)",destinationdata)
+ end
end
- if done > 0 then
- report("saving '%s' (%s files merged)",destinationdata,done)
- io.savedata(destinationdata,data)
+ local templatename = "textpad-context-template.txt"
+ local templatedata = resolvers.findfile(templatename) or ""
+ if templatedata == "" then
+ report("unable to locate template '%s'",templatename)
else
- report("skipping '%s' (no files merged)",destinationdata)
+ merge(templatedata, "context.syn", { "tex commands","context commands" })
+ if environment.argument("textpad") == "latex" then
+ merge(templatedata, "context-latex.syn", { "tex commands","context commands", "latex commands" })
+ end
end
- end
- local templatename = "textpad-context-template.txt"
- local templatedata = resolvers.findfile(templatename) or ""
- if templatedata == "" then
- report("unable to locate template '%s'",templatename)
- else
- merge(templatedata, "context.syn", { "tex commands","context commands" })
- if environment.argument("textpad") == "latex" then
- merge(templatedata, "context-latex.syn", { "tex commands","context commands", "latex commands" })
+ local r = { }
+ local c = io.loaddata("context-commands-en.txt") or "" -- sits on the same path
+ local e = io.loaddata("context-environments-en.txt") or "" -- sits on the same path
+ for s in gmatch(c,"\\(.-)%s") do
+ r[#r+1] = format("\n!TEXT=%s\n\\%s\n!",s,s)
end
+ for s in gmatch(e,"\\start(.-)%s+\\stop(.-)") do
+ r[#r+1] = format("\n!TEXT=%s (start/stop)\n\\start%s \\^\\stop%s\n!",s,s,s)
+ end
+ sort(r)
+ insert(r,1,"!TCL=597,\n!TITLE=ConTeXt\n!SORT=N\n!CHARSET=DEFAULT")
+ io.savedata("context.tcl",concat(r,"\n"))
+ -- cleanup
+ os.remove("context-commands-en.txt")
+ os.remove("context-environments-en.txt")
end
- local r = { }
- local c = io.loaddata("context-commands-en.txt") or "" -- sits on the same path
- local e = io.loaddata("context-environments-en.txt") or "" -- sits on the same path
- for s in gmatch(c,"\\(.-)%s") do
- r[#r+1] = format("\n!TEXT=%s\n\\%s\n!",s,s)
- end
- for s in gmatch(e,"\\start(.-)%s+\\stop(.-)") do
- r[#r+1] = format("\n!TEXT=%s (start/stop)\n\\start%s \\^\\stop%s\n!",s,s,s)
- end
- sort(r)
- insert(r,1,"!TCL=597,\n!TITLE=ConTeXt\n!SORT=N\n!CHARSET=DEFAULT")
- io.savedata("context.tcl",concat(r,"\n"))
- -- cleanup
- os.remove("context-commands-en.txt")
- os.remove("context-environments-en.txt")
end
function scripts.interface.editor(editor,split,forcedinterfaces)
@@ -184,6 +219,7 @@ function scripts.interface.editor(editor,split,forcedinterfaces)
if xmlfile == "" then
report("unable to locate cont-en.xml")
end
+ local collected = { }
for i=1,#interfaces do
local interface = interfaces[i]
local keyfile = resolvers.findfile(format("keys-%s.xml",interface)) or ""
@@ -222,10 +258,43 @@ function scripts.interface.editor(editor,split,forcedinterfaces)
if #commands > 0 then
sort(commands)
sort(environments)
- flushers[editor](interface,commands,environments)
+ collected[interface] = {
+ commands = commands,
+ environments = environments,
+ }
end
end
end
+ -- awaiting completion of the xml file
+ local definitions = dofile(resolvers.findfile("mult-def.lua"))
+ if definitions then
+ local commands = { en = { } }
+ for command, languages in next, definitions.commands do
+ commands.en[languages.en or command] = true
+ for language, command in next, languages do
+ local c = commands[language]
+ if c then
+ c[command] = true
+ else
+ commands[language] = { [command] = true }
+ end
+ end
+ end
+ for language, data in next, commands do
+ local fromlua = data
+ local fromxml = collected[language].commands
+ for i=1,#fromxml do
+ local c = fromxml[i]
+ if not fromlua[c] then
+ -- print(language,c)
+ fromlua[c] = true
+ end
+ end
+ collected[language].commands = table.sortedkeys(fromlua)
+ end
+ end
+ --
+ flushers[editor](collected)
end
function scripts.interface.check()