diff options
author | Hans Hagen <pragma@wxs.nl> | 2023-04-27 00:04:07 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2023-04-27 00:04:07 +0200 |
commit | 6b25a7a970ba9553adf8077ef2eecb50a5d77818 (patch) | |
tree | f06e40077ba9e55af4bf6cab52313f79f8ea84a8 /tex/context/modules | |
parent | 657457ef4a08c1f000f272e00f654f4064cc37bd (diff) | |
download | context-6b25a7a970ba9553adf8077ef2eecb50a5d77818.tar.gz |
2023-04-26 23:31:00
Diffstat (limited to 'tex/context/modules')
-rw-r--r-- | tex/context/modules/mkiv/s-fonts-variable.mkiv | 7 | ||||
-rw-r--r-- | tex/context/modules/mkxl/s-system-macros.mkxl | 84 |
2 files changed, 78 insertions, 13 deletions
diff --git a/tex/context/modules/mkiv/s-fonts-variable.mkiv b/tex/context/modules/mkiv/s-fonts-variable.mkiv index d061179eb..16ce91748 100644 --- a/tex/context/modules/mkiv/s-fonts-variable.mkiv +++ b/tex/context/modules/mkiv/s-fonts-variable.mkiv @@ -132,8 +132,11 @@ % \showfontvariations[font=file:goldmansanscdvf_wght.ttf] % \stoptext -\showfontvariations - [font=file:nupuram-vf.otf,features=malayalam-two,sample=test നൂപുരം] +% \showfontvariations +% [font=file:nupuram-vf.otf,features=malayalam-two,sample=test നൂപുരം] % [font=file:nupuram-vf.ttf,features=malayalam-two,sample=test നൂപുരം] +\showfontvariations + [font=file:robotoflex.ttf] + \stoptext diff --git a/tex/context/modules/mkxl/s-system-macros.mkxl b/tex/context/modules/mkxl/s-system-macros.mkxl index 7e78b265a..597af1a7b 100644 --- a/tex/context/modules/mkxl/s-system-macros.mkxl +++ b/tex/context/modules/mkxl/s-system-macros.mkxl @@ -27,6 +27,8 @@ % todo: and how about metapost ... i need a mp.hashtokens in order to do that and I also % need to think about protection there (tricky as we use an avl hash there) % +% todo: when possible replace \p_whatever_key by \p_key +% % public undefined : SmallCaps scitebuffer sciteinlinebuffer % single todos : \ \- \\ \_ @@ -56,14 +58,16 @@ if tex.modes.texmacros then - local context = context - local ctx_NC = context.NC - local ctx_NR = context.NR - local ctx_bold = context.bold - local ctx_verb = context.verbatim + local context = context + local ctx_NC = context.NC + local ctx_NR = context.NR + local ctx_bold = context.bold + local ctx_verb = context.verbatim + local ctx_escaped = context.escaped local find = string.find local gsub = string.gsub + local gmatch = string.gmatch local create = tokens.create local crap = "[$>%|%&%#" .. string.char(0xEF) .. "]" @@ -111,26 +115,82 @@ local data = scripts.interface.editor("data") local files = data and data.common and data.common.filenames or { } local macros = { } + local registers = { } + local implements = { } local flagged = 0 local total = 0 local list = tex.hashtokens() local all = not tex.modes.notmarked local everything = tex.modes.everything + local getmacro = token.getmacro local fmtname = resolvers.locateformat("cont-en.fmt") if fmtname then local logname = file.replacesuffix(fmtname,"log") - for filename in string.gmatch(io.loaddata(logname),"fullname=(%S+)") do + for filename in gmatch(io.loaddata(logname),"fullname=(%S+)") do local s = file.suffix(filename) local b = file.basename(filename) if s ~= "lua" and s ~= "lmt" then local d = io.loaddata(filename) - for m in string.gmatch(d,"\n[\\a-z]*[exg]*def\\([a-zA-Z_]+)") do + -- we could make a nice lpeg + for m in gmatch(d,"\n[\\a-z]*[exg]*def\\([a-zA-Z_]+)") do + macros[m] = b + end + for m in gmatch(d,"\n[\\a-z]*[g]*let\\([a-zA-Z_]+)") do + macros[m] = b + end + for m in gmatch(d,"\n\\lettonothing\\([a-zA-Z_]+)") do + macros[m] = b + end + for m in gmatch(d,"\n\\integerdef\\([a-zA-Z_]+)") do + macros[m] = b + end + for m in gmatch(d,"\n\\dimensiondef\\([a-zA-Z_]+)") do + macros[m] = b + end + for m in gmatch(d,"\n\\gluespecdef\\([a-zA-Z_]+)") do macros[m] = b end - for m in string.gmatch(d,"\n[\\a-z]*[g]*let\\([a-zA-Z_]+)") do + for m in gmatch(d,"\n\\mugluespecdef\\([a-zA-Z_]+)") do macros[m] = b end + for m in gmatch(d,"\n\\newinteger\\([a-zA-Z_]+)") do + registers[m] = b + end + for m in gmatch(d,"\n\\newdimension\\([a-zA-Z_]+)") do + registers[m] = b + end + for m in gmatch(d,"\n\\newgluespec\\([a-zA-Z_]+)") do + registers[m] = b + end + for m in gmatch(d,"\n\\newmugluespec\\([a-zA-Z_]+)") do + registers[m] = b + end + for m in gmatch(d,"\n\\newconditional\\([a-zA-Z_]+)") do + registers[m] = b + end + for m in gmatch(d,"\n\\newtoks\\([a-zA-Z_]+)") do + registers[m] = b + end + for m in gmatch(d,"\n\\newcount\\([a-zA-Z_]+)") do + registers[m] = b + end + for m in gmatch(d,"\n\\newdimen\\([a-zA-Z_]+)") do + registers[m] = b + end + for m in gmatch(d,"\n\\newskip\\([a-zA-Z_]+)") do + registers[m] = b + end + for m in gmatch(d,"\n\\newmuskip\\([a-zA-Z_]+)") do + registers[m] = b + end + elseif b ~= "char-def.lua" then + local d = io.loaddata(filename) + -- maybe inside implement { } + -- maybe get file from debug interface + for m in gmatch(d,'\n +name += +"([a-zA-Z_]+)",') do + implements[m] = b + end end end end @@ -138,8 +198,7 @@ table.sort(list) local function show(visible, check) - -- context.starttabulate { "|l|l|l|lj2|l|l|l|l|l|l|l|l|" } - context.starttabulate { "|l|l|l|lj2|l|l|l|l|l|l|l|l|l|" } + context.starttabulate { "|l|l|l|lj2|l|l|l|l|l|l|l|l|l|l|l|" } for i=1,#list do local k = list[i] if check(k) then @@ -151,6 +210,7 @@ local primitive = v.primitive and "primitive" local instance = v.instance and "instance" local constant = v.constant and "constant" + local untraced = v.untraced and "untraced" local dealtwith = mutable or immutable or mutable or frozen or permanent or primitive -- beware: we can have combinations local whatever = find(k,"^[a-z][a-z][a-z]+_") local cscommand = gsub(v.cmdname or "","_"," ") @@ -159,7 +219,7 @@ if everything or ((all or not marked) and not find(k,"^[pvm]_") and not find(k,"^![tT]")) then local parameters = v.parameters local noaligned = v.noaligned and "noaligned" - local filename = files[k] or macros[k] + local filename = files[k] or macros[k] or implements[k] or registers[k] or implements[gsub(k,"^clf_","")] local csname = context.escape(k) if undefined then marked = "?" @@ -178,7 +238,9 @@ ctx_NC() if instance then context(instance) end ctx_NC() if noaligned then context(noaligned) end ctx_NC() if constant then context(constant) end + ctx_NC() if untraced then context(untraced) end ctx_NC() if filename then context(hashnames[filename]) end + ctx_NC() if parameters then if parameters > 0 then ctx_escaped(getmacro(csname,false,true)) end end ctx_NC() ctx_NR() end if visible then |