summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-context.lua2
-rw-r--r--context/data/scite/context/scite-context-data-context.properties313
-rw-r--r--context/data/textadept/context/data/scite-context-data-context.lua2
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json2
-rw-r--r--doc/context/documents/general/manuals/lowlevel-boxes.pdfbin75834 -> 78544 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-scope.pdfbin0 -> 46065 bytes
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex8
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-scope.tex341
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkiv/colo-ini.mkiv4
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/data-tex.lua6
-rw-r--r--tex/context/base/mkiv/lpdf-aux.lua3
-rw-r--r--tex/context/base/mkiv/lpdf-ini.lua4
-rw-r--r--tex/context/base/mkiv/mult-low.lua6
-rw-r--r--tex/context/base/mkiv/spac-ver.mkiv14
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin25323 -> 25354 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin254423 -> 255883 bytes
-rw-r--r--tex/context/base/mkiv/supp-ran.mkiv5
-rw-r--r--tex/context/base/mkxl/anch-tab.mkxl2
-rw-r--r--tex/context/base/mkxl/attr-ini.mkxl2
-rw-r--r--tex/context/base/mkxl/back-ini.mkxl6
-rw-r--r--tex/context/base/mkxl/buff-ini.mkxl6
-rw-r--r--tex/context/base/mkxl/colo-ini.mkxl7
-rw-r--r--tex/context/base/mkxl/cont-new.mkxl2
-rw-r--r--tex/context/base/mkxl/context.mkxl2
-rw-r--r--tex/context/base/mkxl/core-dat.mkxl2
-rw-r--r--tex/context/base/mkxl/core-env.mkxl2
-rw-r--r--tex/context/base/mkxl/core-sys.mkxl2
-rw-r--r--tex/context/base/mkxl/font-ini.mklx6
-rw-r--r--tex/context/base/mkxl/font-sel.mklx2
-rw-r--r--tex/context/base/mkxl/font-sty.mklx16
-rw-r--r--tex/context/base/mkxl/lpdf-aux.lmt3
-rw-r--r--tex/context/base/mkxl/lpdf-ini.lmt4
-rw-r--r--tex/context/base/mkxl/luat-cod.mkxl9
-rw-r--r--tex/context/base/mkxl/math-acc.mklx2
-rw-r--r--tex/context/base/mkxl/math-ali.mkxl10
-rw-r--r--tex/context/base/mkxl/math-ini.mkxl2
-rw-r--r--tex/context/base/mkxl/math-stc.mklx2
-rw-r--r--tex/context/base/mkxl/meta-ini.mkxl41
-rw-r--r--tex/context/base/mkxl/mlib-pps.mkxl3
-rw-r--r--tex/context/base/mkxl/node-fin.mkxl5
-rw-r--r--tex/context/base/mkxl/node-nut.lmt2
-rw-r--r--tex/context/base/mkxl/pack-box.mkxl6
-rw-r--r--tex/context/base/mkxl/pack-com.mkxl30
-rw-r--r--tex/context/base/mkxl/pack-mrl.mkxl20
-rw-r--r--tex/context/base/mkxl/pack-rul.lmt11
-rw-r--r--tex/context/base/mkxl/pack-rul.mkxl34
-rw-r--r--tex/context/base/mkxl/page-bck.mkxl2
-rw-r--r--tex/context/base/mkxl/page-brk.mkxl2
-rw-r--r--tex/context/base/mkxl/page-col.mkxl2
-rw-r--r--tex/context/base/mkxl/page-cst.mkxl2
-rw-r--r--tex/context/base/mkxl/page-pcl.mkxl16
-rw-r--r--tex/context/base/mkxl/page-sel.mklx3
-rw-r--r--tex/context/base/mkxl/page-txt.mklx5
-rw-r--r--tex/context/base/mkxl/scrn-bar.mklx2
-rw-r--r--tex/context/base/mkxl/scrn-but.mklx4
-rw-r--r--tex/context/base/mkxl/scrn-fld.mklx4
-rw-r--r--tex/context/base/mkxl/spac-par.mkxl13
-rw-r--r--tex/context/base/mkxl/spac-ver.lmt11
-rw-r--r--tex/context/base/mkxl/spac-ver.mkxl24
-rw-r--r--tex/context/base/mkxl/strc-flt.mklx3
-rw-r--r--tex/context/base/mkxl/strc-itm.mklx18
-rw-r--r--tex/context/base/mkxl/strc-not.mklx13
-rw-r--r--tex/context/base/mkxl/strc-reg.mkxl2
-rw-r--r--tex/context/base/mkxl/strc-syn.mkxl2
-rw-r--r--tex/context/base/mkxl/strc-tag.mkxl2
-rw-r--r--tex/context/base/mkxl/supp-box.lmt2
-rw-r--r--tex/context/base/mkxl/supp-box.mkxl10
-rw-r--r--tex/context/base/mkxl/supp-ran.mkxl4
-rw-r--r--tex/context/base/mkxl/syst-aux.mkxl57
-rw-r--r--tex/context/base/mkxl/syst-ini.mkxl146
-rw-r--r--tex/context/base/mkxl/syst-lua.lmt14
-rw-r--r--tex/context/base/mkxl/tabl-mis.mkxl17
-rw-r--r--tex/context/base/mkxl/tabl-ntb.mkxl5
-rw-r--r--tex/context/base/mkxl/tabl-tab.mkxl2
-rw-r--r--tex/context/base/mkxl/type-ini.mklx2
-rw-r--r--tex/context/base/mkxl/typo-itm.mkxl23
-rw-r--r--tex/context/modules/mkiv/m-system-readers.mkxl148
-rw-r--r--tex/context/modules/mkiv/s-system-macros.mkxl5
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
83 files changed, 1140 insertions, 386 deletions
diff --git a/context/data/scite/context/lexers/data/scite-context-data-context.lua b/context/data/scite/context/lexers/data/scite-context-data-context.lua
index 931ac1611..46c2f46d6 100644
--- a/context/data/scite/context/lexers/data/scite-context-data-context.lua
+++ b/context/data/scite/context/lexers/data/scite-context-data-context.lua
@@ -1,4 +1,4 @@
return {
["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "pluseleven", "plustwelve", "plussixteen", "plusfifty", "plushundred", "plusonehundred", "plustwohundred", "plusfivehundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "maxcardminusone", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxcount", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "texenginefunctionality", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "contextformat", "contextversion", "contextlmtxmode", "contextmark", "mksuffix", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "statuswrite", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "ctdcatcodes", "rlncatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "commaasciicode", "spaceasciicode", "periodasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "leftparentasciicode", "rightparentasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "hyphenasciicode", "percentasciicode", "leftbracketasciicode", "rightbracketasciicode", "frozenhsizecode", "frozenskipcode", "frozenhangcode", "frozenindentcode", "frozenparfillcode", "frozenadjustcode", "frozenprotrudecode", "frozentolerancecode", "frozenstretchcode", "frozenloosenesscode", "frozenlastlinecode", "frozenlinepenaltycode", "frozenclubpenaltycode", "frozenwidowpenaltycode", "frozendisplaypenaltycode", "frozenbrokenpenaltycode", "frozendemeritscode", "frozenshapecode", "frozenlinecode", "frozenallcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "charnodecode", "hlistnodecode", "vlistnodecode", "rulenodecode", "insertnodecode", "marknodecode", "adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode", "gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "mathexheight", "mathemwidth", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathaxisheight", "muquad", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifelsemode", "doifmodeelse", "doifnotmode", "startmodeset", "stopmodeset", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifelseallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "unexpandeddocumentvariable", "setupdocument", "presetdocument", "doifelsedocumentvariable", "doifdocumentvariableelse", "doifdocumentvariable", "doifnotdocumentvariable", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "setupmodule", "currentmoduleparameter", "moduleparameter", "everystarttext", "everystoptext", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "definemode", "globalenablemode", "globaldisablemode", "globalpreventmode", "pushmode", "popmode", "typescriptone", "typescripttwo", "typescriptthree", "mathsizesuffix", "mathordcode", "mathopcode", "mathbincode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctcode", "mathalphacode", "mathinnercode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathboxcode", "mathchoicecode", "mathaccentcode", "mathradicalcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "continueifinputfile", "luastringsep", "!!bs", "!!es", "lefttorightmark", "righttoleftmark", "lrm", "rlm", "bidilre", "bidirle", "bidipop", "bidilro", "bidirlo", "breakablethinspace", "nobreakspace", "nonbreakablespace", "narrownobreakspace", "zerowidthnobreakspace", "ideographicspace", "ideographichalffillspace", "twoperemspace", "threeperemspace", "fourperemspace", "fiveperemspace", "sixperemspace", "figurespace", "punctuationspace", "hairspace", "enquad", "emquad", "zerowidthspace", "zerowidthnonjoiner", "zerowidthjoiner", "zwnj", "zwj", "optionalspace", "asciispacechar", "softhyphen", "Ux", "eUx", "Umathaccents", "parfillleftskip", "parfillrightskip", "startlmtxmode", "stoplmtxmode", "startmkivmode", "stopmkivmode", "wildcardsymbol", "normalhyphenationmodecode", "automatichyphenationmodecode", "explicithyphenationmodecode", "syllablehyphenationmodecode", "uppercasehyphenationmodecode", "completehyphenationmodecode", "compoundhyphenationmodecode", "strictstarthyphenationmodecode", "strictendhyphenationmodecode", "automaticpenaltyhyphenationmodecode", "explicitpenaltyhyphenationmodecode", "permitgluehyphenationmodecode", "permitallhyphenationmodecode", "permitmathreplacehyphenationmodecode", "normalizelinecode", "parindentskipcode", "swaphangindentcode", "swapparsshapecode", "breakafterdircode", "removemarginkernscode", "clipwidthcode", "noligaturingcode", "nokerningcode", "noleftligaturecode", "noleftkerncode", "norightligaturecode", "norightkerncode", "noexpansioncode", "noprotrusioncode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "continuewhenlmtxmode" },
- ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "startcontextdefinitioncode", "stopcontextdefinitioncode", "texdefinition", "doifelsesetups", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "fastsetup", "copysetups", "resetsetups", "doifelsecommandhandler", "doifcommandhandlerelse", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "globalsetmode", "globalresetmode", "globalsetsystemmode", "globalresetsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "autorule", "strippedcsname", "checkedstrippedcsname", "nofarguments", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthargumenttrue", "sixthargumentfalse", "sixthargumenttrue", "seventhargumentfalse", "seventhargumenttrue", "vkern", "hkern", "vpenalty", "hpenalty", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "dontcomplain", "forgetall", "donetrue", "donefalse", "foundtrue", "foundfalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "startpickupmath", "stoppickupmath", "reqno", "mathortext", "thebox", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilll", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "normalhfilllneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilll", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "normalvfilllneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledmbox", "ruledhpack", "ruledvpack", "ruledtpack", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchstringone", "scratchstringtwo", "tempstring", "scratchcounter", "globalscratchcounter", "privatescratchcounter", "scratchdimen", "globalscratchdimen", "privatescratchdimen", "scratchskip", "globalscratchskip", "privatescratchskip", "scratchmuskip", "globalscratchmuskip", "privatescratchmuskip", "scratchtoks", "globalscratchtoks", "privatescratchtoks", "scratchbox", "globalscratchbox", "privatescratchbox", "scratchmacro", "scratchmacroone", "scratchmacrotwo", "scratchconditiontrue", "scratchconditionfalse", "ifscratchcondition", "scratchconditiononetrue", "scratchconditiononefalse", "ifscratchconditionone", "scratchconditiontwotrue", "scratchconditiontwofalse", "ifscratchconditiontwo", "globalscratchcounterone", "globalscratchcountertwo", "globalscratchcounterthree", "groupedcommand", "groupedcommandcs", "triggergroupedcommand", "triggergroupedcommandcs", "simplegroupedcommand", "pickupgroupedcommand", "usedbaselineskip", "usedlineskip", "usedlineskiplimit", "availablehsize", "localhsize", "setlocalhsize", "distributedhsize", "hsizefraction", "next", "nexttoken", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "flushnextbox", "boxisempty", "givenwidth", "givenheight", "givendepth", "scangivendimensions", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchtotal", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchcounterfour", "scratchcounterfive", "scratchcountersix", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchdimenfour", "scratchdimenfive", "scratchdimensix", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchskipfour", "scratchskipfive", "scratchskipsix", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchmuskipfour", "scratchmuskipfive", "scratchmuskipsix", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchtoksfour", "scratchtoksfive", "scratchtokssix", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchboxfour", "scratchboxfive", "scratchboxsix", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchmin", "scratchmax", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "firstinset", "doifinset", "doifnotinset", "doifelseinset", "doifinsetelse", "doifelsenextchar", "doifnextcharelse", "doifelsenextcharcs", "doifnextcharcselse", "doifelsenextoptional", "doifnextoptionalelse", "doifelsenextoptionalcs", "doifnextoptionalcselse", "doifelsefastoptionalcheck", "doiffastoptionalcheckelse", "doifelsefastoptionalcheckcs", "doiffastoptionalcheckcselse", "doifelsenextbgroup", "doifnextbgroupelse", "doifelsenextbgroupcs", "doifnextbgroupcselse", "doifelsenextparenthesis", "doifnextparenthesiselse", "doifelseundefined", "doifundefinedelse", "doifelsedefined", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifnothingelse", "doifelsesomething", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifvaluenothingelse", "doifelsedimension", "doifdimensionelse", "doifelsenumber", "doifnumberelse", "doifnumber", "doifnotnumber", "doifelsecommon", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifelseinstring", "doifinstringelse", "doifelseassignment", "doifassignmentelse", "docheckassignment", "doifelseassignmentcs", "doifassignmentelsecs", "validassignment", "novalidassignment", "doiftext", "doifelsetext", "doiftextelse", "doifnottext", "quitcondition", "truecondition", "falsecondition", "tracingall", "tracingnone", "loggingall", "showluatokens", "aliasmacro", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "emspace", "charspace", "nbsp", "crlf", "obeyspaces", "obeylines", "obeytabs", "obeypages", "obeyedspace", "obeyedline", "obeyedtab", "obeyedpage", "normalspace", "naturalspace", "controlspace", "normalspaces", "ignoretabs", "ignorelines", "ignorepages", "ignoreeofs", "setcontrolspaces", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "removepunctuation", "ignoreparskip", "forcestrutdepth", "onlynonbreakablespace", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "directmeasure", "setquantity", "setequantity", "setgquantity", "setxquantity", "definequantity", "freezequantity", "quantity", "quantitied", "directquantity", "installcorenamespace", "getvalue", "getuvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "setexpandeddummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "firstoftwounexpanded", "secondoftwounexpanded", "firstofthreeunexpanded", "secondofthreeunexpanded", "thirdofthreeunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "fastloopindex", "fastloopfinal", "dowith", "doloopovermatch", "doloopovermatched", "doloopoverlist", "newconstant", "setnewconstant", "setconstant", "setconstantvalue", "newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "setconditional", "newmacro", "setnewmacro", "newfraction", "newsignal", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "onlypdfobjectcompression", "nopdfobjectcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doifelsefirstchar", "doiffirstcharelse", "startnointerference", "stopnointerference", "twodigits", "threedigits", "leftorright", "offinterlineskip", "oninterlineskip", "nointerlineskip", "strut", "halfstrut", "quarterstrut", "depthstrut", "halflinestrut", "noheightstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "strutgap", "begstrut", "endstrut", "lineheight", "leftboundary", "rightboundary", "signalcharacter", "shiftbox", "vpackbox", "hpackbox", "vpackedbox", "hpackedbox", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "normalsuperscript", "normalsubscript", "normalnosuperscript", "normalnosubscript", "superscript", "subscript", "nosuperscript", "nosubscript", "superprescript", "subprescript", "nosuperprescript", "nosubsprecript", "uncramped", "cramped", "mathstyletrigger", "triggermathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "pushmathstyle", "popmathstyle", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expelsedoif", "expdoif", "expdoifnot", "expdoifelsecommon", "expdoifcommonelse", "expdoifelseinset", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "ctxluamatch", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "startctxfunction", "stopctxfunction", "ctxfunction", "startctxfunctiondefinition", "stopctxfunctiondefinition", "installctxfunction", "installprotectedctxfunction", "installprotectedctxscanner", "installctxscanner", "resetctxscanner", "cldprocessfile", "cldloadfile", "cldloadviafile", "cldcontext", "cldcommand", "carryoverpar", "freezeparagraphproperties", "defrostparagraphproperties", "setparagraphfreezing", "forgetparagraphfreezing", "updateparagraphproperties", "updateparagraphpenalties", "updateparagraphdemerits", "updateparagraphshapes", "updateparagraphlines", "lastlinewidth", "assumelongusagecs", "Umathbotaccent", "Umathtopaccent", "righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop", "rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop", "autodirhbox", "autodirvbox", "autodirvtop", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "lefttoright", "righttoleft", "checkedlefttoright", "checkedrighttoleft", "synchronizelayoutdirection", "synchronizedisplaydirection", "synchronizeinlinedirection", "dirlre", "dirrle", "dirlro", "dirrlo", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "compounddiscretionary", "Ucheckedstartdisplaymath", "Ucheckedstopdisplaymath", "break", "nobreak", "allowbreak", "goodbreak", "nospace", "nospacing", "dospacing", "naturalhbox", "naturalvbox", "naturalvtop", "naturalhpack", "naturalvpack", "naturaltpack", "reversehbox", "reversevbox", "reversevtop", "reversehpack", "reversevpack", "reversetpack", "frule", "compoundhyphenpenalty", "start", "stop", "unsupportedcs", "openout", "closeout", "write", "openin", "closein", "read", "readline", "readfromterminal", "boxlines", "boxline", "setboxline", "copyboxline", "boxlinewd", "boxlineht", "boxlinedp", "boxlinenw", "boxlinenh", "boxlinend", "boxlinels", "boxliners", "boxlinelh", "boxlinerh", "boxlinelp", "boxlinerp", "boxlinein", "boxrangewd", "boxrangeht", "boxrangedp", "bitwiseset", "bitwiseand", "bitwiseor", "bitwisexor", "bitwisenot", "bitwisenil", "ifbitwiseand", "bitwise", "bitwiseshift", "bitwiseflip", "textdir", "linedir", "pardir", "boxdir", "prelistbox", "postlistbox", "prelistcopy", "postlistcopy", "setprelistbox", "setpostlistbox", "noligaturing", "nokerning", "noexpansion", "noprotrusion", "noleftkerning", "noleftligaturing", "norightkerning", "norightligaturing", "futureletnexttoken", "defbackslashbreak", "letbackslashbreak", "pushoverloadmode", "popoverloadmode", "suggestedalias" },
+ ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "startcontextdefinitioncode", "stopcontextdefinitioncode", "texdefinition", "doifelsesetups", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "fastsetup", "copysetups", "resetsetups", "doifelsecommandhandler", "doifcommandhandlerelse", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "globalsetmode", "globalresetmode", "globalsetsystemmode", "globalresetsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "autorule", "strippedcsname", "checkedstrippedcsname", "nofarguments", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthargumenttrue", "sixthargumentfalse", "sixthargumenttrue", "seventhargumentfalse", "seventhargumenttrue", "vkern", "hkern", "vpenalty", "hpenalty", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "dontcomplain", "forgetall", "donetrue", "donefalse", "foundtrue", "foundfalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "startpickupmath", "stoppickupmath", "reqno", "mathortext", "thebox", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilll", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "normalhfilllneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilll", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "normalvfilllneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledmbox", "ruledhpack", "ruledvpack", "ruledtpack", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchstring", "scratchstringone", "scratchstringtwo", "tempstring", "scratchcounter", "globalscratchcounter", "privatescratchcounter", "scratchdimen", "globalscratchdimen", "privatescratchdimen", "scratchskip", "globalscratchskip", "privatescratchskip", "scratchmuskip", "globalscratchmuskip", "privatescratchmuskip", "scratchtoks", "globalscratchtoks", "privatescratchtoks", "scratchbox", "globalscratchbox", "privatescratchbox", "scratchmacro", "scratchmacroone", "scratchmacrotwo", "scratchconditiontrue", "scratchconditionfalse", "ifscratchcondition", "scratchconditiononetrue", "scratchconditiononefalse", "ifscratchconditionone", "scratchconditiontwotrue", "scratchconditiontwofalse", "ifscratchconditiontwo", "globalscratchcounterone", "globalscratchcountertwo", "globalscratchcounterthree", "groupedcommand", "groupedcommandcs", "triggergroupedcommand", "triggergroupedcommandcs", "simplegroupedcommand", "pickupgroupedcommand", "usedbaselineskip", "usedlineskip", "usedlineskiplimit", "availablehsize", "localhsize", "setlocalhsize", "distributedhsize", "hsizefraction", "next", "nexttoken", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "flushnextbox", "boxisempty", "givenwidth", "givenheight", "givendepth", "scangivendimensions", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchtotal", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchcounterfour", "scratchcounterfive", "scratchcountersix", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchdimenfour", "scratchdimenfive", "scratchdimensix", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchskipfour", "scratchskipfive", "scratchskipsix", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchmuskipfour", "scratchmuskipfive", "scratchmuskipsix", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchtoksfour", "scratchtoksfive", "scratchtokssix", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchboxfour", "scratchboxfive", "scratchboxsix", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchmin", "scratchmax", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "firstinset", "doifinset", "doifnotinset", "doifelseinset", "doifinsetelse", "doifelsenextchar", "doifnextcharelse", "doifelsenextcharcs", "doifnextcharcselse", "doifelsenextoptional", "doifnextoptionalelse", "doifelsenextoptionalcs", "doifnextoptionalcselse", "doifelsefastoptionalcheck", "doiffastoptionalcheckelse", "doifelsefastoptionalcheckcs", "doiffastoptionalcheckcselse", "doifelsenextbgroup", "doifnextbgroupelse", "doifelsenextbgroupcs", "doifnextbgroupcselse", "doifelsenextparenthesis", "doifnextparenthesiselse", "doifelseundefined", "doifundefinedelse", "doifelsedefined", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifnothingelse", "doifelsesomething", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifvaluenothingelse", "doifelsedimension", "doifdimensionelse", "doifelsenumber", "doifnumberelse", "doifnumber", "doifnotnumber", "doifelsecommon", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifelseinstring", "doifinstringelse", "doifelseassignment", "doifassignmentelse", "docheckassignment", "doifelseassignmentcs", "doifassignmentelsecs", "validassignment", "novalidassignment", "doiftext", "doifelsetext", "doiftextelse", "doifnottext", "quitcondition", "truecondition", "falsecondition", "tracingall", "tracingnone", "loggingall", "showluatokens", "aliasmacro", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "emspace", "charspace", "nbsp", "crlf", "obeyspaces", "obeylines", "obeytabs", "obeypages", "obeyedspace", "obeyedline", "obeyedtab", "obeyedpage", "normalspace", "naturalspace", "controlspace", "normalspaces", "ignoretabs", "ignorelines", "ignorepages", "ignoreeofs", "setcontrolspaces", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "removepunctuation", "ignoreparskip", "forcestrutdepth", "onlynonbreakablespace", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "directmeasure", "setquantity", "setequantity", "setgquantity", "setxquantity", "definequantity", "freezequantity", "quantity", "quantitied", "directquantity", "installcorenamespace", "getvalue", "getuvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "setexpandeddummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "firstoftwounexpanded", "secondoftwounexpanded", "firstofthreeunexpanded", "secondofthreeunexpanded", "thirdofthreeunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "fastloopindex", "fastloopfinal", "dowith", "doloopovermatch", "doloopovermatched", "doloopoverlist", "newconstant", "setnewconstant", "setconstant", "setconstantvalue", "newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "setconditional", "newmacro", "setnewmacro", "newfraction", "newsignal", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "onlypdfobjectcompression", "nopdfobjectcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doifelsefirstchar", "doiffirstcharelse", "startnointerference", "stopnointerference", "twodigits", "threedigits", "leftorright", "offinterlineskip", "oninterlineskip", "nointerlineskip", "strut", "halfstrut", "quarterstrut", "depthstrut", "halflinestrut", "noheightstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "strutgap", "begstrut", "endstrut", "lineheight", "leftboundary", "rightboundary", "signalcharacter", "shiftbox", "vpackbox", "hpackbox", "vpackedbox", "hpackedbox", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "normalsuperscript", "normalsubscript", "normalnosuperscript", "normalnosubscript", "superscript", "subscript", "nosuperscript", "nosubscript", "superprescript", "subprescript", "nosuperprescript", "nosubsprecript", "uncramped", "cramped", "mathstyletrigger", "triggermathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "pushmathstyle", "popmathstyle", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expelsedoif", "expdoif", "expdoifnot", "expdoifelsecommon", "expdoifcommonelse", "expdoifelseinset", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "ctxluamatch", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "startctxfunction", "stopctxfunction", "ctxfunction", "startctxfunctiondefinition", "stopctxfunctiondefinition", "installctxfunction", "installprotectedctxfunction", "installprotectedctxscanner", "installctxscanner", "resetctxscanner", "cldprocessfile", "cldloadfile", "cldloadviafile", "cldcontext", "cldcommand", "carryoverpar", "freezeparagraphproperties", "defrostparagraphproperties", "setparagraphfreezing", "forgetparagraphfreezing", "updateparagraphproperties", "updateparagraphpenalties", "updateparagraphdemerits", "updateparagraphshapes", "updateparagraphlines", "lastlinewidth", "assumelongusagecs", "Umathbotaccent", "Umathtopaccent", "righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop", "rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop", "autodirhbox", "autodirvbox", "autodirvtop", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "lefttoright", "righttoleft", "checkedlefttoright", "checkedrighttoleft", "synchronizelayoutdirection", "synchronizedisplaydirection", "synchronizeinlinedirection", "dirlre", "dirrle", "dirlro", "dirrlo", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "compounddiscretionary", "Ucheckedstartdisplaymath", "Ucheckedstopdisplaymath", "break", "nobreak", "allowbreak", "goodbreak", "nospace", "nospacing", "dospacing", "naturalhbox", "naturalvbox", "naturalvtop", "naturalhpack", "naturalvpack", "naturaltpack", "reversehbox", "reversevbox", "reversevtop", "reversehpack", "reversevpack", "reversetpack", "frule", "compoundhyphenpenalty", "start", "stop", "unsupportedcs", "openout", "closeout", "write", "openin", "closein", "read", "readline", "readfromterminal", "boxlines", "boxline", "setboxline", "copyboxline", "boxlinewd", "boxlineht", "boxlinedp", "boxlinenw", "boxlinenh", "boxlinend", "boxlinels", "boxliners", "boxlinelh", "boxlinerh", "boxlinelp", "boxlinerp", "boxlinein", "boxrangewd", "boxrangeht", "boxrangedp", "bitwiseset", "bitwiseand", "bitwiseor", "bitwisexor", "bitwisenot", "bitwisenil", "ifbitwiseand", "bitwise", "bitwiseshift", "bitwiseflip", "textdir", "linedir", "pardir", "boxdir", "prelistbox", "postlistbox", "prelistcopy", "postlistcopy", "setprelistbox", "setpostlistbox", "noligaturing", "nokerning", "noexpansion", "noprotrusion", "noleftkerning", "noleftligaturing", "norightkerning", "norightligaturing", "futureletnexttoken", "defbackslashbreak", "letbackslashbreak", "pushoverloadmode", "popoverloadmode", "suggestedalias", "newlocalcount", "newlocaldimen", "newlocalskip", "newlocalmuskip", "newlocaltoks", "newlocalbox", "newlocalwrite", "newlocalread", "setnewlocalcount", "setnewlocaldimen", "setnewlocalskip", "setnewlocalmuskip", "setnewlocaltoks", "setnewlocalbox" },
} \ No newline at end of file
diff --git a/context/data/scite/context/scite-context-data-context.properties b/context/data/scite/context/scite-context-data-context.properties
index d2999fe88..6ad0305b4 100644
--- a/context/data/scite/context/scite-context-data-context.properties
+++ b/context/data/scite/context/scite-context-data-context.properties
@@ -127,159 +127,162 @@ ruledvbox ruledvtop ruledvcenter ruledmbox ruledhpack \
ruledvpack ruledtpack ruledhskip ruledvskip ruledkern \
ruledmskip ruledmkern ruledhglue ruledvglue normalhglue \
normalvglue ruledpenalty filledhboxb filledhboxr filledhboxg \
-filledhboxc filledhboxm filledhboxy filledhboxk scratchstringone \
-scratchstringtwo tempstring scratchcounter globalscratchcounter privatescratchcounter \
-scratchdimen globalscratchdimen privatescratchdimen scratchskip globalscratchskip \
-privatescratchskip scratchmuskip globalscratchmuskip privatescratchmuskip scratchtoks \
-globalscratchtoks privatescratchtoks scratchbox globalscratchbox privatescratchbox \
-scratchmacro scratchmacroone scratchmacrotwo scratchconditiontrue scratchconditionfalse \
-ifscratchcondition scratchconditiononetrue scratchconditiononefalse ifscratchconditionone scratchconditiontwotrue \
-scratchconditiontwofalse ifscratchconditiontwo globalscratchcounterone globalscratchcountertwo globalscratchcounterthree \
-groupedcommand groupedcommandcs triggergroupedcommand triggergroupedcommandcs simplegroupedcommand \
-pickupgroupedcommand usedbaselineskip usedlineskip usedlineskiplimit availablehsize \
-localhsize setlocalhsize distributedhsize hsizefraction next \
-nexttoken nextbox dowithnextbox dowithnextboxcs dowithnextboxcontent \
-dowithnextboxcontentcs flushnextbox boxisempty givenwidth givenheight \
-givendepth scangivendimensions scratchwidth scratchheight scratchdepth \
-scratchoffset scratchdistance scratchtotal scratchhsize scratchvsize \
-scratchxoffset scratchyoffset scratchhoffset scratchvoffset scratchxposition \
-scratchyposition scratchtopoffset scratchbottomoffset scratchleftoffset scratchrightoffset \
-scratchcounterone scratchcountertwo scratchcounterthree scratchcounterfour scratchcounterfive \
-scratchcountersix scratchdimenone scratchdimentwo scratchdimenthree scratchdimenfour \
-scratchdimenfive scratchdimensix scratchskipone scratchskiptwo scratchskipthree \
-scratchskipfour scratchskipfive scratchskipsix scratchmuskipone scratchmuskiptwo \
-scratchmuskipthree scratchmuskipfour scratchmuskipfive scratchmuskipsix scratchtoksone \
-scratchtokstwo scratchtoksthree scratchtoksfour scratchtoksfive scratchtokssix \
-scratchboxone scratchboxtwo scratchboxthree scratchboxfour scratchboxfive \
-scratchboxsix scratchnx scratchny scratchmx scratchmy \
-scratchunicode scratchmin scratchmax scratchleftskip scratchrightskip \
-scratchtopskip scratchbottomskip doif doifnot doifelse \
-firstinset doifinset doifnotinset doifelseinset doifinsetelse \
-doifelsenextchar doifnextcharelse doifelsenextcharcs doifnextcharcselse doifelsenextoptional \
-doifnextoptionalelse doifelsenextoptionalcs doifnextoptionalcselse doifelsefastoptionalcheck doiffastoptionalcheckelse \
-doifelsefastoptionalcheckcs doiffastoptionalcheckcselse doifelsenextbgroup doifnextbgroupelse doifelsenextbgroupcs \
-doifnextbgroupcselse doifelsenextparenthesis doifnextparenthesiselse doifelseundefined doifundefinedelse \
-doifelsedefined doifdefinedelse doifundefined doifdefined doifelsevalue \
-doifvalue doifnotvalue doifnothing doifsomething doifelsenothing \
-doifnothingelse doifelsesomething doifsomethingelse doifvaluenothing doifvaluesomething \
-doifelsevaluenothing doifvaluenothingelse doifelsedimension doifdimensionelse doifelsenumber \
-doifnumberelse doifnumber doifnotnumber doifelsecommon doifcommonelse \
-doifcommon doifnotcommon doifinstring doifnotinstring doifelseinstring \
-doifinstringelse doifelseassignment doifassignmentelse docheckassignment doifelseassignmentcs \
-doifassignmentelsecs validassignment novalidassignment doiftext doifelsetext \
-doiftextelse doifnottext quitcondition truecondition falsecondition \
-tracingall tracingnone loggingall showluatokens aliasmacro \
-removetoks appendtoks prependtoks appendtotoks prependtotoks \
-to endgraf endpar reseteverypar finishpar \
-empty null space quad enspace \
-emspace charspace nbsp crlf obeyspaces \
-obeylines obeytabs obeypages obeyedspace obeyedline \
-obeyedtab obeyedpage normalspace naturalspace controlspace \
-normalspaces ignoretabs ignorelines ignorepages ignoreeofs \
-setcontrolspaces executeifdefined singleexpandafter doubleexpandafter tripleexpandafter \
-dontleavehmode removelastspace removeunwantedspaces keepunwantedspaces removepunctuation \
-ignoreparskip forcestrutdepth onlynonbreakablespace wait writestatus \
-define defineexpandable redefine setmeasure setemeasure \
-setgmeasure setxmeasure definemeasure freezemeasure measure \
-measured directmeasure setquantity setequantity setgquantity \
-setxquantity definequantity freezequantity quantity quantitied \
-directquantity installcorenamespace getvalue getuvalue setvalue \
-setevalue setgvalue setxvalue letvalue letgvalue \
-resetvalue undefinevalue ignorevalue setuvalue setuevalue \
-setugvalue setuxvalue globallet udef ugdef \
-uedef uxdef checked unique getparameters \
-geteparameters getgparameters getxparameters forgetparameters copyparameters \
-getdummyparameters dummyparameter directdummyparameter setdummyparameter letdummyparameter \
-setexpandeddummyparameter usedummystyleandcolor usedummystyleparameter usedummycolorparameter processcommalist \
-processcommacommand quitcommalist quitprevcommalist processaction processallactions \
-processfirstactioninset processallactionsinset unexpanded expanded startexpanded \
-stopexpanded protect unprotect firstofoneargument firstoftwoarguments \
-secondoftwoarguments firstofthreearguments secondofthreearguments thirdofthreearguments firstoffourarguments \
-secondoffourarguments thirdoffourarguments fourthoffourarguments firstoffivearguments secondoffivearguments \
-thirdoffivearguments fourthoffivearguments fifthoffivearguments firstofsixarguments secondofsixarguments \
-thirdofsixarguments fourthofsixarguments fifthofsixarguments sixthofsixarguments firstofoneunexpanded \
-firstoftwounexpanded secondoftwounexpanded firstofthreeunexpanded secondofthreeunexpanded thirdofthreeunexpanded \
-gobbleoneargument gobbletwoarguments gobblethreearguments gobblefourarguments gobblefivearguments \
-gobblesixarguments gobblesevenarguments gobbleeightarguments gobbleninearguments gobbletenarguments \
-gobbleoneoptional gobbletwooptionals gobblethreeoptionals gobblefouroptionals gobblefiveoptionals \
-dorecurse doloop exitloop dostepwiserecurse recurselevel \
-recursedepth dofastloopcs fastloopindex fastloopfinal dowith \
-doloopovermatch doloopovermatched doloopoverlist newconstant setnewconstant \
-setconstant setconstantvalue newconditional settrue setfalse \
-settruevalue setfalsevalue setconditional newmacro setnewmacro \
-newfraction newsignal dosingleempty dodoubleempty dotripleempty \
-doquadrupleempty doquintupleempty dosixtupleempty doseventupleempty dosingleargument \
-dodoubleargument dotripleargument doquadrupleargument doquintupleargument dosixtupleargument \
-doseventupleargument dosinglegroupempty dodoublegroupempty dotriplegroupempty doquadruplegroupempty \
-doquintuplegroupempty permitspacesbetweengroups dontpermitspacesbetweengroups nopdfcompression maximumpdfcompression \
-normalpdfcompression onlypdfobjectcompression nopdfobjectcompression modulonumber dividenumber \
-getfirstcharacter doifelsefirstchar doiffirstcharelse startnointerference stopnointerference \
-twodigits threedigits leftorright offinterlineskip oninterlineskip \
-nointerlineskip strut halfstrut quarterstrut depthstrut \
-halflinestrut noheightstrut setstrut strutbox strutht \
-strutdp strutwd struthtdp strutgap begstrut \
-endstrut lineheight leftboundary rightboundary signalcharacter \
-shiftbox vpackbox hpackbox vpackedbox hpackedbox \
-ordordspacing ordopspacing ordbinspacing ordrelspacing ordopenspacing \
-ordclosespacing ordpunctspacing ordinnerspacing opordspacing opopspacing \
-opbinspacing oprelspacing opopenspacing opclosespacing oppunctspacing \
-opinnerspacing binordspacing binopspacing binbinspacing binrelspacing \
-binopenspacing binclosespacing binpunctspacing bininnerspacing relordspacing \
-relopspacing relbinspacing relrelspacing relopenspacing relclosespacing \
-relpunctspacing relinnerspacing openordspacing openopspacing openbinspacing \
-openrelspacing openopenspacing openclosespacing openpunctspacing openinnerspacing \
-closeordspacing closeopspacing closebinspacing closerelspacing closeopenspacing \
-closeclosespacing closepunctspacing closeinnerspacing punctordspacing punctopspacing \
-punctbinspacing punctrelspacing punctopenspacing punctclosespacing punctpunctspacing \
-punctinnerspacing innerordspacing inneropspacing innerbinspacing innerrelspacing \
-inneropenspacing innerclosespacing innerpunctspacing innerinnerspacing normalreqno \
-startimath stopimath normalstartimath normalstopimath startdmath \
-stopdmath normalstartdmath normalstopdmath normalsuperscript normalsubscript \
-normalnosuperscript normalnosubscript superscript subscript nosuperscript \
-nosubscript superprescript subprescript nosuperprescript nosubsprecript \
-uncramped cramped mathstyletrigger triggermathstyle mathstylefont \
-mathsmallstylefont mathstyleface mathsmallstyleface mathstylecommand mathpalette \
-mathstylehbox mathstylevbox mathstylevcenter mathstylevcenteredhbox mathstylevcenteredvbox \
-mathtext setmathsmalltextbox setmathtextbox pushmathstyle popmathstyle \
-triggerdisplaystyle triggertextstyle triggerscriptstyle triggerscriptscriptstyle triggeruncrampedstyle \
-triggercrampedstyle triggersmallstyle triggeruncrampedsmallstyle triggercrampedsmallstyle triggerbigstyle \
-triggeruncrampedbigstyle triggercrampedbigstyle luaexpr expelsedoif expdoif \
-expdoifnot expdoifelsecommon expdoifcommonelse expdoifelseinset expdoifinsetelse \
-ctxdirectlua ctxlatelua ctxsprint ctxwrite ctxcommand \
-ctxdirectcommand ctxlatecommand ctxreport ctxlua luacode \
-lateluacode directluacode registerctxluafile ctxloadluafile luaversion \
-luamajorversion luaminorversion ctxluacode luaconditional luaexpanded \
-ctxluamatch startluaparameterset stopluaparameterset luaparameterset definenamedlua \
-obeylualines obeyluatokens startluacode stopluacode startlua \
-stoplua startctxfunction stopctxfunction ctxfunction startctxfunctiondefinition \
-stopctxfunctiondefinition installctxfunction installprotectedctxfunction installprotectedctxscanner installctxscanner \
-resetctxscanner cldprocessfile cldloadfile cldloadviafile cldcontext \
-cldcommand carryoverpar freezeparagraphproperties defrostparagraphproperties setparagraphfreezing \
-forgetparagraphfreezing updateparagraphproperties updateparagraphpenalties updateparagraphdemerits updateparagraphshapes \
-updateparagraphlines lastlinewidth assumelongusagecs Umathbotaccent Umathtopaccent \
-righttolefthbox lefttorighthbox righttoleftvbox lefttorightvbox righttoleftvtop \
-lefttorightvtop rtlhbox ltrhbox rtlvbox ltrvbox \
-rtlvtop ltrvtop autodirhbox autodirvbox autodirvtop \
-leftorrighthbox leftorrightvbox leftorrightvtop lefttoright righttoleft \
-checkedlefttoright checkedrighttoleft synchronizelayoutdirection synchronizedisplaydirection synchronizeinlinedirection \
-dirlre dirrle dirlro dirrlo lesshyphens \
-morehyphens nohyphens dohyphens compounddiscretionary Ucheckedstartdisplaymath \
-Ucheckedstopdisplaymath break nobreak allowbreak goodbreak \
-nospace nospacing dospacing naturalhbox naturalvbox \
-naturalvtop naturalhpack naturalvpack naturaltpack reversehbox \
-reversevbox reversevtop reversehpack reversevpack reversetpack \
-frule compoundhyphenpenalty start stop unsupportedcs \
-openout closeout write openin closein \
-read readline readfromterminal boxlines boxline \
-setboxline copyboxline boxlinewd boxlineht boxlinedp \
-boxlinenw boxlinenh boxlinend boxlinels boxliners \
-boxlinelh boxlinerh boxlinelp boxlinerp boxlinein \
-boxrangewd boxrangeht boxrangedp bitwiseset bitwiseand \
-bitwiseor bitwisexor bitwisenot bitwisenil ifbitwiseand \
-bitwise bitwiseshift bitwiseflip textdir linedir \
-pardir boxdir prelistbox postlistbox prelistcopy \
-postlistcopy setprelistbox setpostlistbox noligaturing nokerning \
-noexpansion noprotrusion noleftkerning noleftligaturing norightkerning \
-norightligaturing futureletnexttoken defbackslashbreak letbackslashbreak pushoverloadmode \
-popoverloadmode suggestedalias
+filledhboxc filledhboxm filledhboxy filledhboxk scratchstring \
+scratchstringone scratchstringtwo tempstring scratchcounter globalscratchcounter \
+privatescratchcounter scratchdimen globalscratchdimen privatescratchdimen scratchskip \
+globalscratchskip privatescratchskip scratchmuskip globalscratchmuskip privatescratchmuskip \
+scratchtoks globalscratchtoks privatescratchtoks scratchbox globalscratchbox \
+privatescratchbox scratchmacro scratchmacroone scratchmacrotwo scratchconditiontrue \
+scratchconditionfalse ifscratchcondition scratchconditiononetrue scratchconditiononefalse ifscratchconditionone \
+scratchconditiontwotrue scratchconditiontwofalse ifscratchconditiontwo globalscratchcounterone globalscratchcountertwo \
+globalscratchcounterthree groupedcommand groupedcommandcs triggergroupedcommand triggergroupedcommandcs \
+simplegroupedcommand pickupgroupedcommand usedbaselineskip usedlineskip usedlineskiplimit \
+availablehsize localhsize setlocalhsize distributedhsize hsizefraction \
+next nexttoken nextbox dowithnextbox dowithnextboxcs \
+dowithnextboxcontent dowithnextboxcontentcs flushnextbox boxisempty givenwidth \
+givenheight givendepth scangivendimensions scratchwidth scratchheight \
+scratchdepth scratchoffset scratchdistance scratchtotal scratchhsize \
+scratchvsize scratchxoffset scratchyoffset scratchhoffset scratchvoffset \
+scratchxposition scratchyposition scratchtopoffset scratchbottomoffset scratchleftoffset \
+scratchrightoffset scratchcounterone scratchcountertwo scratchcounterthree scratchcounterfour \
+scratchcounterfive scratchcountersix scratchdimenone scratchdimentwo scratchdimenthree \
+scratchdimenfour scratchdimenfive scratchdimensix scratchskipone scratchskiptwo \
+scratchskipthree scratchskipfour scratchskipfive scratchskipsix scratchmuskipone \
+scratchmuskiptwo scratchmuskipthree scratchmuskipfour scratchmuskipfive scratchmuskipsix \
+scratchtoksone scratchtokstwo scratchtoksthree scratchtoksfour scratchtoksfive \
+scratchtokssix scratchboxone scratchboxtwo scratchboxthree scratchboxfour \
+scratchboxfive scratchboxsix scratchnx scratchny scratchmx \
+scratchmy scratchunicode scratchmin scratchmax scratchleftskip \
+scratchrightskip scratchtopskip scratchbottomskip doif doifnot \
+doifelse firstinset doifinset doifnotinset doifelseinset \
+doifinsetelse doifelsenextchar doifnextcharelse doifelsenextcharcs doifnextcharcselse \
+doifelsenextoptional doifnextoptionalelse doifelsenextoptionalcs doifnextoptionalcselse doifelsefastoptionalcheck \
+doiffastoptionalcheckelse doifelsefastoptionalcheckcs doiffastoptionalcheckcselse doifelsenextbgroup doifnextbgroupelse \
+doifelsenextbgroupcs doifnextbgroupcselse doifelsenextparenthesis doifnextparenthesiselse doifelseundefined \
+doifundefinedelse doifelsedefined doifdefinedelse doifundefined doifdefined \
+doifelsevalue doifvalue doifnotvalue doifnothing doifsomething \
+doifelsenothing doifnothingelse doifelsesomething doifsomethingelse doifvaluenothing \
+doifvaluesomething doifelsevaluenothing doifvaluenothingelse doifelsedimension doifdimensionelse \
+doifelsenumber doifnumberelse doifnumber doifnotnumber doifelsecommon \
+doifcommonelse doifcommon doifnotcommon doifinstring doifnotinstring \
+doifelseinstring doifinstringelse doifelseassignment doifassignmentelse docheckassignment \
+doifelseassignmentcs doifassignmentelsecs validassignment novalidassignment doiftext \
+doifelsetext doiftextelse doifnottext quitcondition truecondition \
+falsecondition tracingall tracingnone loggingall showluatokens \
+aliasmacro removetoks appendtoks prependtoks appendtotoks \
+prependtotoks to endgraf endpar reseteverypar \
+finishpar empty null space quad \
+enspace emspace charspace nbsp crlf \
+obeyspaces obeylines obeytabs obeypages obeyedspace \
+obeyedline obeyedtab obeyedpage normalspace naturalspace \
+controlspace normalspaces ignoretabs ignorelines ignorepages \
+ignoreeofs setcontrolspaces executeifdefined singleexpandafter doubleexpandafter \
+tripleexpandafter dontleavehmode removelastspace removeunwantedspaces keepunwantedspaces \
+removepunctuation ignoreparskip forcestrutdepth onlynonbreakablespace wait \
+writestatus define defineexpandable redefine setmeasure \
+setemeasure setgmeasure setxmeasure definemeasure freezemeasure \
+measure measured directmeasure setquantity setequantity \
+setgquantity setxquantity definequantity freezequantity quantity \
+quantitied directquantity installcorenamespace getvalue getuvalue \
+setvalue setevalue setgvalue setxvalue letvalue \
+letgvalue resetvalue undefinevalue ignorevalue setuvalue \
+setuevalue setugvalue setuxvalue globallet udef \
+ugdef uedef uxdef checked unique \
+getparameters geteparameters getgparameters getxparameters forgetparameters \
+copyparameters getdummyparameters dummyparameter directdummyparameter setdummyparameter \
+letdummyparameter setexpandeddummyparameter usedummystyleandcolor usedummystyleparameter usedummycolorparameter \
+processcommalist processcommacommand quitcommalist quitprevcommalist processaction \
+processallactions processfirstactioninset processallactionsinset unexpanded expanded \
+startexpanded stopexpanded protect unprotect firstofoneargument \
+firstoftwoarguments secondoftwoarguments firstofthreearguments secondofthreearguments thirdofthreearguments \
+firstoffourarguments secondoffourarguments thirdoffourarguments fourthoffourarguments firstoffivearguments \
+secondoffivearguments thirdoffivearguments fourthoffivearguments fifthoffivearguments firstofsixarguments \
+secondofsixarguments thirdofsixarguments fourthofsixarguments fifthofsixarguments sixthofsixarguments \
+firstofoneunexpanded firstoftwounexpanded secondoftwounexpanded firstofthreeunexpanded secondofthreeunexpanded \
+thirdofthreeunexpanded gobbleoneargument gobbletwoarguments gobblethreearguments gobblefourarguments \
+gobblefivearguments gobblesixarguments gobblesevenarguments gobbleeightarguments gobbleninearguments \
+gobbletenarguments gobbleoneoptional gobbletwooptionals gobblethreeoptionals gobblefouroptionals \
+gobblefiveoptionals dorecurse doloop exitloop dostepwiserecurse \
+recurselevel recursedepth dofastloopcs fastloopindex fastloopfinal \
+dowith doloopovermatch doloopovermatched doloopoverlist newconstant \
+setnewconstant setconstant setconstantvalue newconditional settrue \
+setfalse settruevalue setfalsevalue setconditional newmacro \
+setnewmacro newfraction newsignal dosingleempty dodoubleempty \
+dotripleempty doquadrupleempty doquintupleempty dosixtupleempty doseventupleempty \
+dosingleargument dodoubleargument dotripleargument doquadrupleargument doquintupleargument \
+dosixtupleargument doseventupleargument dosinglegroupempty dodoublegroupempty dotriplegroupempty \
+doquadruplegroupempty doquintuplegroupempty permitspacesbetweengroups dontpermitspacesbetweengroups nopdfcompression \
+maximumpdfcompression normalpdfcompression onlypdfobjectcompression nopdfobjectcompression modulonumber \
+dividenumber getfirstcharacter doifelsefirstchar doiffirstcharelse startnointerference \
+stopnointerference twodigits threedigits leftorright offinterlineskip \
+oninterlineskip nointerlineskip strut halfstrut quarterstrut \
+depthstrut halflinestrut noheightstrut setstrut strutbox \
+strutht strutdp strutwd struthtdp strutgap \
+begstrut endstrut lineheight leftboundary rightboundary \
+signalcharacter shiftbox vpackbox hpackbox vpackedbox \
+hpackedbox ordordspacing ordopspacing ordbinspacing ordrelspacing \
+ordopenspacing ordclosespacing ordpunctspacing ordinnerspacing opordspacing \
+opopspacing opbinspacing oprelspacing opopenspacing opclosespacing \
+oppunctspacing opinnerspacing binordspacing binopspacing binbinspacing \
+binrelspacing binopenspacing binclosespacing binpunctspacing bininnerspacing \
+relordspacing relopspacing relbinspacing relrelspacing relopenspacing \
+relclosespacing relpunctspacing relinnerspacing openordspacing openopspacing \
+openbinspacing openrelspacing openopenspacing openclosespacing openpunctspacing \
+openinnerspacing closeordspacing closeopspacing closebinspacing closerelspacing \
+closeopenspacing closeclosespacing closepunctspacing closeinnerspacing punctordspacing \
+punctopspacing punctbinspacing punctrelspacing punctopenspacing punctclosespacing \
+punctpunctspacing punctinnerspacing innerordspacing inneropspacing innerbinspacing \
+innerrelspacing inneropenspacing innerclosespacing innerpunctspacing innerinnerspacing \
+normalreqno startimath stopimath normalstartimath normalstopimath \
+startdmath stopdmath normalstartdmath normalstopdmath normalsuperscript \
+normalsubscript normalnosuperscript normalnosubscript superscript subscript \
+nosuperscript nosubscript superprescript subprescript nosuperprescript \
+nosubsprecript uncramped cramped mathstyletrigger triggermathstyle \
+mathstylefont mathsmallstylefont mathstyleface mathsmallstyleface mathstylecommand \
+mathpalette mathstylehbox mathstylevbox mathstylevcenter mathstylevcenteredhbox \
+mathstylevcenteredvbox mathtext setmathsmalltextbox setmathtextbox pushmathstyle \
+popmathstyle triggerdisplaystyle triggertextstyle triggerscriptstyle triggerscriptscriptstyle \
+triggeruncrampedstyle triggercrampedstyle triggersmallstyle triggeruncrampedsmallstyle triggercrampedsmallstyle \
+triggerbigstyle triggeruncrampedbigstyle triggercrampedbigstyle luaexpr expelsedoif \
+expdoif expdoifnot expdoifelsecommon expdoifcommonelse expdoifelseinset \
+expdoifinsetelse ctxdirectlua ctxlatelua ctxsprint ctxwrite \
+ctxcommand ctxdirectcommand ctxlatecommand ctxreport ctxlua \
+luacode lateluacode directluacode registerctxluafile ctxloadluafile \
+luaversion luamajorversion luaminorversion ctxluacode luaconditional \
+luaexpanded ctxluamatch startluaparameterset stopluaparameterset luaparameterset \
+definenamedlua obeylualines obeyluatokens startluacode stopluacode \
+startlua stoplua startctxfunction stopctxfunction ctxfunction \
+startctxfunctiondefinition stopctxfunctiondefinition installctxfunction installprotectedctxfunction installprotectedctxscanner \
+installctxscanner resetctxscanner cldprocessfile cldloadfile cldloadviafile \
+cldcontext cldcommand carryoverpar freezeparagraphproperties defrostparagraphproperties \
+setparagraphfreezing forgetparagraphfreezing updateparagraphproperties updateparagraphpenalties updateparagraphdemerits \
+updateparagraphshapes updateparagraphlines lastlinewidth assumelongusagecs Umathbotaccent \
+Umathtopaccent righttolefthbox lefttorighthbox righttoleftvbox lefttorightvbox \
+righttoleftvtop lefttorightvtop rtlhbox ltrhbox rtlvbox \
+ltrvbox rtlvtop ltrvtop autodirhbox autodirvbox \
+autodirvtop leftorrighthbox leftorrightvbox leftorrightvtop lefttoright \
+righttoleft checkedlefttoright checkedrighttoleft synchronizelayoutdirection synchronizedisplaydirection \
+synchronizeinlinedirection dirlre dirrle dirlro dirrlo \
+lesshyphens morehyphens nohyphens dohyphens compounddiscretionary \
+Ucheckedstartdisplaymath Ucheckedstopdisplaymath break nobreak allowbreak \
+goodbreak nospace nospacing dospacing naturalhbox \
+naturalvbox naturalvtop naturalhpack naturalvpack naturaltpack \
+reversehbox reversevbox reversevtop reversehpack reversevpack \
+reversetpack frule compoundhyphenpenalty start stop \
+unsupportedcs openout closeout write openin \
+closein read readline readfromterminal boxlines \
+boxline setboxline copyboxline boxlinewd boxlineht \
+boxlinedp boxlinenw boxlinenh boxlinend boxlinels \
+boxliners boxlinelh boxlinerh boxlinelp boxlinerp \
+boxlinein boxrangewd boxrangeht boxrangedp bitwiseset \
+bitwiseand bitwiseor bitwisexor bitwisenot bitwisenil \
+ifbitwiseand bitwise bitwiseshift bitwiseflip textdir \
+linedir pardir boxdir prelistbox postlistbox \
+prelistcopy postlistcopy setprelistbox setpostlistbox noligaturing \
+nokerning noexpansion noprotrusion noleftkerning noleftligaturing \
+norightkerning norightligaturing futureletnexttoken defbackslashbreak letbackslashbreak \
+pushoverloadmode popoverloadmode suggestedalias newlocalcount newlocaldimen \
+newlocalskip newlocalmuskip newlocaltoks newlocalbox newlocalwrite \
+newlocalread setnewlocalcount setnewlocaldimen setnewlocalskip setnewlocalmuskip \
+setnewlocaltoks setnewlocalbox
diff --git a/context/data/textadept/context/data/scite-context-data-context.lua b/context/data/textadept/context/data/scite-context-data-context.lua
index 931ac1611..46c2f46d6 100644
--- a/context/data/textadept/context/data/scite-context-data-context.lua
+++ b/context/data/textadept/context/data/scite-context-data-context.lua
@@ -1,4 +1,4 @@
return {
["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "pluseleven", "plustwelve", "plussixteen", "plusfifty", "plushundred", "plusonehundred", "plustwohundred", "plusfivehundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "maxcardminusone", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxcount", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "texenginefunctionality", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "contextformat", "contextversion", "contextlmtxmode", "contextmark", "mksuffix", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "statuswrite", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "ctdcatcodes", "rlncatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "commaasciicode", "spaceasciicode", "periodasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "leftparentasciicode", "rightparentasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "hyphenasciicode", "percentasciicode", "leftbracketasciicode", "rightbracketasciicode", "frozenhsizecode", "frozenskipcode", "frozenhangcode", "frozenindentcode", "frozenparfillcode", "frozenadjustcode", "frozenprotrudecode", "frozentolerancecode", "frozenstretchcode", "frozenloosenesscode", "frozenlastlinecode", "frozenlinepenaltycode", "frozenclubpenaltycode", "frozenwidowpenaltycode", "frozendisplaypenaltycode", "frozenbrokenpenaltycode", "frozendemeritscode", "frozenshapecode", "frozenlinecode", "frozenallcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "charnodecode", "hlistnodecode", "vlistnodecode", "rulenodecode", "insertnodecode", "marknodecode", "adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode", "gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "mathexheight", "mathemwidth", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathaxisheight", "muquad", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifelsemode", "doifmodeelse", "doifnotmode", "startmodeset", "stopmodeset", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifelseallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "unexpandeddocumentvariable", "setupdocument", "presetdocument", "doifelsedocumentvariable", "doifdocumentvariableelse", "doifdocumentvariable", "doifnotdocumentvariable", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "setupmodule", "currentmoduleparameter", "moduleparameter", "everystarttext", "everystoptext", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "definemode", "globalenablemode", "globaldisablemode", "globalpreventmode", "pushmode", "popmode", "typescriptone", "typescripttwo", "typescriptthree", "mathsizesuffix", "mathordcode", "mathopcode", "mathbincode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctcode", "mathalphacode", "mathinnercode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathboxcode", "mathchoicecode", "mathaccentcode", "mathradicalcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "continueifinputfile", "luastringsep", "!!bs", "!!es", "lefttorightmark", "righttoleftmark", "lrm", "rlm", "bidilre", "bidirle", "bidipop", "bidilro", "bidirlo", "breakablethinspace", "nobreakspace", "nonbreakablespace", "narrownobreakspace", "zerowidthnobreakspace", "ideographicspace", "ideographichalffillspace", "twoperemspace", "threeperemspace", "fourperemspace", "fiveperemspace", "sixperemspace", "figurespace", "punctuationspace", "hairspace", "enquad", "emquad", "zerowidthspace", "zerowidthnonjoiner", "zerowidthjoiner", "zwnj", "zwj", "optionalspace", "asciispacechar", "softhyphen", "Ux", "eUx", "Umathaccents", "parfillleftskip", "parfillrightskip", "startlmtxmode", "stoplmtxmode", "startmkivmode", "stopmkivmode", "wildcardsymbol", "normalhyphenationmodecode", "automatichyphenationmodecode", "explicithyphenationmodecode", "syllablehyphenationmodecode", "uppercasehyphenationmodecode", "completehyphenationmodecode", "compoundhyphenationmodecode", "strictstarthyphenationmodecode", "strictendhyphenationmodecode", "automaticpenaltyhyphenationmodecode", "explicitpenaltyhyphenationmodecode", "permitgluehyphenationmodecode", "permitallhyphenationmodecode", "permitmathreplacehyphenationmodecode", "normalizelinecode", "parindentskipcode", "swaphangindentcode", "swapparsshapecode", "breakafterdircode", "removemarginkernscode", "clipwidthcode", "noligaturingcode", "nokerningcode", "noleftligaturecode", "noleftkerncode", "norightligaturecode", "norightkerncode", "noexpansioncode", "noprotrusioncode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "continuewhenlmtxmode" },
- ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "startcontextdefinitioncode", "stopcontextdefinitioncode", "texdefinition", "doifelsesetups", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "fastsetup", "copysetups", "resetsetups", "doifelsecommandhandler", "doifcommandhandlerelse", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "globalsetmode", "globalresetmode", "globalsetsystemmode", "globalresetsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "autorule", "strippedcsname", "checkedstrippedcsname", "nofarguments", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthargumenttrue", "sixthargumentfalse", "sixthargumenttrue", "seventhargumentfalse", "seventhargumenttrue", "vkern", "hkern", "vpenalty", "hpenalty", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "dontcomplain", "forgetall", "donetrue", "donefalse", "foundtrue", "foundfalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "startpickupmath", "stoppickupmath", "reqno", "mathortext", "thebox", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilll", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "normalhfilllneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilll", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "normalvfilllneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledmbox", "ruledhpack", "ruledvpack", "ruledtpack", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchstringone", "scratchstringtwo", "tempstring", "scratchcounter", "globalscratchcounter", "privatescratchcounter", "scratchdimen", "globalscratchdimen", "privatescratchdimen", "scratchskip", "globalscratchskip", "privatescratchskip", "scratchmuskip", "globalscratchmuskip", "privatescratchmuskip", "scratchtoks", "globalscratchtoks", "privatescratchtoks", "scratchbox", "globalscratchbox", "privatescratchbox", "scratchmacro", "scratchmacroone", "scratchmacrotwo", "scratchconditiontrue", "scratchconditionfalse", "ifscratchcondition", "scratchconditiononetrue", "scratchconditiononefalse", "ifscratchconditionone", "scratchconditiontwotrue", "scratchconditiontwofalse", "ifscratchconditiontwo", "globalscratchcounterone", "globalscratchcountertwo", "globalscratchcounterthree", "groupedcommand", "groupedcommandcs", "triggergroupedcommand", "triggergroupedcommandcs", "simplegroupedcommand", "pickupgroupedcommand", "usedbaselineskip", "usedlineskip", "usedlineskiplimit", "availablehsize", "localhsize", "setlocalhsize", "distributedhsize", "hsizefraction", "next", "nexttoken", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "flushnextbox", "boxisempty", "givenwidth", "givenheight", "givendepth", "scangivendimensions", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchtotal", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchcounterfour", "scratchcounterfive", "scratchcountersix", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchdimenfour", "scratchdimenfive", "scratchdimensix", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchskipfour", "scratchskipfive", "scratchskipsix", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchmuskipfour", "scratchmuskipfive", "scratchmuskipsix", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchtoksfour", "scratchtoksfive", "scratchtokssix", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchboxfour", "scratchboxfive", "scratchboxsix", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchmin", "scratchmax", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "firstinset", "doifinset", "doifnotinset", "doifelseinset", "doifinsetelse", "doifelsenextchar", "doifnextcharelse", "doifelsenextcharcs", "doifnextcharcselse", "doifelsenextoptional", "doifnextoptionalelse", "doifelsenextoptionalcs", "doifnextoptionalcselse", "doifelsefastoptionalcheck", "doiffastoptionalcheckelse", "doifelsefastoptionalcheckcs", "doiffastoptionalcheckcselse", "doifelsenextbgroup", "doifnextbgroupelse", "doifelsenextbgroupcs", "doifnextbgroupcselse", "doifelsenextparenthesis", "doifnextparenthesiselse", "doifelseundefined", "doifundefinedelse", "doifelsedefined", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifnothingelse", "doifelsesomething", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifvaluenothingelse", "doifelsedimension", "doifdimensionelse", "doifelsenumber", "doifnumberelse", "doifnumber", "doifnotnumber", "doifelsecommon", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifelseinstring", "doifinstringelse", "doifelseassignment", "doifassignmentelse", "docheckassignment", "doifelseassignmentcs", "doifassignmentelsecs", "validassignment", "novalidassignment", "doiftext", "doifelsetext", "doiftextelse", "doifnottext", "quitcondition", "truecondition", "falsecondition", "tracingall", "tracingnone", "loggingall", "showluatokens", "aliasmacro", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "emspace", "charspace", "nbsp", "crlf", "obeyspaces", "obeylines", "obeytabs", "obeypages", "obeyedspace", "obeyedline", "obeyedtab", "obeyedpage", "normalspace", "naturalspace", "controlspace", "normalspaces", "ignoretabs", "ignorelines", "ignorepages", "ignoreeofs", "setcontrolspaces", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "removepunctuation", "ignoreparskip", "forcestrutdepth", "onlynonbreakablespace", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "directmeasure", "setquantity", "setequantity", "setgquantity", "setxquantity", "definequantity", "freezequantity", "quantity", "quantitied", "directquantity", "installcorenamespace", "getvalue", "getuvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "setexpandeddummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "firstoftwounexpanded", "secondoftwounexpanded", "firstofthreeunexpanded", "secondofthreeunexpanded", "thirdofthreeunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "fastloopindex", "fastloopfinal", "dowith", "doloopovermatch", "doloopovermatched", "doloopoverlist", "newconstant", "setnewconstant", "setconstant", "setconstantvalue", "newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "setconditional", "newmacro", "setnewmacro", "newfraction", "newsignal", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "onlypdfobjectcompression", "nopdfobjectcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doifelsefirstchar", "doiffirstcharelse", "startnointerference", "stopnointerference", "twodigits", "threedigits", "leftorright", "offinterlineskip", "oninterlineskip", "nointerlineskip", "strut", "halfstrut", "quarterstrut", "depthstrut", "halflinestrut", "noheightstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "strutgap", "begstrut", "endstrut", "lineheight", "leftboundary", "rightboundary", "signalcharacter", "shiftbox", "vpackbox", "hpackbox", "vpackedbox", "hpackedbox", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "normalsuperscript", "normalsubscript", "normalnosuperscript", "normalnosubscript", "superscript", "subscript", "nosuperscript", "nosubscript", "superprescript", "subprescript", "nosuperprescript", "nosubsprecript", "uncramped", "cramped", "mathstyletrigger", "triggermathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "pushmathstyle", "popmathstyle", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expelsedoif", "expdoif", "expdoifnot", "expdoifelsecommon", "expdoifcommonelse", "expdoifelseinset", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "ctxluamatch", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "startctxfunction", "stopctxfunction", "ctxfunction", "startctxfunctiondefinition", "stopctxfunctiondefinition", "installctxfunction", "installprotectedctxfunction", "installprotectedctxscanner", "installctxscanner", "resetctxscanner", "cldprocessfile", "cldloadfile", "cldloadviafile", "cldcontext", "cldcommand", "carryoverpar", "freezeparagraphproperties", "defrostparagraphproperties", "setparagraphfreezing", "forgetparagraphfreezing", "updateparagraphproperties", "updateparagraphpenalties", "updateparagraphdemerits", "updateparagraphshapes", "updateparagraphlines", "lastlinewidth", "assumelongusagecs", "Umathbotaccent", "Umathtopaccent", "righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop", "rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop", "autodirhbox", "autodirvbox", "autodirvtop", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "lefttoright", "righttoleft", "checkedlefttoright", "checkedrighttoleft", "synchronizelayoutdirection", "synchronizedisplaydirection", "synchronizeinlinedirection", "dirlre", "dirrle", "dirlro", "dirrlo", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "compounddiscretionary", "Ucheckedstartdisplaymath", "Ucheckedstopdisplaymath", "break", "nobreak", "allowbreak", "goodbreak", "nospace", "nospacing", "dospacing", "naturalhbox", "naturalvbox", "naturalvtop", "naturalhpack", "naturalvpack", "naturaltpack", "reversehbox", "reversevbox", "reversevtop", "reversehpack", "reversevpack", "reversetpack", "frule", "compoundhyphenpenalty", "start", "stop", "unsupportedcs", "openout", "closeout", "write", "openin", "closein", "read", "readline", "readfromterminal", "boxlines", "boxline", "setboxline", "copyboxline", "boxlinewd", "boxlineht", "boxlinedp", "boxlinenw", "boxlinenh", "boxlinend", "boxlinels", "boxliners", "boxlinelh", "boxlinerh", "boxlinelp", "boxlinerp", "boxlinein", "boxrangewd", "boxrangeht", "boxrangedp", "bitwiseset", "bitwiseand", "bitwiseor", "bitwisexor", "bitwisenot", "bitwisenil", "ifbitwiseand", "bitwise", "bitwiseshift", "bitwiseflip", "textdir", "linedir", "pardir", "boxdir", "prelistbox", "postlistbox", "prelistcopy", "postlistcopy", "setprelistbox", "setpostlistbox", "noligaturing", "nokerning", "noexpansion", "noprotrusion", "noleftkerning", "noleftligaturing", "norightkerning", "norightligaturing", "futureletnexttoken", "defbackslashbreak", "letbackslashbreak", "pushoverloadmode", "popoverloadmode", "suggestedalias" },
+ ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "startcontextdefinitioncode", "stopcontextdefinitioncode", "texdefinition", "doifelsesetups", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "fastsetup", "copysetups", "resetsetups", "doifelsecommandhandler", "doifcommandhandlerelse", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "globalsetmode", "globalresetmode", "globalsetsystemmode", "globalresetsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "autorule", "strippedcsname", "checkedstrippedcsname", "nofarguments", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthargumenttrue", "sixthargumentfalse", "sixthargumenttrue", "seventhargumentfalse", "seventhargumenttrue", "vkern", "hkern", "vpenalty", "hpenalty", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "dontcomplain", "forgetall", "donetrue", "donefalse", "foundtrue", "foundfalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "startpickupmath", "stoppickupmath", "reqno", "mathortext", "thebox", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilll", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "normalhfilllneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilll", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "normalvfilllneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledmbox", "ruledhpack", "ruledvpack", "ruledtpack", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchstring", "scratchstringone", "scratchstringtwo", "tempstring", "scratchcounter", "globalscratchcounter", "privatescratchcounter", "scratchdimen", "globalscratchdimen", "privatescratchdimen", "scratchskip", "globalscratchskip", "privatescratchskip", "scratchmuskip", "globalscratchmuskip", "privatescratchmuskip", "scratchtoks", "globalscratchtoks", "privatescratchtoks", "scratchbox", "globalscratchbox", "privatescratchbox", "scratchmacro", "scratchmacroone", "scratchmacrotwo", "scratchconditiontrue", "scratchconditionfalse", "ifscratchcondition", "scratchconditiononetrue", "scratchconditiononefalse", "ifscratchconditionone", "scratchconditiontwotrue", "scratchconditiontwofalse", "ifscratchconditiontwo", "globalscratchcounterone", "globalscratchcountertwo", "globalscratchcounterthree", "groupedcommand", "groupedcommandcs", "triggergroupedcommand", "triggergroupedcommandcs", "simplegroupedcommand", "pickupgroupedcommand", "usedbaselineskip", "usedlineskip", "usedlineskiplimit", "availablehsize", "localhsize", "setlocalhsize", "distributedhsize", "hsizefraction", "next", "nexttoken", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "flushnextbox", "boxisempty", "givenwidth", "givenheight", "givendepth", "scangivendimensions", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchtotal", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchcounterfour", "scratchcounterfive", "scratchcountersix", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchdimenfour", "scratchdimenfive", "scratchdimensix", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchskipfour", "scratchskipfive", "scratchskipsix", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchmuskipfour", "scratchmuskipfive", "scratchmuskipsix", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchtoksfour", "scratchtoksfive", "scratchtokssix", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchboxfour", "scratchboxfive", "scratchboxsix", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchmin", "scratchmax", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "firstinset", "doifinset", "doifnotinset", "doifelseinset", "doifinsetelse", "doifelsenextchar", "doifnextcharelse", "doifelsenextcharcs", "doifnextcharcselse", "doifelsenextoptional", "doifnextoptionalelse", "doifelsenextoptionalcs", "doifnextoptionalcselse", "doifelsefastoptionalcheck", "doiffastoptionalcheckelse", "doifelsefastoptionalcheckcs", "doiffastoptionalcheckcselse", "doifelsenextbgroup", "doifnextbgroupelse", "doifelsenextbgroupcs", "doifnextbgroupcselse", "doifelsenextparenthesis", "doifnextparenthesiselse", "doifelseundefined", "doifundefinedelse", "doifelsedefined", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifnothingelse", "doifelsesomething", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifvaluenothingelse", "doifelsedimension", "doifdimensionelse", "doifelsenumber", "doifnumberelse", "doifnumber", "doifnotnumber", "doifelsecommon", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifelseinstring", "doifinstringelse", "doifelseassignment", "doifassignmentelse", "docheckassignment", "doifelseassignmentcs", "doifassignmentelsecs", "validassignment", "novalidassignment", "doiftext", "doifelsetext", "doiftextelse", "doifnottext", "quitcondition", "truecondition", "falsecondition", "tracingall", "tracingnone", "loggingall", "showluatokens", "aliasmacro", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "emspace", "charspace", "nbsp", "crlf", "obeyspaces", "obeylines", "obeytabs", "obeypages", "obeyedspace", "obeyedline", "obeyedtab", "obeyedpage", "normalspace", "naturalspace", "controlspace", "normalspaces", "ignoretabs", "ignorelines", "ignorepages", "ignoreeofs", "setcontrolspaces", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "removepunctuation", "ignoreparskip", "forcestrutdepth", "onlynonbreakablespace", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "directmeasure", "setquantity", "setequantity", "setgquantity", "setxquantity", "definequantity", "freezequantity", "quantity", "quantitied", "directquantity", "installcorenamespace", "getvalue", "getuvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "setexpandeddummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "firstoftwounexpanded", "secondoftwounexpanded", "firstofthreeunexpanded", "secondofthreeunexpanded", "thirdofthreeunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "fastloopindex", "fastloopfinal", "dowith", "doloopovermatch", "doloopovermatched", "doloopoverlist", "newconstant", "setnewconstant", "setconstant", "setconstantvalue", "newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "setconditional", "newmacro", "setnewmacro", "newfraction", "newsignal", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "onlypdfobjectcompression", "nopdfobjectcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doifelsefirstchar", "doiffirstcharelse", "startnointerference", "stopnointerference", "twodigits", "threedigits", "leftorright", "offinterlineskip", "oninterlineskip", "nointerlineskip", "strut", "halfstrut", "quarterstrut", "depthstrut", "halflinestrut", "noheightstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "strutgap", "begstrut", "endstrut", "lineheight", "leftboundary", "rightboundary", "signalcharacter", "shiftbox", "vpackbox", "hpackbox", "vpackedbox", "hpackedbox", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "normalsuperscript", "normalsubscript", "normalnosuperscript", "normalnosubscript", "superscript", "subscript", "nosuperscript", "nosubscript", "superprescript", "subprescript", "nosuperprescript", "nosubsprecript", "uncramped", "cramped", "mathstyletrigger", "triggermathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "pushmathstyle", "popmathstyle", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expelsedoif", "expdoif", "expdoifnot", "expdoifelsecommon", "expdoifcommonelse", "expdoifelseinset", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "ctxluamatch", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "startctxfunction", "stopctxfunction", "ctxfunction", "startctxfunctiondefinition", "stopctxfunctiondefinition", "installctxfunction", "installprotectedctxfunction", "installprotectedctxscanner", "installctxscanner", "resetctxscanner", "cldprocessfile", "cldloadfile", "cldloadviafile", "cldcontext", "cldcommand", "carryoverpar", "freezeparagraphproperties", "defrostparagraphproperties", "setparagraphfreezing", "forgetparagraphfreezing", "updateparagraphproperties", "updateparagraphpenalties", "updateparagraphdemerits", "updateparagraphshapes", "updateparagraphlines", "lastlinewidth", "assumelongusagecs", "Umathbotaccent", "Umathtopaccent", "righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop", "rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop", "autodirhbox", "autodirvbox", "autodirvtop", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "lefttoright", "righttoleft", "checkedlefttoright", "checkedrighttoleft", "synchronizelayoutdirection", "synchronizedisplaydirection", "synchronizeinlinedirection", "dirlre", "dirrle", "dirlro", "dirrlo", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "compounddiscretionary", "Ucheckedstartdisplaymath", "Ucheckedstopdisplaymath", "break", "nobreak", "allowbreak", "goodbreak", "nospace", "nospacing", "dospacing", "naturalhbox", "naturalvbox", "naturalvtop", "naturalhpack", "naturalvpack", "naturaltpack", "reversehbox", "reversevbox", "reversevtop", "reversehpack", "reversevpack", "reversetpack", "frule", "compoundhyphenpenalty", "start", "stop", "unsupportedcs", "openout", "closeout", "write", "openin", "closein", "read", "readline", "readfromterminal", "boxlines", "boxline", "setboxline", "copyboxline", "boxlinewd", "boxlineht", "boxlinedp", "boxlinenw", "boxlinenh", "boxlinend", "boxlinels", "boxliners", "boxlinelh", "boxlinerh", "boxlinelp", "boxlinerp", "boxlinein", "boxrangewd", "boxrangeht", "boxrangedp", "bitwiseset", "bitwiseand", "bitwiseor", "bitwisexor", "bitwisenot", "bitwisenil", "ifbitwiseand", "bitwise", "bitwiseshift", "bitwiseflip", "textdir", "linedir", "pardir", "boxdir", "prelistbox", "postlistbox", "prelistcopy", "postlistcopy", "setprelistbox", "setpostlistbox", "noligaturing", "nokerning", "noexpansion", "noprotrusion", "noleftkerning", "noleftligaturing", "norightkerning", "norightligaturing", "futureletnexttoken", "defbackslashbreak", "letbackslashbreak", "pushoverloadmode", "popoverloadmode", "suggestedalias", "newlocalcount", "newlocaldimen", "newlocalskip", "newlocalmuskip", "newlocaltoks", "newlocalbox", "newlocalwrite", "newlocalread", "setnewlocalcount", "setnewlocaldimen", "setnewlocalskip", "setnewlocalmuskip", "setnewlocaltoks", "setnewlocalbox" },
} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
index f4ea089cf..efcd6fbde 100644
--- a/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
@@ -88,7 +88,7 @@
"name" : "context.grouping.symbols.groups.tex"
},
"helper" : {
- "match" : "\u005C\u005C(xmlsetup|writestatus|write|wait|vpenalty|vpackedbox|vpackbox|vkern|vglue|vfillneg|vfilllneg|vfilll|validassignment|uxdef|usedummystyleparameter|usedummystyleandcolor|usedummycolorparameter|usedlineskiplimit|usedlineskip|usedbaselineskip|updateparagraphshapes|updateparagraphproperties|updateparagraphpenalties|updateparagraphlines|updateparagraphdemerits|unvoidbox|unsupportedcs|unprotect|unique|unexpanded|undefinevalue|uncramped|ugdef|uedef|uedcatcodecommand|udef|twodigits|truecondition|tripleexpandafter|triggeruncrampedstyle|triggeruncrampedsmallstyle|triggeruncrampedbigstyle|triggertextstyle|triggersmallstyle|triggerscriptstyle|triggerscriptscriptstyle|triggermathstyle|triggergroupedcommandcs|triggergroupedcommand|triggerdisplaystyle|triggercrampedstyle|triggercrampedsmallstyle|triggercrampedbigstyle|triggerbigstyle|tracingnone|tracingall|to|threedigits|thirdofthreeunexpanded|thirdofthreearguments|thirdofsixarguments|thirdoffourarguments|thirdoffivearguments|thirdargumenttrue|thirdargumentfalse|then|thebox|textdir|texsetup|texdefinition|tempstring|synchronizelayoutdirection|synchronizeinlinedirection|synchronizedisplaydirection|superscript|superprescript|suggestedalias|subscript|subprescript|strutwd|struthtdp|strutht|strutgap|strutdp|strutbox|strut|strippedcsname|stopxmlsetups|stoptexsetups|stoptexdefinition|stoptexcode|stopsetups|stoprawsetups|stoppickupmath|stopnointerference|stopluasetups|stopluaparameterset|stopluacode|stoplua|stoplocalsetups|stopimath|stopforceddisplaymath|stopextendcatcodetable|stopexpanded|stopdmath|stopctxfunctiondefinition|stopctxfunction|stopcontextdefinitioncode|stopcontextcode|stopcatcodetable|stop|startxmlsetups|starttexsetups|starttexdefinition|starttexcode|startsetups|startrawsetups|startpickupmath|startnointerference|startluasetups|startluaparameterset|startluacode|startlua|startlocalsetups|startimath|startforceddisplaymath|startextendcatcodetable|startexpanded|startdmath|startctxfunctiondefinition|startctxfunction|startcontextdefinitioncode|startcontextcode|startcatcodetable|start|space|sixthofsixarguments|sixthargumenttrue|sixthargumentfalse|singleexpandafter|simplegroupedcommand|signalcharacter|showluatokens|shiftbox|seventhargumenttrue|seventhargumentfalse|setxvalue|setxquantity|setxmeasure|setvalue|setuxvalue|setuvalue|setups|setup|setugvalue|setuevalue|settruevalue|settrue|setsystemmode|setstrut|setquantity|setprelistbox|setpostlistbox|setparagraphfreezing|setnewmacro|setnewconstant|setmode|setmeasure|setmathtextbox|setmathsmalltextbox|setlocalhsize|setgvalue|setgquantity|setgmeasure|setfalsevalue|setfalse|setexpandeddummyparameter|setevalue|setequantity|setemeasure|setdummyparameter|setcontrolspaces|setconstantvalue|setconstant|setconditional|setcatcodetable|setboxline|secondoftwounexpanded|secondoftwoarguments|secondofthreeunexpanded|secondofthreearguments|secondofsixarguments|secondoffourarguments|secondoffivearguments|secondargumenttrue|secondargumentfalse|scratchyposition|scratchyoffset|scratchxposition|scratchxoffset|scratchwidth|scratchvsize|scratchvoffset|scratchunicode|scratchtotal|scratchtopskip|scratchtopoffset|scratchtokstwo|scratchtoksthree|scratchtokssix|scratchtoksone|scratchtoksfour|scratchtoksfive|scratchtoks|scratchstringtwo|scratchstringone|scratchskiptwo|scratchskipthree|scratchskipsix|scratchskipone|scratchskipfour|scratchskipfive|scratchskip|scratchrightskip|scratchrightoffset|scratchoffset|scratchny|scratchnx|scratchmy|scratchmx|scratchmuskiptwo|scratchmuskipthree|scratchmuskipsix|scratchmuskipone|scratchmuskipfour|scratchmuskipfive|scratchmuskip|scratchmin|scratchmax|scratchmacrotwo|scratchmacroone|scratchmacro|scratchleftskip|scratchleftoffset|scratchhsize|scratchhoffset|scratchheight|scratchdistance|scratchdimentwo|scratchdimenthree|scratchdimensix|scratchdimenone|scratchdimenfour|scratchdimenfive|scratchdimen|scratchdepth|scratchcountertwo|scratchcounterthree|scratchcountersix|scratchcounterone|scratchcounterfour|scratchcounterfive|scratchcounter|scratchconditiontwotrue|scratchconditiontwofalse|scratchconditiontrue|scratchconditiononetrue|scratchconditiononefalse|scratchconditionfalse|scratchboxtwo|scratchboxthree|scratchboxsix|scratchboxone|scratchboxfour|scratchboxfive|scratchbox|scratchbottomskip|scratchbottomoffset|scangivendimensions|ruledvtop|ruledvss|ruledvskip|ruledvpack|ruledvglue|ruledvfilneg|ruledvfillneg|ruledvfilll|ruledvfill|ruledvfil|ruledvcenter|ruledvbox|ruledtpack|ruledpenalty|ruledmskip|ruledmkern|ruledmbox|ruledkern|ruledhss|ruledhskip|ruledhpack|ruledhglue|ruledhfilneg|ruledhfillneg|ruledhfilll|ruledhfill|ruledhfil|ruledhbox|rtlvtop|rtlvbox|rtlhbox|righttoleftvtop|righttoleftvbox|righttolefthbox|righttoleft|rightboundary|reversevtop|reversevpack|reversevbox|reversetpack|reversehpack|reversehbox|restorecatcodes|resetvalue|resetsystemmode|resetsetups|resetmode|resetglobal|reseteverypar|resetctxscanner|reqno|removeunwantedspaces|removetoks|removepunctuation|removelastspace|relrelspacing|relpunctspacing|relordspacing|relopspacing|relopenspacing|relinnerspacing|relclosespacing|relbinspacing|registerctxluafile|redoglobal|redefine|recurselevel|recursedepth|readline|readfromterminal|read|quitprevcommalist|quitcondition|quitcommalist|quarterstrut|quantity|quantitied|quad|pushsystemmode|pushoverloadmode|pushmathstyle|pushcatcodetable|punctrelspacing|punctpunctspacing|punctordspacing|punctopspacing|punctopenspacing|punctinnerspacing|punctclosespacing|punctbinspacing|protect|processfirstactioninset|processcommalist|processcommacommand|processallactionsinset|processallactions|processaction|privatescratchtoks|privatescratchskip|privatescratchmuskip|privatescratchdimen|privatescratchcounter|privatescratchbox|prependtotoks|prependtoks|prelistcopy|prelistbox|postlistcopy|postlistbox|popsystemmode|popoverloadmode|popmathstyle|popcatcodetable|pickupgroupedcommand|permitspacesbetweengroups|pardir|ordrelspacing|ordpunctspacing|ordordspacing|ordopspacing|ordopenspacing|ordinnerspacing|ordclosespacing|ordbinspacing|oprelspacing|oppunctspacing|opordspacing|opopspacing|opopenspacing|opinnerspacing|openrelspacing|openpunctspacing|openout|openordspacing|openopspacing|openopenspacing|openinnerspacing|openin|openclosespacing|openbinspacing|opclosespacing|opbinspacing|onlypdfobjectcompression|onlynonbreakablespace|oninterlineskip|offinterlineskip|obeytabs|obeyspaces|obeypages|obeyluatokens|obeylualines|obeylines|obeyedtab|obeyedspace|obeyedpage|obeyedline|null|novalidassignment|nosuperscript|nosuperprescript|nosubsprecript|nosubscript|nospacing|nospace|normalvglue|normalvfillneg|normalvfilllneg|normalsuperscript|normalsubscript|normalstopimath|normalstopdmath|normalstartimath|normalstartdmath|normalspaces|normalspace|normalreqno|normalpdfcompression|normalnosuperscript|normalnosubscript|normalhglue|normalhfillneg|normalhfilllneg|norightligaturing|norightkerning|noprotrusion|nopdfobjectcompression|nopdfcompression|noligaturing|noleftligaturing|noleftkerning|nokerning|nointerlineskip|nohyphens|noheightstrut|nofarguments|noexpansion|nobreak|nexttoken|nextbox|next|newwrite|newtoks|newsystemmode|newskip|newsignal|newread|newmuskip|newmode|newmarks|newmacro|newlanguage|newinsert|newif|newhelp|newfraction|newfamily|newfam|newdimen|newcount|newconstant|newconditional|newcatcodetable|newbox|newattribute|nbsp|naturalvtop|naturalvpack|naturalvbox|naturaltpack|naturalspace|naturalhpack|naturalhbox|morehyphens|modulonumber|measured|measure|maximumpdfcompression|mathtext|mathstylevcenteredvbox|mathstylevcenteredhbox|mathstylevcenter|mathstylevbox|mathstyletrigger|mathstylehbox|mathstylefont|mathstyleface|mathstylecommand|mathsmallstylefont|mathsmallstyleface|mathpalette|mathortext|mathnothing|mathnolop|mathlimop|mathbox|mathalpha|luaversion|luasetup|luaparameterset|luaminorversion|luamajorversion|luaexpr|luaexpanded|luaconditional|luacode|ltrvtop|ltrvbox|ltrhbox|loggingall|localhsize|lineheight|linedir|letvalue|letgvalue|letdummyparameter|letcatcodecommand|letbackslashbreak|lesshyphens|lefttorightvtop|lefttorightvbox|lefttorighthbox|lefttoright|leftorrightvtop|leftorrightvbox|leftorrighthbox|leftorright|leftboundary|lateluacode|lastlinewidth|keepunwantedspaces|installprotectedctxscanner|installprotectedctxfunction|installctxscanner|installctxfunction|installcorenamespace|innerrelspacing|innerpunctspacing|innerordspacing|inneropspacing|inneropenspacing|innerinnerspacing|innerclosespacing|innerbinspacing|inlineordisplaymath|indisplaymath|ignorevalue|ignoretabs|ignoreparskip|ignorepages|ignorelines|ignoreeofs|ifscratchconditiontwo|ifscratchconditionone|ifscratchcondition|ifbitwiseand|htdp|hsizefraction|hpenalty|hpackedbox|hpackbox|hkern|hglue|hfillneg|hfilllneg|hfilll|halfstrut|halflinestrut|groupedcommandcs|groupedcommand|goodbreak|gobbletwooptionals|gobbletwoarguments|gobblethreeoptionals|gobblethreearguments|gobbletenarguments|gobblesixarguments|gobblesevenarguments|gobbleoneoptional|gobbleoneargument|gobbleninearguments|gobblefouroptionals|gobblefourarguments|gobblefiveoptionals|gobblefivearguments|gobbleeightarguments|globalsetsystemmode|globalsetmode|globalscratchtoks|globalscratchskip|globalscratchmuskip|globalscratchdimen|globalscratchcountertwo|globalscratchcounterthree|globalscratchcounterone|globalscratchcounter|globalscratchbox|globalresetsystemmode|globalresetmode|globallet|givenwidth|givenheight|givendepth|getxparameters|getvalue|getuvalue|getparameters|getgparameters|getfirstcharacter|geteparameters|getdummyparameters|futureletnexttoken|frule|freezequantity|freezeparagraphproperties|freezemeasure|fourthofsixarguments|fourthoffourarguments|fourthoffivearguments|fourthargumenttrue|fourthargumentfalse|foundtrue|foundfalse|forgetparameters|forgetparagraphfreezing|forgetall|forcestrutdepth|forcedisplaymath|flushnextbox|firstoftwounexpanded|firstoftwoarguments|firstofthreeunexpanded|firstofthreearguments|firstofsixarguments|firstofoneunexpanded|firstofoneargument|firstoffourarguments|firstoffivearguments|firstinset|firstargumenttrue|firstargumentfalse|finishpar|filledhboxy|filledhboxr|filledhboxm|filledhboxk|filledhboxg|filledhboxc|filledhboxb|fifthofsixarguments|fifthoffivearguments|fifthargumenttrue|fifthargumentfalse|fastsetup|fastloopindex|fastloopfinal|falsecondition|expelsedoif|expdoifnot|expdoifinsetelse|expdoifelseinset|expdoifelsecommon|expdoifcommonelse|expdoif|expanded|exitloop|executeifdefined|enspace|endstrut|endpar|endgraf|emspace|empty|dummyparameter|dowithnextboxcs|dowithnextboxcontentcs|dowithnextboxcontent|dowithnextbox|dowith|doubleexpandafter|dotriplegroupempty|dotripleempty|dotripleargument|dostepwiserecurse|dospacing|dosixtupleempty|dosixtupleargument|dosinglegroupempty|dosingleempty|dosingleargument|doseventupleempty|doseventupleargument|dorecurse|doquintuplegroupempty|doquintupleempty|doquintupleargument|doquadruplegroupempty|doquadrupleempty|doquadrupleargument|dontpermitspacesbetweengroups|dontleavehmode|dontcomplain|donothing|donetrue|donefalse|doloopovermatched|doloopovermatch|doloopoverlist|doloop|doifvaluesomething|doifvaluenothingelse|doifvaluenothing|doifvalue|doifundefinedelse|doifundefined|doiftextelse|doiftext|doifsomethingelse|doifsomething|doifsetupselse|doifsetups|doifnumberelse|doifnumber|doifnotvalue|doifnottext|doifnotsetups|doifnotnumber|doifnotinstring|doifnotinset|doifnothingelse|doifnothing|doifnotcommon|doifnotcommandhandler|doifnot|doifnextparenthesiselse|doifnextoptionalelse|doifnextoptionalcselse|doifnextcharelse|doifnextcharcselse|doifnextbgroupelse|doifnextbgroupcselse|doifinstringelse|doifinstring|doifinsetelse|doifinset|doiffirstcharelse|doiffastoptionalcheckelse|doiffastoptionalcheckcselse|doifelsevaluenothing|doifelsevalue|doifelseundefined|doifelsetext|doifelsesomething|doifelsesetups|doifelsenumber|doifelsenothing|doifelsenextparenthesis|doifelsenextoptionalcs|doifelsenextoptional|doifelsenextcharcs|doifelsenextchar|doifelsenextbgroupcs|doifelsenextbgroup|doifelseinstring|doifelseinset|doifelsefirstchar|doifelsefastoptionalcheckcs|doifelsefastoptionalcheck|doifelsedimension|doifelsedefined|doifelsecommon|doifelsecommandhandler|doifelseassignmentcs|doifelseassignment|doifelse|doifdimensionelse|doifdefinedelse|doifdefined|doifcommonelse|doifcommon|doifcommandhandlerelse|doifcommandhandler|doifassignmentelsecs|doifassignmentelse|doif|dohyphens|doglobal|dofastloopcs|dodoublegroupempty|dodoubleempty|dodoubleargument|dodoglobal|docheckassignment|dividenumber|distributedhsize|dirrlo|dirrle|dirlro|dirlre|directsetup|directquantity|directmeasure|directluacode|directdummyparameter|depthstrut|defrostparagraphproperties|definequantity|definenamedlua|definemeasure|defineexpandable|define|defcatcodecommand|defbackslashbreak|defaultcatcodetable|currentcatcodetable|ctxwrite|ctxsprint|ctxreport|ctxluamatch|ctxluacode|ctxlua|ctxloadluafile|ctxlatelua|ctxlatecommand|ctxfunction|ctxdirectlua|ctxdirectcommand|ctxcommand|crlf|cramped|copysetups|copyparameters|copyboxline|controlspace|compoundhyphenpenalty|compounddiscretionary|closerelspacing|closepunctspacing|closeout|closeordspacing|closeopspacing|closeopenspacing|closeinnerspacing|closein|closeclosespacing|closebinspacing|cldprocessfile|cldloadviafile|cldloadfile|cldcontext|cldcommand|checkedstrippedcsname|checkedrighttoleft|checkedlefttoright|checked|charspace|catcodetablename|carryoverpar|break|boxrangewd|boxrangeht|boxrangedp|boxlinewd|boxlines|boxliners|boxlinerp|boxlinerh|boxlinenw|boxlinenh|boxlinend|boxlinels|boxlinelp|boxlinelh|boxlinein|boxlineht|boxlinedp|boxline|boxisempty|boxdir|booleanmodevalue|bitwisexor|bitwiseshift|bitwiseset|bitwiseor|bitwisenot|bitwisenil|bitwiseflip|bitwiseand|bitwise|binrelspacing|binpunctspacing|binordspacing|binopspacing|binopenspacing|bininnerspacing|binclosespacing|binbinspacing|begstrut|begcsname|availablehsize|autorule|autodirvtop|autodirvbox|autodirhbox|assumelongusagecs|appendtotoks|appendtoks|allowbreak|aliasmacro|Umathtopaccent|Umathbotaccent|Ucheckedstopdisplaymath|Ucheckedstartdisplaymath)(?=[^a-zA-Z])",
+ "match" : "\u005C\u005C(xmlsetup|writestatus|write|wait|vpenalty|vpackedbox|vpackbox|vkern|vglue|vfillneg|vfilllneg|vfilll|validassignment|uxdef|usedummystyleparameter|usedummystyleandcolor|usedummycolorparameter|usedlineskiplimit|usedlineskip|usedbaselineskip|updateparagraphshapes|updateparagraphproperties|updateparagraphpenalties|updateparagraphlines|updateparagraphdemerits|unvoidbox|unsupportedcs|unprotect|unique|unexpanded|undefinevalue|uncramped|ugdef|uedef|uedcatcodecommand|udef|twodigits|truecondition|tripleexpandafter|triggeruncrampedstyle|triggeruncrampedsmallstyle|triggeruncrampedbigstyle|triggertextstyle|triggersmallstyle|triggerscriptstyle|triggerscriptscriptstyle|triggermathstyle|triggergroupedcommandcs|triggergroupedcommand|triggerdisplaystyle|triggercrampedstyle|triggercrampedsmallstyle|triggercrampedbigstyle|triggerbigstyle|tracingnone|tracingall|to|threedigits|thirdofthreeunexpanded|thirdofthreearguments|thirdofsixarguments|thirdoffourarguments|thirdoffivearguments|thirdargumenttrue|thirdargumentfalse|then|thebox|textdir|texsetup|texdefinition|tempstring|synchronizelayoutdirection|synchronizeinlinedirection|synchronizedisplaydirection|superscript|superprescript|suggestedalias|subscript|subprescript|strutwd|struthtdp|strutht|strutgap|strutdp|strutbox|strut|strippedcsname|stopxmlsetups|stoptexsetups|stoptexdefinition|stoptexcode|stopsetups|stoprawsetups|stoppickupmath|stopnointerference|stopluasetups|stopluaparameterset|stopluacode|stoplua|stoplocalsetups|stopimath|stopforceddisplaymath|stopextendcatcodetable|stopexpanded|stopdmath|stopctxfunctiondefinition|stopctxfunction|stopcontextdefinitioncode|stopcontextcode|stopcatcodetable|stop|startxmlsetups|starttexsetups|starttexdefinition|starttexcode|startsetups|startrawsetups|startpickupmath|startnointerference|startluasetups|startluaparameterset|startluacode|startlua|startlocalsetups|startimath|startforceddisplaymath|startextendcatcodetable|startexpanded|startdmath|startctxfunctiondefinition|startctxfunction|startcontextdefinitioncode|startcontextcode|startcatcodetable|start|space|sixthofsixarguments|sixthargumenttrue|sixthargumentfalse|singleexpandafter|simplegroupedcommand|signalcharacter|showluatokens|shiftbox|seventhargumenttrue|seventhargumentfalse|setxvalue|setxquantity|setxmeasure|setvalue|setuxvalue|setuvalue|setups|setup|setugvalue|setuevalue|settruevalue|settrue|setsystemmode|setstrut|setquantity|setprelistbox|setpostlistbox|setparagraphfreezing|setnewmacro|setnewlocaltoks|setnewlocalskip|setnewlocalmuskip|setnewlocaldimen|setnewlocalcount|setnewlocalbox|setnewconstant|setmode|setmeasure|setmathtextbox|setmathsmalltextbox|setlocalhsize|setgvalue|setgquantity|setgmeasure|setfalsevalue|setfalse|setexpandeddummyparameter|setevalue|setequantity|setemeasure|setdummyparameter|setcontrolspaces|setconstantvalue|setconstant|setconditional|setcatcodetable|setboxline|secondoftwounexpanded|secondoftwoarguments|secondofthreeunexpanded|secondofthreearguments|secondofsixarguments|secondoffourarguments|secondoffivearguments|secondargumenttrue|secondargumentfalse|scratchyposition|scratchyoffset|scratchxposition|scratchxoffset|scratchwidth|scratchvsize|scratchvoffset|scratchunicode|scratchtotal|scratchtopskip|scratchtopoffset|scratchtokstwo|scratchtoksthree|scratchtokssix|scratchtoksone|scratchtoksfour|scratchtoksfive|scratchtoks|scratchstringtwo|scratchstringone|scratchstring|scratchskiptwo|scratchskipthree|scratchskipsix|scratchskipone|scratchskipfour|scratchskipfive|scratchskip|scratchrightskip|scratchrightoffset|scratchoffset|scratchny|scratchnx|scratchmy|scratchmx|scratchmuskiptwo|scratchmuskipthree|scratchmuskipsix|scratchmuskipone|scratchmuskipfour|scratchmuskipfive|scratchmuskip|scratchmin|scratchmax|scratchmacrotwo|scratchmacroone|scratchmacro|scratchleftskip|scratchleftoffset|scratchhsize|scratchhoffset|scratchheight|scratchdistance|scratchdimentwo|scratchdimenthree|scratchdimensix|scratchdimenone|scratchdimenfour|scratchdimenfive|scratchdimen|scratchdepth|scratchcountertwo|scratchcounterthree|scratchcountersix|scratchcounterone|scratchcounterfour|scratchcounterfive|scratchcounter|scratchconditiontwotrue|scratchconditiontwofalse|scratchconditiontrue|scratchconditiononetrue|scratchconditiononefalse|scratchconditionfalse|scratchboxtwo|scratchboxthree|scratchboxsix|scratchboxone|scratchboxfour|scratchboxfive|scratchbox|scratchbottomskip|scratchbottomoffset|scangivendimensions|ruledvtop|ruledvss|ruledvskip|ruledvpack|ruledvglue|ruledvfilneg|ruledvfillneg|ruledvfilll|ruledvfill|ruledvfil|ruledvcenter|ruledvbox|ruledtpack|ruledpenalty|ruledmskip|ruledmkern|ruledmbox|ruledkern|ruledhss|ruledhskip|ruledhpack|ruledhglue|ruledhfilneg|ruledhfillneg|ruledhfilll|ruledhfill|ruledhfil|ruledhbox|rtlvtop|rtlvbox|rtlhbox|righttoleftvtop|righttoleftvbox|righttolefthbox|righttoleft|rightboundary|reversevtop|reversevpack|reversevbox|reversetpack|reversehpack|reversehbox|restorecatcodes|resetvalue|resetsystemmode|resetsetups|resetmode|resetglobal|reseteverypar|resetctxscanner|reqno|removeunwantedspaces|removetoks|removepunctuation|removelastspace|relrelspacing|relpunctspacing|relordspacing|relopspacing|relopenspacing|relinnerspacing|relclosespacing|relbinspacing|registerctxluafile|redoglobal|redefine|recurselevel|recursedepth|readline|readfromterminal|read|quitprevcommalist|quitcondition|quitcommalist|quarterstrut|quantity|quantitied|quad|pushsystemmode|pushoverloadmode|pushmathstyle|pushcatcodetable|punctrelspacing|punctpunctspacing|punctordspacing|punctopspacing|punctopenspacing|punctinnerspacing|punctclosespacing|punctbinspacing|protect|processfirstactioninset|processcommalist|processcommacommand|processallactionsinset|processallactions|processaction|privatescratchtoks|privatescratchskip|privatescratchmuskip|privatescratchdimen|privatescratchcounter|privatescratchbox|prependtotoks|prependtoks|prelistcopy|prelistbox|postlistcopy|postlistbox|popsystemmode|popoverloadmode|popmathstyle|popcatcodetable|pickupgroupedcommand|permitspacesbetweengroups|pardir|ordrelspacing|ordpunctspacing|ordordspacing|ordopspacing|ordopenspacing|ordinnerspacing|ordclosespacing|ordbinspacing|oprelspacing|oppunctspacing|opordspacing|opopspacing|opopenspacing|opinnerspacing|openrelspacing|openpunctspacing|openout|openordspacing|openopspacing|openopenspacing|openinnerspacing|openin|openclosespacing|openbinspacing|opclosespacing|opbinspacing|onlypdfobjectcompression|onlynonbreakablespace|oninterlineskip|offinterlineskip|obeytabs|obeyspaces|obeypages|obeyluatokens|obeylualines|obeylines|obeyedtab|obeyedspace|obeyedpage|obeyedline|null|novalidassignment|nosuperscript|nosuperprescript|nosubsprecript|nosubscript|nospacing|nospace|normalvglue|normalvfillneg|normalvfilllneg|normalsuperscript|normalsubscript|normalstopimath|normalstopdmath|normalstartimath|normalstartdmath|normalspaces|normalspace|normalreqno|normalpdfcompression|normalnosuperscript|normalnosubscript|normalhglue|normalhfillneg|normalhfilllneg|norightligaturing|norightkerning|noprotrusion|nopdfobjectcompression|nopdfcompression|noligaturing|noleftligaturing|noleftkerning|nokerning|nointerlineskip|nohyphens|noheightstrut|nofarguments|noexpansion|nobreak|nexttoken|nextbox|next|newwrite|newtoks|newsystemmode|newskip|newsignal|newread|newmuskip|newmode|newmarks|newmacro|newlocalwrite|newlocaltoks|newlocalskip|newlocalread|newlocalmuskip|newlocaldimen|newlocalcount|newlocalbox|newlanguage|newinsert|newif|newhelp|newfraction|newfamily|newfam|newdimen|newcount|newconstant|newconditional|newcatcodetable|newbox|newattribute|nbsp|naturalvtop|naturalvpack|naturalvbox|naturaltpack|naturalspace|naturalhpack|naturalhbox|morehyphens|modulonumber|measured|measure|maximumpdfcompression|mathtext|mathstylevcenteredvbox|mathstylevcenteredhbox|mathstylevcenter|mathstylevbox|mathstyletrigger|mathstylehbox|mathstylefont|mathstyleface|mathstylecommand|mathsmallstylefont|mathsmallstyleface|mathpalette|mathortext|mathnothing|mathnolop|mathlimop|mathbox|mathalpha|luaversion|luasetup|luaparameterset|luaminorversion|luamajorversion|luaexpr|luaexpanded|luaconditional|luacode|ltrvtop|ltrvbox|ltrhbox|loggingall|localhsize|lineheight|linedir|letvalue|letgvalue|letdummyparameter|letcatcodecommand|letbackslashbreak|lesshyphens|lefttorightvtop|lefttorightvbox|lefttorighthbox|lefttoright|leftorrightvtop|leftorrightvbox|leftorrighthbox|leftorright|leftboundary|lateluacode|lastlinewidth|keepunwantedspaces|installprotectedctxscanner|installprotectedctxfunction|installctxscanner|installctxfunction|installcorenamespace|innerrelspacing|innerpunctspacing|innerordspacing|inneropspacing|inneropenspacing|innerinnerspacing|innerclosespacing|innerbinspacing|inlineordisplaymath|indisplaymath|ignorevalue|ignoretabs|ignoreparskip|ignorepages|ignorelines|ignoreeofs|ifscratchconditiontwo|ifscratchconditionone|ifscratchcondition|ifbitwiseand|htdp|hsizefraction|hpenalty|hpackedbox|hpackbox|hkern|hglue|hfillneg|hfilllneg|hfilll|halfstrut|halflinestrut|groupedcommandcs|groupedcommand|goodbreak|gobbletwooptionals|gobbletwoarguments|gobblethreeoptionals|gobblethreearguments|gobbletenarguments|gobblesixarguments|gobblesevenarguments|gobbleoneoptional|gobbleoneargument|gobbleninearguments|gobblefouroptionals|gobblefourarguments|gobblefiveoptionals|gobblefivearguments|gobbleeightarguments|globalsetsystemmode|globalsetmode|globalscratchtoks|globalscratchskip|globalscratchmuskip|globalscratchdimen|globalscratchcountertwo|globalscratchcounterthree|globalscratchcounterone|globalscratchcounter|globalscratchbox|globalresetsystemmode|globalresetmode|globallet|givenwidth|givenheight|givendepth|getxparameters|getvalue|getuvalue|getparameters|getgparameters|getfirstcharacter|geteparameters|getdummyparameters|futureletnexttoken|frule|freezequantity|freezeparagraphproperties|freezemeasure|fourthofsixarguments|fourthoffourarguments|fourthoffivearguments|fourthargumenttrue|fourthargumentfalse|foundtrue|foundfalse|forgetparameters|forgetparagraphfreezing|forgetall|forcestrutdepth|forcedisplaymath|flushnextbox|firstoftwounexpanded|firstoftwoarguments|firstofthreeunexpanded|firstofthreearguments|firstofsixarguments|firstofoneunexpanded|firstofoneargument|firstoffourarguments|firstoffivearguments|firstinset|firstargumenttrue|firstargumentfalse|finishpar|filledhboxy|filledhboxr|filledhboxm|filledhboxk|filledhboxg|filledhboxc|filledhboxb|fifthofsixarguments|fifthoffivearguments|fifthargumenttrue|fifthargumentfalse|fastsetup|fastloopindex|fastloopfinal|falsecondition|expelsedoif|expdoifnot|expdoifinsetelse|expdoifelseinset|expdoifelsecommon|expdoifcommonelse|expdoif|expanded|exitloop|executeifdefined|enspace|endstrut|endpar|endgraf|emspace|empty|dummyparameter|dowithnextboxcs|dowithnextboxcontentcs|dowithnextboxcontent|dowithnextbox|dowith|doubleexpandafter|dotriplegroupempty|dotripleempty|dotripleargument|dostepwiserecurse|dospacing|dosixtupleempty|dosixtupleargument|dosinglegroupempty|dosingleempty|dosingleargument|doseventupleempty|doseventupleargument|dorecurse|doquintuplegroupempty|doquintupleempty|doquintupleargument|doquadruplegroupempty|doquadrupleempty|doquadrupleargument|dontpermitspacesbetweengroups|dontleavehmode|dontcomplain|donothing|donetrue|donefalse|doloopovermatched|doloopovermatch|doloopoverlist|doloop|doifvaluesomething|doifvaluenothingelse|doifvaluenothing|doifvalue|doifundefinedelse|doifundefined|doiftextelse|doiftext|doifsomethingelse|doifsomething|doifsetupselse|doifsetups|doifnumberelse|doifnumber|doifnotvalue|doifnottext|doifnotsetups|doifnotnumber|doifnotinstring|doifnotinset|doifnothingelse|doifnothing|doifnotcommon|doifnotcommandhandler|doifnot|doifnextparenthesiselse|doifnextoptionalelse|doifnextoptionalcselse|doifnextcharelse|doifnextcharcselse|doifnextbgroupelse|doifnextbgroupcselse|doifinstringelse|doifinstring|doifinsetelse|doifinset|doiffirstcharelse|doiffastoptionalcheckelse|doiffastoptionalcheckcselse|doifelsevaluenothing|doifelsevalue|doifelseundefined|doifelsetext|doifelsesomething|doifelsesetups|doifelsenumber|doifelsenothing|doifelsenextparenthesis|doifelsenextoptionalcs|doifelsenextoptional|doifelsenextcharcs|doifelsenextchar|doifelsenextbgroupcs|doifelsenextbgroup|doifelseinstring|doifelseinset|doifelsefirstchar|doifelsefastoptionalcheckcs|doifelsefastoptionalcheck|doifelsedimension|doifelsedefined|doifelsecommon|doifelsecommandhandler|doifelseassignmentcs|doifelseassignment|doifelse|doifdimensionelse|doifdefinedelse|doifdefined|doifcommonelse|doifcommon|doifcommandhandlerelse|doifcommandhandler|doifassignmentelsecs|doifassignmentelse|doif|dohyphens|doglobal|dofastloopcs|dodoublegroupempty|dodoubleempty|dodoubleargument|dodoglobal|docheckassignment|dividenumber|distributedhsize|dirrlo|dirrle|dirlro|dirlre|directsetup|directquantity|directmeasure|directluacode|directdummyparameter|depthstrut|defrostparagraphproperties|definequantity|definenamedlua|definemeasure|defineexpandable|define|defcatcodecommand|defbackslashbreak|defaultcatcodetable|currentcatcodetable|ctxwrite|ctxsprint|ctxreport|ctxluamatch|ctxluacode|ctxlua|ctxloadluafile|ctxlatelua|ctxlatecommand|ctxfunction|ctxdirectlua|ctxdirectcommand|ctxcommand|crlf|cramped|copysetups|copyparameters|copyboxline|controlspace|compoundhyphenpenalty|compounddiscretionary|closerelspacing|closepunctspacing|closeout|closeordspacing|closeopspacing|closeopenspacing|closeinnerspacing|closein|closeclosespacing|closebinspacing|cldprocessfile|cldloadviafile|cldloadfile|cldcontext|cldcommand|checkedstrippedcsname|checkedrighttoleft|checkedlefttoright|checked|charspace|catcodetablename|carryoverpar|break|boxrangewd|boxrangeht|boxrangedp|boxlinewd|boxlines|boxliners|boxlinerp|boxlinerh|boxlinenw|boxlinenh|boxlinend|boxlinels|boxlinelp|boxlinelh|boxlinein|boxlineht|boxlinedp|boxline|boxisempty|boxdir|booleanmodevalue|bitwisexor|bitwiseshift|bitwiseset|bitwiseor|bitwisenot|bitwisenil|bitwiseflip|bitwiseand|bitwise|binrelspacing|binpunctspacing|binordspacing|binopspacing|binopenspacing|bininnerspacing|binclosespacing|binbinspacing|begstrut|begcsname|availablehsize|autorule|autodirvtop|autodirvbox|autodirhbox|assumelongusagecs|appendtotoks|appendtoks|allowbreak|aliasmacro|Umathtopaccent|Umathbotaccent|Ucheckedstopdisplaymath|Ucheckedstartdisplaymath)(?=[^a-zA-Z])",
"name" : "context.plain.commands.plain.tex"
},
"ifprimitive" : {
diff --git a/doc/context/documents/general/manuals/lowlevel-boxes.pdf b/doc/context/documents/general/manuals/lowlevel-boxes.pdf
index 305e6beba..2cab8bba4 100644
--- a/doc/context/documents/general/manuals/lowlevel-boxes.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-boxes.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-scope.pdf b/doc/context/documents/general/manuals/lowlevel-scope.pdf
new file mode 100644
index 000000000..ca7dadc67
--- /dev/null
+++ b/doc/context/documents/general/manuals/lowlevel-scope.pdf
Binary files differ
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex
index 986d07b1b..9de79c5ee 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex
@@ -469,10 +469,10 @@ a private attribute we define one.
\startbuffer
\newattribute\MyAt
\setbox\scratchbox\hbox attr \MyAt 123 {whatever}
-[\the\boxattr\scratchbox\MyAt]
-\boxattr\scratchbox\MyAt 456
-[\the\boxattr\scratchbox\MyAt]
-[\ifnum\boxattr\scratchbox\MyAt>400 okay\fi]
+[\the\boxattribute\scratchbox\MyAt]
+\boxattribute\scratchbox\MyAt 456
+[\the\boxattribute\scratchbox\MyAt]
+[\ifnum\boxattribute\scratchbox\MyAt>400 okay\fi]
\stopbuffer
\typebuffer[option=TEX]
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-scope.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-scope.tex
new file mode 100644
index 000000000..1313de923
--- /dev/null
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-scope.tex
@@ -0,0 +1,341 @@
+% language=us
+
+% \hfil \hss
+% spread
+
+\environment lowlevel-style
+
+\startdocument
+ [title=scope,
+ color=middleblue]
+
+\startsection[title=Introduction]
+
+When I visited the file where register allocations are implemented I wondered to
+what extend it made sense to limit allocation to global instances only. This
+chapter deals with this phenomena.
+
+\stopsection
+
+\startsection[title=Registers]
+
+In \TEX\ definitions can be local or global. Most assignments are local within a
+group. Registers and definitions can be assigned global by using the \type
+{\global} prefix. There are also some properties that are global by design, like
+\type {\prevdepth}. A mixed breed are boxes. When you tweak its dimensions you
+actually tweak the current box, which can be an outer level. Compare:
+
+\starttyping[option=TEX]
+\scratchcounter = 1
+here the counter has value 1
+\begingroup
+ \scratchcounter = 2
+ here the counter has value 2
+\endgroup
+here the counter has value 1
+\stoptyping
+
+with:
+
+\starttyping[option=TEX]
+\setbox\scratchbox=\hbox{}
+here the box has zero width
+\begingroup
+ \wd\scratchbox=10pt
+ here the box is 10pt wide
+\endgroup
+here the box is 10pt wide
+\stoptyping
+
+It all makes sense so a remark like \quotation {Assignments to box dimensions are
+always global} are sort of confusing. Just look at this:
+
+\startbuffer
+\setbox\scratchbox=\hbox to 20pt{}
+here the box is \the\wd\scratchbox\ wide\par
+\begingroup
+ \setbox\scratchbox=\hbox{}
+ here the box is \the\wd\scratchbox\ wide\par
+ \begingroup
+ \wd\scratchbox=15pt
+ here the box is \the\wd\scratchbox\ wide\par
+ \endgroup
+ here the box is \the\wd\scratchbox\ wide\par
+\endgroup
+here the box is \the\wd\scratchbox\ wide\par
+\stopbuffer
+
+\typebuffer[option=TEX] \startlines \getbuffer \stoplines
+
+If you don't think about it, what happens is what you expect. Now watch the next
+variant:
+
+\startbuffer
+\setbox\scratchbox=\hbox to 20pt{}
+here the box is \the\wd\scratchbox\ wide\par
+\begingroup
+ \setbox\scratchbox=\hbox{}
+ here the box is \the\wd\scratchbox\ wide\par
+ \begingroup
+ \global\wd\scratchbox=15pt
+ here the box is \the\wd\scratchbox\ wide\par
+ \endgroup
+ here the box is \the\wd\scratchbox\ wide\par
+\endgroup
+here the box is \the\wd\scratchbox\ wide\par
+\stopbuffer
+
+The \type {\global} is only effective for the current box. It is good to realize
+that when we talk registers, the box register behaves just like any other
+register but the manipulations happen to the current one.
+
+\typebuffer \startlines \getbuffer \stoplines
+
+\startbuffer
+\scratchdimen=20pt
+here the dimension is \the\scratchdimen\par
+\begingroup
+ \scratchdimen=0pt
+ here the dimension is \the\scratchdimen\par
+ \begingroup
+ \global\scratchdimen=15pt
+ here the dimension is \the\scratchdimen\par
+ \endgroup
+ here the dimension is \the\scratchdimen\par
+\endgroup
+here the dimension is \the\scratchdimen\par
+\stopbuffer
+
+\typebuffer[option=TEX] \startlines \getbuffer \stoplines
+
+\stopsection
+
+\startsection[title=Allocation]
+
+The plain \TEX\ format has set some standards and one of them is that registers
+are allocated with \type {\new...} commands. So we can say:
+
+\starttyping[option=TEX]
+\newcount\mycounta
+\newdimen\mydimena
+\stoptyping
+
+These commands take a register from the pool and relate the given name to that
+entry. In \CONTEXT\ we have a bunch of predefined scratch registers for general
+use, like:
+
+\startbuffer
+scratchcounter : \meaningfull\scratchcounter
+scratchcounterone : \meaningfull\scratchcounterone
+scratchcountertwo : \meaningfull\scratchcountertwo
+scratchdimen : \meaningfull\scratchdimen
+scratchdimenone : \meaningfull\scratchdimenone
+scratchdimentwo : \meaningfull\scratchdimentwo
+\stopbuffer
+
+\typebuffer[option=TEX]
+
+The meaning reveals what these are:
+
+\startlines \tttf \getbuffer \stoplines
+
+You can use the numbers directly but that is a bad idea because they can clash!
+In the original \TEX\ engine there are only 256 registers and some are used by
+the engine and the core of a macro package itself, so that leaves a little amount
+for users. The \ETEX\ extension lifted that limitation and bumped to 32K and
+\LUATEX\ upped that to 64K. One could go higher but what makes sense? These
+registers are taking part of the fixed memory slots because that makes nested
+(grouped) usage efficient and access fast. The number you see above is deduced
+from the so called command code (here indicated by \type {\count}) and an index
+encoded in the same token. So, \type {\scratchcounter} takes a single token
+contrary to the verbose \type {\count257} that takes four tokens where the number
+gets parsed every time it is needed. But those are details that a user can
+forget.
+
+As mentioned, commands like \type {\newcount \foo} create a global control
+sequence \type {\foo} referencing a counter. You can locally redefine that
+control sequence unless in \LUAMETATEX\ you have so called overload mode enabled.
+You can do local or global assignments to these registers.
+
+\starttyping[option=TEX]
+\scratchcounter = 123
+\begingroup
+ \scratchcounter = 456
+ \begingroup
+ \global\scratchcounter = 789
+ \endgroup
+\endgroup
+\stoptyping
+
+And in both cases count register 257 is set. When an assignment is global,
+all current values to that register get the same value. Normally this is all
+quite transparent: you get what you ask for. However the drawback is that
+as a user you cannot know what variables are already defined, which means
+that this will fail (that is: it will issue a message):
+
+\starttyping[option=TEX]
+\newcount\scratchcounter
+\stoptyping
+
+as will the second line in:
+
+\starttyping[option=TEX]
+\newcount\myscratchcounter
+\newcount\myscratchcounter
+\stoptyping
+
+In \CONTEXT\ the scratch registers are visible but there are lots of internally
+used ones are protected from the user by more obscure names. So what if you want
+to use your own register names without \CONTEXT\ barking to you about not being
+able to define it. This is why in \LMTX\ (and maybe some day in \MKIV) we now
+have local definitions:
+
+\startbuffer
+\begingroup
+ \newlocaldimen\mydimena \mydimena1\onepoint
+ \newlocaldimen\mydimenb \mydimenb2\onepoint
+ (\the\mydimena,\the\mydimenb)
+ \begingroup
+ \newlocaldimen\mydimena \mydimena3\onepoint
+ \newlocaldimen\mydimenb \mydimenb4\onepoint
+ \newlocaldimen\mydimenc \mydimenc5\onepoint
+ (\the\mydimena,\the\mydimenb,\the\mydimenc)
+ \begingroup
+ \newlocaldimen\mydimena \mydimena6\onepoint
+ \newlocaldimen\mydimenb \mydimenb7\onepoint
+ (\the\mydimena,\the\mydimenb)
+ \endgroup
+ \newlocaldimen\mydimend \mydimend8\onepoint
+ (\the\mydimena,\the\mydimenb,\the\mydimenc,\the\mydimend)
+ \endgroup
+ (\the\mydimena,\the\mydimenb)
+\endgroup
+\stopbuffer
+
+\typebuffer[option=TEX]
+
+The allocated registers get zero values but you can of course set them to any
+value that fits their nature:
+
+\startlines \getbuffer \stoplines
+
+\startbuffer
+\begingroup
+ \setnewlocaldimen\mydimena 1\onepoint
+ \setnewlocaldimen\mydimenb 2\onepoint
+ (\the\mydimena,\the\mydimenb)
+ \begingroup
+ \setnewlocaldimen\mydimena 3\onepoint
+ \setnewlocaldimen\mydimenb 4\onepoint
+ \setnewlocaldimen\mydimenc 5\onepoint
+ (\the\mydimena,\the\mydimenb,\the\mydimenc)
+ \begingroup
+ \setnewlocaldimen\mydimena 6\onepoint
+ \setnewlocaldimen\mydimenb 7\onepoint
+ (\the\mydimena,\the\mydimenb)
+ \endgroup
+ \setnewlocaldimen\mydimend 8\onepoint
+ (\the\mydimena,\the\mydimenb,\the\mydimenc,\the\mydimend)
+ \endgroup
+ (\the\mydimena,\the\mydimenb)
+\endgroup
+\stopbuffer
+
+You can also use the next variant where you also pass the initial value:
+
+\typebuffer[option=TEX]
+
+So, again we get:
+
+\startlines \getbuffer \stoplines
+
+When used in the body of the macro there is of course a little overhead
+involved in the repetitive allocation but normally that can be neglected.
+
+\stopsection
+
+\startsection[title=Files]
+
+When adding these new allocators I also wondered about the read and write
+allocators. We don't use them in \CONTEXT\ but maybe users like them, so let's
+give an example and see what more demands they have:
+
+\starttyping[option=TEX]
+\integerdef\StartHere\numexpr\inputlineno+2\relax
+\starthiding
+SOME LINE 1
+SOME LINE 2
+SOME LINE 3
+SOME LINE 4
+\stophiding
+\integerdef\StopHere\numexpr\inputlineno-2\relax
+\stoptyping
+
+% We need to be in the file!
+
+\integerdef\StartHere\numexpr\inputlineno+2\relax
+\starthiding
+SOME LINE 1
+SOME LINE 2
+SOME LINE 3
+SOME LINE 4
+\stophiding
+\integerdef\StopHere\numexpr\inputlineno-2\relax
+
+\startbuffer
+\begingroup
+ \newlocalread\myreada
+ \immediate\openin\myreada {lowlevel-scope.tex}
+ \dostepwiserecurse{\StopHere}{\StartHere}{-1}{
+ \readline\myreada line #1 to \scratchstring #1 : \scratchstring \par
+ }
+ \blank
+ \dostepwiserecurse{\StartHere}{\StopHere}{1}{
+ \read \myreada line #1 to \scratchstring #1 : \scratchstring \par
+ }
+ \immediate\closein\myreada
+\endgroup
+\stopbuffer
+
+\typebuffer[option=TEX]
+
+Here, instead of hard coded line numbers we used the stored values. The
+optional \type {line} keyword is a \LMTX\ speciality.
+
+\startlines \getbuffer \stoplines
+
+Actually an application can be found in a small (demonstration) module:
+
+\startbuffer
+\usemodule[system-readers]
+\stopbuffer
+
+\typebuffer[option=TEX] \getbuffer
+
+This provides the code for doing this:
+
+\starttyping[option=TEX]
+\startmarkedlines[test]
+SOME LINE 1
+SOME LINE 2
+SOME LINE 3
+\stopmarkedlines
+
+\begingroup
+ \newlocalread\myreada
+ \immediate\openin\myreada {\markedfilename{test}}
+ \dostepwiserecurse{\lastmarkedline{test}}{\firstmarkedline{test}}{-1}{
+ \readline\myreada line #1 to \scratchstring #1 : \scratchstring \par
+ }
+ \immediate\closein\myreada
+\endgroup
+\stoptyping
+
+As you see in these examples, we an locally define a read channel without
+getting a message about it already being defined.
+
+\stopsection
+
+\stopdocument
+
+
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 22ce5d100..7a5ef95b4 100644
--- a/tex/context/base/mkii/cont-new.mkii
+++ b/tex/context/base/mkii/cont-new.mkii
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2021.02.12 18:45}
+\newcontextversion{2021.02.14 16:11}
%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/mkii/context.mkii b/tex/context/base/mkii/context.mkii
index 3f7659e9d..1f5e76b38 100644
--- a/tex/context/base/mkii/context.mkii
+++ b/tex/context/base/mkii/context.mkii
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2021.02.12 18:45}
+\edef\contextversion{2021.02.14 16:11}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/colo-ini.mkiv b/tex/context/base/mkiv/colo-ini.mkiv
index 7faaa5c5a..d031c4bfe 100644
--- a/tex/context/base/mkiv/colo-ini.mkiv
+++ b/tex/context/base/mkiv/colo-ini.mkiv
@@ -649,10 +649,10 @@
% {\edef#1{\negatedcolorcomponent{#1}}}
\unexpanded\def\negatecolorcomponent#1% #1 = \macro
- {\edef#1{\clf_negatecolorcomponent{#1}}}
+ {\edef#1{\clf_negatedcolorcomponent{#1}}}
\def\negatedcolorcomponent#1%
- {\clf_negatecolorcomponent{#1}}
+ {\clf_negatedcolorcomponent{#1}}
%D \macros
%D {MPcolor}
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 0aac29de3..a8c68be75 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2021.02.12 18:45}
+\newcontextversion{2021.02.14 16:11}
%D This file is loaded at runtime, thereby providing an excellent place for hacks,
%D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index 9ef91ed8e..57f0fc064 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -45,7 +45,7 @@
%D {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2021.02.12 18:45}
+\edef\contextversion{2021.02.14 16:11}
%D Kind of special:
diff --git a/tex/context/base/mkiv/data-tex.lua b/tex/context/base/mkiv/data-tex.lua
index 55383c1fe..2c1a7dbd5 100644
--- a/tex/context/base/mkiv/data-tex.lua
+++ b/tex/context/base/mkiv/data-tex.lua
@@ -149,6 +149,12 @@ local function textopener(tag,filename,filehandle,coding)
filename = filename,
noflines = noflines,
-- currentline = 0,
+ gotoline = function(self,n)
+ currentline = n - 1
+ if currentline <= 0 then
+ currentline = 0
+ end
+ end,
endoffile = function()
return not lines or currentline >= noflines
end,
diff --git a/tex/context/base/mkiv/lpdf-aux.lua b/tex/context/base/mkiv/lpdf-aux.lua
index 71b018c5f..91636ad04 100644
--- a/tex/context/base/mkiv/lpdf-aux.lua
+++ b/tex/context/base/mkiv/lpdf-aux.lua
@@ -22,6 +22,7 @@ local cache = table.setmetatableindex(function(t,k) -- can be made weak
if v < 0x10000 then
v = format("%04x",v)
else
+ v = v - 0x10000
v = format("%04x%04x",rshift(v,10)+0xD800,v%1024+0xDC00)
end
t[k] = v
@@ -71,7 +72,7 @@ local more = 0
local pattern = C(4) / function(s) -- needs checking !
local now = tonumber(s,16)
if more > 0 then
- now = (more-0xD800)*0x400 + (now-0xDC00) + 0x10000 -- the 0x10000 smells wrong
+ now = (more-0xD800)*0x400 + (now-0xDC00) + 0x10000
more = 0
return utfchar(now)
elseif now >= 0xD800 and now <= 0xDBFF then
diff --git a/tex/context/base/mkiv/lpdf-ini.lua b/tex/context/base/mkiv/lpdf-ini.lua
index ccb6e6628..1098ef8fa 100644
--- a/tex/context/base/mkiv/lpdf-ini.lua
+++ b/tex/context/base/mkiv/lpdf-ini.lua
@@ -298,7 +298,9 @@ do
if v < 0x10000 then
v = format("%04x",v)
else
+ v = v - 0x10000
v = format("%04x%04x",rshift(v,10)+0xD800,v%1024+0xDC00)
+ -- v = format("%04x%04x",rshift(v-0x10000,10)+0xD800,v%1024+0xDC00)
end
t[k] = v
return v
@@ -319,7 +321,7 @@ do
local pattern = C(4) / function(s) -- needs checking !
local now = tonumber(s,16)
if more > 0 then
- now = (more-0xD800)*0x400 + (now-0xDC00) + 0x10000 -- the 0x10000 smells wrong
+ now = (more-0xD800)*0x400 + (now-0xDC00) + 0x10000
more = 0
return utfchar(now)
elseif now >= 0xD800 and now <= 0xDBFF then
diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua
index c4078692d..ca65934ba 100644
--- a/tex/context/base/mkiv/mult-low.lua
+++ b/tex/context/base/mkiv/mult-low.lua
@@ -251,7 +251,7 @@ return {
--
"filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk",
--
- "scratchstringone", "scratchstringtwo", "tempstring",
+ "scratchstring", "scratchstringone", "scratchstringtwo", "tempstring",
"scratchcounter", "globalscratchcounter", "privatescratchcounter",
"scratchdimen", "globalscratchdimen", "privatescratchdimen",
"scratchskip", "globalscratchskip", "privatescratchskip",
@@ -551,5 +551,9 @@ return {
"pushoverloadmode", "popoverloadmode",
--
"suggestedalias",
+ --
+ "newlocalcount", "newlocaldimen", "newlocalskip", "newlocalmuskip", "newlocaltoks", "newlocalbox",
+ "newlocalwrite", "newlocalread",
+ "setnewlocalcount", "setnewlocaldimen", "setnewlocalskip", "setnewlocalmuskip", "setnewlocaltoks", "setnewlocalbox",
}
}
diff --git a/tex/context/base/mkiv/spac-ver.mkiv b/tex/context/base/mkiv/spac-ver.mkiv
index 680ba7a99..3f330a267 100644
--- a/tex/context/base/mkiv/spac-ver.mkiv
+++ b/tex/context/base/mkiv/spac-ver.mkiv
@@ -166,17 +166,11 @@
\installmacrostack\currentinterlinespace
\unexpanded\def\setupinterlinespace
- {\dodoubleempty\spac_linespacing_setup}
+ {\dosingleempty\spac_linespacing_setup}
-\ifdefined\setupinterlinespace_double \else
- \let\setupinterlinespace_double\setup_interlinespace % for a while
-\fi
-
-\def\spac_linespacing_setup[#1][#2]%
+\def\spac_linespacing_setup[#1]%
{\settrue\interlinespaceisset % reset has to be done when needed
- \ifsecondargument
- \setupinterlinespace_double[#1][#2]%
- \else\iffirstargument
+ \iffirstargument
\ifcsname\namedinterlinespacehash{#1}\s!parent\endcsname
\edef\currentinterlinespace{#1}%
\spac_linespacing_setup_specified_interline_space
@@ -187,7 +181,7 @@
\else
\let\currentinterlinespace\empty
\spac_linespacing_synchronize_local
- \fi\fi}
+ \fi}
\def\spac_linespacing_setup_specified_or_relative[#1]%
{\doifelseassignment{#1}\setupspecifiedinterlinespace\setuprelativeinterlinespace[#1]%
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 53148beec..c4ac7d938 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 8079e1fb2..d91dbaebb 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/supp-ran.mkiv b/tex/context/base/mkiv/supp-ran.mkiv
index 4deb6f689..52a45cf9c 100644
--- a/tex/context/base/mkiv/supp-ran.mkiv
+++ b/tex/context/base/mkiv/supp-ran.mkiv
@@ -44,8 +44,9 @@
\let\freezerandomseed \pushrandomseed
\let\defrostrandomseed\poprandomseed
-\def\randomnumber #1#2{\clf_getrandomnumber\numexpr#1\relax\numexpr#2\relax}
-\let\mprandomnumber \clf_getmprandomnumber
+\setnewconstant \mpscaledmax 4095 % for old times sake
+\def\randomnumber #1#2{\clf_getrandomnumber\numexpr#1\relax\numexpr#2\relax}
+\def\mprandomnumber {\clf_getrandomnumber\zerocount\mpscaledmax}
\protect \endinput
diff --git a/tex/context/base/mkxl/anch-tab.mkxl b/tex/context/base/mkxl/anch-tab.mkxl
index 6783b1314..11e9598d9 100644
--- a/tex/context/base/mkxl/anch-tab.mkxl
+++ b/tex/context/base/mkxl/anch-tab.mkxl
@@ -372,7 +372,7 @@
\protected\def\anch_framed_handle
{\bgroup
- \anch_framed_indeed}
+ \positionframed}
\permanent\tolerant\protected\def\positionframed[#1]#*[#2]%
{\setbox\scratchbox\hpack
diff --git a/tex/context/base/mkxl/attr-ini.mkxl b/tex/context/base/mkxl/attr-ini.mkxl
index ae749ff29..e707a478f 100644
--- a/tex/context/base/mkxl/attr-ini.mkxl
+++ b/tex/context/base/mkxl/attr-ini.mkxl
@@ -80,7 +80,7 @@
{\the\t_attr_list_pickup\relax}
\permanent\protected\def\newattribute#1%
- {\attr_basics_define_indeed\s!public[\csstring#1][]%
+ {\attr_basics_define_indeed[\s!public][\csstring#1][]%
\expandafter\glet\expandafter#1\csname\??attributeid\csstring#1\endcsname}
% expandable so we can \edef them for speed
diff --git a/tex/context/base/mkxl/back-ini.mkxl b/tex/context/base/mkxl/back-ini.mkxl
index 1bf31413e..fad9c1e70 100644
--- a/tex/context/base/mkxl/back-ini.mkxl
+++ b/tex/context/base/mkxl/back-ini.mkxl
@@ -50,12 +50,6 @@
\clf_setrealspaces{\backendparameter\c!space}%
\to \everysetupbackend
-\appendtoks
- \ifdefined\clf_resetmapfile
- \clf_resetmapfile
- \fi
-\to \everysetupbackend
-
%D For the moment this is an experiment (defauls is pdf, but we also
%D have lua, json and mps).
%D
diff --git a/tex/context/base/mkxl/buff-ini.mkxl b/tex/context/base/mkxl/buff-ini.mkxl
index bb1468e61..ed62743ad 100644
--- a/tex/context/base/mkxl/buff-ini.mkxl
+++ b/tex/context/base/mkxl/buff-ini.mkxl
@@ -66,8 +66,8 @@
\def\buff_start_indeed_default#1#2#3#4{\buff_start_indeed\empty{#1}{#2}{#3}}
-% \let\buff_finish\relax
-% \let\buff_gobble\relax
+\let\buff_finish\relax
+%let\buff_gobble\relax
\protected\def\buff_pickup#1#2#3#4#5#6% name, startsequence, stopsequence, before, after, undent
{\begingroup % (1)
@@ -222,7 +222,7 @@
% maybe still used elsewhere
-\permanent\protected\def\doprocesstexbuffer#1{\buff_process_tex[#1]} % still used? if not ... it will go away
+% \aliased\doprocesstexbuffer\mkvibuffer
\aliased\let\dostartbuffer\grabbufferdata % for old times sake, this will go away
diff --git a/tex/context/base/mkxl/colo-ini.mkxl b/tex/context/base/mkxl/colo-ini.mkxl
index 9c291ea9f..c096fe90f 100644
--- a/tex/context/base/mkxl/colo-ini.mkxl
+++ b/tex/context/base/mkxl/colo-ini.mkxl
@@ -636,11 +636,8 @@
%D
%D These speak for themselves. See \type {colo-ext} for usage.
-\permanent\protected\def\negatecolorcomponent#1% #1 = \macro
- {\edef#1{\clf_negatecolorcomponent{#1}}}
-
-\permanent\def\negatedcolorcomponent#1%
- {\clf_negatecolorcomponent{#1}}
+\permanent\protected\def\negatecolorcomponent #1{\edef#1{\clf_negatedcolorcomponent{#1}}}
+\permanent \def\negatedcolorcomponent#1{\clf_negatedcolorcomponent{#1}}
%D \macros
%D {MPcolor}
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index 4485f0cf6..a50137486 100644
--- a/tex/context/base/mkxl/cont-new.mkxl
+++ b/tex/context/base/mkxl/cont-new.mkxl
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2021.02.12 18:45}
+\newcontextversion{2021.02.14 16:11}
%D This file is loaded at runtime, thereby providing an excellent place for hacks,
%D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl
index ddaafb93e..d628aa307 100644
--- a/tex/context/base/mkxl/context.mkxl
+++ b/tex/context/base/mkxl/context.mkxl
@@ -29,7 +29,7 @@
%D {YYYY.MM.DD HH:MM} format.
\immutable\edef\contextformat {\jobname}
-\immutable\edef\contextversion{2021.02.12 18:45}
+\immutable\edef\contextversion{2021.02.14 16:11}
%overloadmode 1 % check frozen / warning
%overloadmode 2 % check frozen / error
diff --git a/tex/context/base/mkxl/core-dat.mkxl b/tex/context/base/mkxl/core-dat.mkxl
index 7360a4e46..93d0bbb7a 100644
--- a/tex/context/base/mkxl/core-dat.mkxl
+++ b/tex/context/base/mkxl/core-dat.mkxl
@@ -95,7 +95,7 @@
\endgroup}
\permanent\protected\def\autosetpagestate#1%
- {\syst_pagestates_set[#1]\relax}
+ {\setpagestate[#1]\relax}
\permanent\def\autopagestatenumber#1{\begincsname\??pagestatecounter#1\endcsname}
diff --git a/tex/context/base/mkxl/core-env.mkxl b/tex/context/base/mkxl/core-env.mkxl
index 4e040d632..62e4106c5 100644
--- a/tex/context/base/mkxl/core-env.mkxl
+++ b/tex/context/base/mkxl/core-env.mkxl
@@ -198,6 +198,8 @@
% all
+\let\syst_modes_check_all_step\gobbleoneargument
+
\def\syst_modes_check_all_indeed#1%
{\ifcsname\??mode#1\endcsname
\ifcase\lastnamedcs
diff --git a/tex/context/base/mkxl/core-sys.mkxl b/tex/context/base/mkxl/core-sys.mkxl
index 5b23e4eab..c5093588e 100644
--- a/tex/context/base/mkxl/core-sys.mkxl
+++ b/tex/context/base/mkxl/core-sys.mkxl
@@ -163,6 +163,8 @@
\expandafter\syst_start_yes
\fi}
+\let\syst_stop_indeed\donothing
+
\def\syst_start_yes
{\ifempty\m_syst_start_stop
\let\syst_stop_indeed\donothing
diff --git a/tex/context/base/mkxl/font-ini.mklx b/tex/context/base/mkxl/font-ini.mklx
index 1066a5ee6..557ac3c49 100644
--- a/tex/context/base/mkxl/font-ini.mklx
+++ b/tex/context/base/mkxl/font-ini.mklx
@@ -2604,11 +2604,11 @@
{\ifcsname\??predefinedfont#1\endcsname
\lastnamedcs
\else
- \definedfont[#1]%
+ \font_basics_predefined{#1}%
\fi}
\protected\def\font_basics_predefine#1#2%
- {\font_basics_defined_font_yes[#2]%
+ {\definedfont[#2]%
\gletcsname#1\expandafter\endcsname\csname\v_font_identifier_basic\endcsname}
\protected\def\font_basics_predefined#1%
@@ -2616,7 +2616,7 @@
%D Handy helper:
-\permanent\protected\def\savedefinedfont[#1]%
+\permanent\protected\def\savedefinedfont[#1]% hm, how about scales
{\bgroup
\definedfont[#1]%
\xdef\saveddefinedfontid {\number\fontid\font}%
diff --git a/tex/context/base/mkxl/font-sel.mklx b/tex/context/base/mkxl/font-sel.mklx
index a1fc8cd7f..a25b7fab7 100644
--- a/tex/context/base/mkxl/font-sel.mklx
+++ b/tex/context/base/mkxl/font-sel.mklx
@@ -17,6 +17,8 @@
\installcorenamespace {selectfont}
\installsimplecommandhandler \??selectfont {selectfont}
+\let\selectfont_index\!!zerocount
+
\protected\def\selectfont_register[#style][#settings]%
{\begingroup
\edef\currentselectfont{\expandnamespacevalue\??fontshortstyle{#style}\s!rm}%
diff --git a/tex/context/base/mkxl/font-sty.mklx b/tex/context/base/mkxl/font-sty.mklx
index 866e355c3..503356a4a 100644
--- a/tex/context/base/mkxl/font-sty.mklx
+++ b/tex/context/base/mkxl/font-sty.mklx
@@ -180,12 +180,11 @@
\setfalse\fontattributeisset
-\let\m_font_style_parameter \empty % was \currentstyleparameter
-\let\m_font_detokenized_style_parameter\empty % was \currentdetokenizedstyleparameter
+\mutable\let\currentdetokenizedstyleparameter\empty
\permanent\protected\def\dousestyleparameter#value%
- {\edef\m_font_style_parameter{#value}%
- \ifempty\m_font_style_parameter\else
+ {\edef\currentstyleparameter{#value}%
+ \ifempty\currentstyleparameter\else
\expandafter\dousecurrentstyleparameter
\fi}
@@ -195,14 +194,14 @@
\fi}
\permanent\protected\def\dousecurrentstyleparameter % empty check outside here
- {\edef\m_font_detokenized_style_parameter{\detokenize\expandafter{\m_font_style_parameter}}%
+ {\edef\currentdetokenizedstyleparameter{\detokenize\expandafter{\currentstyleparameter}}%
\settrue\fontattributeisset % reset is done elsewhere
- \ifcsname\??alternativestyle\m_font_detokenized_style_parameter\endcsname
+ \ifcsname\??alternativestyle\currentdetokenizedstyleparameter\endcsname
\lastnamedcs
- \orelse\ifcsname\m_font_detokenized_style_parameter\endcsname
+ \orelse\ifcsname\currentdetokenizedstyleparameter\endcsname
\lastnamedcs
\else
- \m_font_style_parameter
+ \currentstyleparameter
\fi}
%D New commands (not yet interfaced):
@@ -360,6 +359,7 @@
\font_styles_define_style_collection_a\s!default
\fi}
+\let\font_styles_define_style_collection \relax
\let\font_styles_define_style_collection_a\relax
\let\font_styles_define_style_collection_b\relax
diff --git a/tex/context/base/mkxl/lpdf-aux.lmt b/tex/context/base/mkxl/lpdf-aux.lmt
index 71b018c5f..91636ad04 100644
--- a/tex/context/base/mkxl/lpdf-aux.lmt
+++ b/tex/context/base/mkxl/lpdf-aux.lmt
@@ -22,6 +22,7 @@ local cache = table.setmetatableindex(function(t,k) -- can be made weak
if v < 0x10000 then
v = format("%04x",v)
else
+ v = v - 0x10000
v = format("%04x%04x",rshift(v,10)+0xD800,v%1024+0xDC00)
end
t[k] = v
@@ -71,7 +72,7 @@ local more = 0
local pattern = C(4) / function(s) -- needs checking !
local now = tonumber(s,16)
if more > 0 then
- now = (more-0xD800)*0x400 + (now-0xDC00) + 0x10000 -- the 0x10000 smells wrong
+ now = (more-0xD800)*0x400 + (now-0xDC00) + 0x10000
more = 0
return utfchar(now)
elseif now >= 0xD800 and now <= 0xDBFF then
diff --git a/tex/context/base/mkxl/lpdf-ini.lmt b/tex/context/base/mkxl/lpdf-ini.lmt
index 785242b8a..759f5e33f 100644
--- a/tex/context/base/mkxl/lpdf-ini.lmt
+++ b/tex/context/base/mkxl/lpdf-ini.lmt
@@ -176,7 +176,9 @@ do
if v < 0x10000 then
v = format("%04x",v)
else
+ v = v - 0x10000
v = format("%04x%04x",rshift(v,10)+0xD800,v%1024+0xDC00)
+ -- v = format("%04x%04x",rshift(v-0x10000,10)+0xD800,v%1024+0xDC00)
end
t[k] = v
return v
@@ -197,7 +199,7 @@ do
local pattern = C(4) / function(s) -- needs checking !
local now = tonumber(s,16)
if more > 0 then
- now = (more-0xD800)*0x400 + (now-0xDC00) + 0x10000 -- the 0x10000 smells wrong
+ now = (more-0xD800)*0x400 + (now-0xDC00) + 0x10000
more = 0
return utfchar(now)
elseif now >= 0xD800 and now <= 0xDBFF then
diff --git a/tex/context/base/mkxl/luat-cod.mkxl b/tex/context/base/mkxl/luat-cod.mkxl
index fec88aecd..ed4a13981 100644
--- a/tex/context/base/mkxl/luat-cod.mkxl
+++ b/tex/context/base/mkxl/luat-cod.mkxl
@@ -18,19 +18,16 @@
\newif\ifproductionrun
\permanent\let\ctxdirectlua \directlua
-\permanent\let\ctxlatelua \latelua
\permanent\def\ctxsprint #1{\directlua{tex.sprint(tex.ctxcatcodes,#1)}} % saves tokens
\permanent\def\ctxwrite #1{\directlua{tex.write(#1)}} % saves tokens
\permanent\def\ctxcommand #1{\directlua{commands.#1}} % saves tokens
\permanent\def\ctxdirectcommand#1{\directlua{commands.#1}} % saves tokens
-\permanent\def\ctxlatecommand #1{\latelua {commands.#1}} % saves tokens
\permanent\def\ctxreport #1{\directlua{logs.writer[[#1]]}}
%D Take your choice \unknown
\aliased\let\ctxlua \ctxdirectlua
\aliased\let\luacode \ctxdirectlua
-\aliased\let\lateluacode \ctxlatelua
\aliased\let\directluacode\ctxdirectlua
%D Reporting the version of \LUA\ that we use is done as follows:
@@ -42,4 +39,10 @@
\registerctxluafile{luat-cod.lmt}{autosuffix}
+\toksapp \everydump {%
+ \permanent\let\ctxlatelua \latelua
+ \permanent\def\ctxlatecommand#1{\latelua{commands.#1}}%
+ \aliased\let\lateluacode \ctxlatelua
+} % no \appendtoks yet
+
\protect \endinput
diff --git a/tex/context/base/mkxl/math-acc.mklx b/tex/context/base/mkxl/math-acc.mklx
index b5580fff2..9d8656630 100644
--- a/tex/context/base/mkxl/math-acc.mklx
+++ b/tex/context/base/mkxl/math-acc.mklx
@@ -87,6 +87,8 @@
\frozen\instance\setuevalue{#1}{\math_accents_make_double\noexpand\currentmathaccents\plusthree{\number#2}{\number#3}}%
\fi}
+\let\math_accents_color_pop\donothing
+
\def\math_accents_color_push_yes
{\pushcolor[\p_math_accent_color]%
\let\math_accents_color_pop\popcolor}
diff --git a/tex/context/base/mkxl/math-ali.mkxl b/tex/context/base/mkxl/math-ali.mkxl
index 371c1b9af..2007ed83c 100644
--- a/tex/context/base/mkxl/math-ali.mkxl
+++ b/tex/context/base/mkxl/math-ali.mkxl
@@ -224,9 +224,11 @@
\installcorenamespace {mathalignlocation}
-\setvalue{\??mathalignlocation\v!top }{\let\math_alignment_halign_method\halign\tpack}
-\setvalue{\??mathalignlocation\v!bottom}{\let\math_alignment_halign_method\halign\vpack}
-\setvalue{\??mathalignlocation\v!center}{\let\math_alignment_halign_method\halign\vcenter}
+\defcsname\??mathalignlocation\v!top \endcsname{\let\math_alignment_halign_method\halign\tpack}
+\defcsname\??mathalignlocation\v!bottom\endcsname{\let\math_alignment_halign_method\halign\vpack}
+\defcsname\??mathalignlocation\v!center\endcsname{\let\math_alignment_halign_method\halign\vcenter}
+
+\let\math_alignment_halign_method\relax
\def\math_both_eqalign_no_aligned#1%
{\let\math_alignment_halign_method\math_halign_checked
@@ -694,6 +696,8 @@
\installmacrostack\math_cases_NC
+\let\math_cases_strut\relax
+
\permanent\tolerant\protected\def\math_cases_start[#1]#*[#2]%
{\begingroup
\edef\currentmathcases{#1}%
diff --git a/tex/context/base/mkxl/math-ini.mkxl b/tex/context/base/mkxl/math-ini.mkxl
index 35092ceba..9f541c351 100644
--- a/tex/context/base/mkxl/math-ini.mkxl
+++ b/tex/context/base/mkxl/math-ini.mkxl
@@ -2550,6 +2550,8 @@
% this can become an option:
+\let\math_display_align_hack_indeed\relax
+
\protected\def\math_display_align_hack % I don't like the global, maybe we should push and pop
{\glet\math_display_align_hack_indeed\math_display_align_hack_remove_skip
\math_openup\displayopenupvalue % was \math_openup\jot
diff --git a/tex/context/base/mkxl/math-stc.mklx b/tex/context/base/mkxl/math-stc.mklx
index 917fd97ba..944185c23 100644
--- a/tex/context/base/mkxl/math-stc.mklx
+++ b/tex/context/base/mkxl/math-stc.mklx
@@ -538,6 +538,8 @@
% 1 0 name n 0 | 0 1 name n 0 | 1 1 name n n
+\let\math_stackers_stop_group\endgroup
+
\protected\def\math_stackers_start_group#category%
{\begingroup
\edef\currentmathstackers{#category}%
diff --git a/tex/context/base/mkxl/meta-ini.mkxl b/tex/context/base/mkxl/meta-ini.mkxl
index 41d39dee4..6b79c39c9 100644
--- a/tex/context/base/mkxl/meta-ini.mkxl
+++ b/tex/context/base/mkxl/meta-ini.mkxl
@@ -314,6 +314,9 @@
\let\meta_process_graphic_figure_start\relax
\let\meta_process_graphic_figure_stop \relax
+\let\normal_meta_process_graphic_start\relax
+\let\normal_meta_process_graphic_stop \relax
+
\permanent\protected\def\processMPfigurefile#1% special case: obeys beginfig .. endfig and makes pages
{\begingroup
\let\normal_meta_process_graphic_start\meta_process_graphic_start
@@ -851,7 +854,7 @@
\meta_end_graphic_group}
\permanent\tolerant\protected\def\runMPbuffer[#1]%
- {\startnointerference\meta_process_buffer[#1]\stopnointerference}
+ {\startnointerference\processMPbuffer[#1]\stopnointerference}
%D \macros
%D {startMPenvironment, resetMPenvironment}
@@ -1303,24 +1306,24 @@
\setupMPgraphics
[\c!color=\v!local]
-%D This can save some runtime: rename the mpy file from a first run (when stable) to
-%D another file and reuse it. One can also use the original filename, but a copy is
-%D often better.
-%D
-%D \starttyping
-%D \setupMPgraphics
-%D [mpy=\jobname.mpy]
-%D \stoptyping
-
-\mutable\let\MPdataMPYfile\empty
-
-\appendtoks
- \edef\p_mpy{\directMPgraphicsparameter{mpy}}%
- \ifempty\p_mpy \else
- \let\MPdataMPYfile\p_mpy
- \clf_registermpyfile{\p_mpy}%
- \fi
-\to \everysetupMPgraphics
+% %D This can save some runtime: rename the mpy file from a first run (when stable) to
+% %D another file and reuse it. One can also use the original filename, but a copy is
+% %D often better.
+% %D
+% %D \starttyping
+% %D \setupMPgraphics
+% %D [mpy=\jobname.mpy]
+% %D \stoptyping
+%
+% \mutable\let\MPdataMPYfile\empty
+%
+% \appendtoks
+% \edef\p_mpy{\directMPgraphicsparameter{mpy}}%
+% \ifempty\p_mpy \else
+% \let\MPdataMPYfile\p_mpy
+% \clf_registermpyfile{\p_mpy}%
+% \fi
+% \to \everysetupMPgraphics
%D Some more helpers (see \type {meta-grd.mkiv} for an example of usage):
diff --git a/tex/context/base/mkxl/mlib-pps.mkxl b/tex/context/base/mkxl/mlib-pps.mkxl
index 61313afa2..11d7e5672 100644
--- a/tex/context/base/mkxl/mlib-pps.mkxl
+++ b/tex/context/base/mkxl/mlib-pps.mkxl
@@ -80,6 +80,9 @@
{\clf_mpgettext\MPtextbox #1%
\vpack to \zeropoint{\vss\hpack to \zeropoint{\scale[\c!sx=#2,\c!sy=#3]{\raise\dp\MPtextbox\box\MPtextbox}\forcecolorhack\hss}}}
+\let\mlib_sx\!!zerocount % set at the lua end
+\let\mlib_sy\!!zerocount % set at the lua end
+
\permanent\protected\def\MPLIBfigure#1#2%
{\setbox\scratchbox\hpack{\externalfigure[#1][\c!mask=#2]}%
\clf_mpsetsxsy\wd\scratchbox\ht\scratchbox\zeropoint
diff --git a/tex/context/base/mkxl/node-fin.mkxl b/tex/context/base/mkxl/node-fin.mkxl
index fa2a01f82..6840c85ab 100644
--- a/tex/context/base/mkxl/node-fin.mkxl
+++ b/tex/context/base/mkxl/node-fin.mkxl
@@ -21,9 +21,10 @@
\permanent\protected\def\finalizeobjectbox #1{\clf_finalizebox#1\relax}
\permanent\protected\def\finalizeshipoutbox#1{\clf_finalizebox#1\relax}
-% Experimental (for Aditya):
+% Experimental (for Aditya), not in mkxl, if we need it, it has to be more
+% clever.
-\permanent\protected\def\cleanupbox#1{\clf_cleanupbox#1\relax}
+% \permanent\protected\def\cleanupbox#1{\clf_cleanupbox#1\relax}
% Tricky stuff: this might become obsolete. It is about time to check this out
% now (after more than a decade)! The few times that we need this we can better
diff --git a/tex/context/base/mkxl/node-nut.lmt b/tex/context/base/mkxl/node-nut.lmt
index ab44e4d92..5a487eaea 100644
--- a/tex/context/base/mkxl/node-nut.lmt
+++ b/tex/context/base/mkxl/node-nut.lmt
@@ -53,6 +53,8 @@ local nuts = {
current_attributes = direct.current_attributes,
delete = direct.delete,
dimensions = direct.dimensions,
+ naturalhsize = direct.naturalhsize,
+ naturalwidth = direct.naturalwidth,
effective_glue = direct.effective_glue,
end_of_math = direct.end_of_math,
exchange = direct.exchange,
diff --git a/tex/context/base/mkxl/pack-box.mkxl b/tex/context/base/mkxl/pack-box.mkxl
index 0d56b8175..77b0bbc69 100644
--- a/tex/context/base/mkxl/pack-box.mkxl
+++ b/tex/context/base/mkxl/pack-box.mkxl
@@ -56,7 +56,9 @@
\permanent\tolerant\protected\def\defineanchor[#1]#*[#2]#*[#3]#*[#4]% name targetlayer layersetting framedsetting
{\setvalue{\??anchor#1}{\pack_anchors_process_defined{#2}{#3}{#4}}}
-\def\pack_anchors_process_defined#1#2#3%
+\let\pack_anchors_process_defined_indeed\gobbletwooptionals
+
+\def\pack_anchors_process_defined#1#2#3% brrr
{\tolerant\def\pack_anchors_process_defined_indeed[##1]##*[##2]%
{\ifarguments
\def\next{\pack_anchors_process_indeed{#1}{#2}{#3}}%
@@ -473,7 +475,7 @@
{\egroup\csname#1\endcsname}}
\permanent\tolerant\protected\def\defineornament[#1]#*[#2]#*[#3]%
- {\setuvalue{#1}{\pack_ornament_text[#2][#3]}}
+ {\protected\frozen\instance\defcsname#1\endcsname{\ornamenttext[#2][#3]}}
% \defineornament
% [affiliation]
diff --git a/tex/context/base/mkxl/pack-com.mkxl b/tex/context/base/mkxl/pack-com.mkxl
index d2a9af914..44cfc9a4f 100644
--- a/tex/context/base/mkxl/pack-com.mkxl
+++ b/tex/context/base/mkxl/pack-com.mkxl
@@ -468,6 +468,8 @@
\fi
\savebox{\??combinationcaption:\number\c_pack_combinations_nesting}{\number\c_pack_combinations_x}{\box\b_pack_combinations_caption}}
+\let\pack_combinations_flush_captions_indeed\relax
+
\def\pack_combinations_flush_captions
{\noalign
{\ifdim\d_pack_combinations_ht>\zeropoint
@@ -765,24 +767,25 @@
\installcorenamespace{pairedboxnature}
\installcorenamespace{pairedboxalign}
+\let\pack_pairedboxes_flush \relax
\let\pack_pairedboxes_fill_top \relax
\let\pack_pairedboxes_fill_bottom\relax
-\setvalue{\??pairedboxnature\v!left}%
+\defcsname\??pairedboxnature\v!left\endcsname
{\settrue\c_pack_pairedboxes_horizontal
\let\pack_pairedboxes_flush\pack_pairedboxes_flush_left}
-\setvalue{\??pairedboxnature\v!right}%
+\defcsname\??pairedboxnature\v!right\endcsname
{\settrue\c_pack_pairedboxes_horizontal
\let\pack_pairedboxes_flush\pack_pairedboxes_flush_right}
-\setvalue{\??pairedboxnature\v!top}%
+\defcsname\??pairedboxnature\v!top\endcsname
{\setfalse\c_pack_pairedboxes_horizontal
\let\pack_pairedboxes_fill_top\relax
\let\pack_pairedboxes_fill_bottom\vss
\let\pack_pairedboxes_flush\pack_pairedboxes_flush_top}
-\setvalue{\??pairedboxnature\v!bottom}%
+\defcsname\??pairedboxnature\v!bottom\endcsname
{\setfalse\c_pack_pairedboxes_horizontal
\let\pack_pairedboxes_fill_top\vss
\let\pack_pairedboxes_fill_bottom\relax
@@ -812,38 +815,43 @@
\pairedboxparameter\c!inbetween
\box\b_pack_pairedboxes_second}
-\setvalue{\??pairedboxalign\v!left}% 0
+\let\pack_pairedboxes_align_l\relax
+\let\pack_pairedboxes_align_r\relax
+\let\pack_pairedboxes_align_t\relax
+\let\pack_pairedboxes_align_b\relax
+
+\defcsname\??pairedboxalign\v!left\endcsname % 0
{\let\pack_pairedboxes_align_l\relax
\let\pack_pairedboxes_align_r\hss
\let\pack_pairedboxes_align_t\relax
\let\pack_pairedboxes_align_b\relax}
-\setvalue{\??pairedboxalign\v!right}% 1
+\defcsname\??pairedboxalign\v!right\endcsname % 1
{\let\pack_pairedboxes_align_l\hss
\let\pack_pairedboxes_align_r\relax
\let\pack_pairedboxes_align_t\relax
\let\pack_pairedboxes_align_b\relax}
-\setvalue{\??pairedboxalign\v!high}% 2
+\defcsname\??pairedboxalign\v!high\endcsname % 2
{\let\pack_pairedboxes_align_l\relax
\let\pack_pairedboxes_align_r\relax
\let\pack_pairedboxes_align_t\relax
\let\pack_pairedboxes_align_b\vss}
-\setvalue{\??pairedboxalign\v!low}% 3
+\defcsname\??pairedboxalign\v!low\endcsname % 3
{\let\pack_pairedboxes_align_l\relax
\let\pack_pairedboxes_align_r\relax
\let\pack_pairedboxes_align_t\vss
\let\pack_pairedboxes_align_b\relax}
-\setvalue{\??pairedboxalign\v!middle}% 4
+\defcsname\??pairedboxalign\v!middle\endcsname % 4
{\let\pack_pairedboxes_align_l\hss
\let\pack_pairedboxes_align_r\hss
\let\pack_pairedboxes_align_t\vss
\let\pack_pairedboxes_align_b\vss}
-\setvalue{\??pairedboxalign\v!bottom}{\csname\??pairedboxalign\v!low \endcsname}
-\setvalue{\??pairedboxalign \v!top}{\csname\??pairedboxalign\v!high\endcsname}
+\defcsname\??pairedboxalign\v!bottom\endcsname{\csname\??pairedboxalign\v!low \endcsname}
+\defcsname\??pairedboxalign \v!top\endcsname{\csname\??pairedboxalign\v!high\endcsname}
\def\pack_pairedbox_valign#1{\setbox#1\vpack to \s_pack_pairedboxes_size{\pack_pairedboxes_align_t\box#1\pack_pairedboxes_align_b}}
\def\pack_pairedbox_halign#1{\setbox#1\hpack to \s_pack_pairedboxes_size{\pack_pairedboxes_align_l\box#1\pack_pairedboxes_align_r}}
diff --git a/tex/context/base/mkxl/pack-mrl.mkxl b/tex/context/base/mkxl/pack-mrl.mkxl
index 7bdbc6b60..678afb68a 100644
--- a/tex/context/base/mkxl/pack-mrl.mkxl
+++ b/tex/context/base/mkxl/pack-mrl.mkxl
@@ -543,11 +543,8 @@
\def\pack_textrule_nop[#1]%
{\doifelsenextbgroupcs\pack_textrule_nop_indeed_yes\pack_textrule_nop_indeed_nop}
-\def\pack_textrule_nop_indeed_yes
- {\csname\??textrulealternatives\v!top\endcsname}
-
-\def\pack_textrule_nop_indeed_nop
- {\csname\??textrulealternatives\v!bottom\endcsname\empty}
+\def\pack_textrule_nop_indeed_yes{\csname\??textrulealternatives\v!top \endcsname}
+\def\pack_textrule_nop_indeed_nop{\csname\??textrulealternatives\v!bottom\endcsname\empty}
%D\startbuffer
%D\showstruts
@@ -668,7 +665,8 @@
\permanent\protected\def\starttextrule#1%
{\bgroup
- \def\pack_textrule_nop_indeed{\csname\??textrulealternatives\v!middle\endcsname}%
+ \def\pack_textrule_nop_indeed_nop{\csname\??textrulealternatives\v!middle\endcsname}%
+ %\let\pack_textrule_nop_indeed_yes\pack_textrule_nop_indeed_nop % needs checking
\csname\??textrulealternatives\v!top\endcsname{#1}%
\bgroup
\usebodyfontparameter\directtextrulesparameter}
@@ -715,11 +713,12 @@
\c!style=,
\c!color=]
+\def\pack_fillinrules_rule_indeed{\thinrules}
+
\permanent\tolerant\protected\def\fillinrules[#1]#:#=#*#=%
{\endgraf
\begingroup
\setupcurrentfillinrules[#1]%
- \let\pack_fillinrules_rule\thinrules
\directfillinrulesparameter\c!before
\setupcurrentthinrules
[\c!n=\directfillinrulesparameter\c!n,
@@ -748,7 +747,7 @@
\fi
\setupwhitespace[\v!big]%
\ignorespaces
- \pack_fillinrules_rule
+ \pack_fillinrules_rule_indeed
\iftok{#3}\emptytoks\else
\kern\scratchdistance
\usefillinrulesstyleandcolor\c!style\c!color
@@ -770,9 +769,8 @@
\permanent\tolerant\protected\def\fillintext[#1]#:#=#*#=%
{\endgraf
\begingroup
- \setupcurrentfillinrules[#1]%
- \def\pack_fillinrules_rule{\unhbox\nextbox\unskip}%
- \dowithnextbox{\pack_fillinrules_indeed{#2}{\hfill#3}}%
+ \def\pack_fillinrules_rule_indeed{\unhbox\nextbox\unskip}% hm, needs checking
+ \dowithnextbox{\fillinrules[#1]{#2}{\hfill#3}}%
\hbox\bgroup\let\par\egroup\ignorespaces}
%D \macros
diff --git a/tex/context/base/mkxl/pack-rul.lmt b/tex/context/base/mkxl/pack-rul.lmt
index e5b2887ba..d99f0a78e 100644
--- a/tex/context/base/mkxl/pack-rul.lmt
+++ b/tex/context/base/mkxl/pack-rul.lmt
@@ -57,6 +57,7 @@ local getboxglue = nuts.getboxglue
local hpack = nuts.hpack
local getdimensions = nuts.dimensions
+local naturalhsize = nuts.naturalhsize
local flush_node = nuts.flush
local traversers = nuts.traversers
@@ -97,7 +98,15 @@ local function doreshapeframedbox(n)
if list then
if id == hlist_code then
if subtype == boxlist_code or subtype == linelist_code then
- lastlinelength = getdimensions(list)
+ -- the fast one also returns compensation (plus node)
+ local w, c, n = naturalhsize(list)
+ if n then
+ -- can become an option in framed: strict
+ w = w - c
+ else
+ -- print("no compensation found")
+ end
+ lastlinelength = w
else
lastlinelength = width
end
diff --git a/tex/context/base/mkxl/pack-rul.mkxl b/tex/context/base/mkxl/pack-rul.mkxl
index e89989dfa..b6a22d894 100644
--- a/tex/context/base/mkxl/pack-rul.mkxl
+++ b/tex/context/base/mkxl/pack-rul.mkxl
@@ -520,6 +520,8 @@
\box\b_framed_extra
\egroup}
+\let\pack_framed_overlay_initialize\relax
+
\def\pack_framed_process_background_indeed_external
{\pack_framed_overlay_initialize
\pack_framed_process_background_indeed_internal}
@@ -1182,7 +1184,7 @@
\edef\framedheight{\the\ifdim\d_framed_height>\zeropoint \d_framed_height\else\zeropoint\fi}% public
\edef\framedoffset{\the\dimexpr\ifconditional\c_framed_has_offset\localoffset \else\zeropoint\fi}% public
% for now: i need to think of something better
- \bitwiseflip \normalizelinemode -\clipwidthcode
+ % \bitwiseflip \normalizelinemode -\clipwidthcode % now handled in analyzer
% but that's for later
\ifempty\p_framed_orientation
\let\pack_framed_stop_orientation\relax
@@ -1870,26 +1872,20 @@
\newtoks \t_pack_framed_mathframed
\appendtoks
- \frozen\instance\setuevalue{\currentmathframed}{\pack_framed_mathframed{\currentmathframed}}%
+ \frozen\protected\instance\edefcsname\currentmathframed\endcsname{\pack_framed_mathframed[\currentmathframed]}%
\to \everydefinemathframed
-\protected\def\pack_framed_mathframed#1%
+\let\pack_framed_mc_one\relax
+\let\pack_framed_mc_two\relax
+
+\tolerant\protected\def\pack_framed_mathframed[#1]#*[#2]#:#3% needs testing !
{\begingroup
\edef\currentmathframed{#1}%
- \dosingleempty\pack_framed_mathframed_indeed}
-
-\def\pack_framed_math_pos
- {\global\advance\c_pack_framed_mathframed\plusone
- \xdef\pack_framed_mc_one{mcf:1:\number\c_pack_framed_mathframed}%
- \xdef\pack_framed_mc_two{mcf:2:\number\c_pack_framed_mathframed}%
- \xypos\pack_framed_mc_two}
-
-\def\pack_framed_mathframed_indeed[#1]#2% no fancy nesting supported here
- {\setupcurrentmathframed[#1]%
+ \setupcurrentmathframed[#2]%
\c_framed_mstyle\normalmathstyle
\edef\m_framed_location{\mathframedparameter\c!location}%
\ifx\m_framed_location\v!mathematics
- \enforced\let\normalstrut\pack_framed_math_pos
+ \enforced\let\normalstrut\pack_framed_math_pos % I don't like this overload!
\orelse\ifx\m_framed_location\v!low\else
\enforced\let\normalstrut\pack_framed_math_strut
\fi
@@ -1897,11 +1893,17 @@
\Ustartmath
\triggermathstyle\c_framed_mstyle
\the\t_pack_framed_mathframed
- #2%
+ #3%
\Ustopmath
\egroup
\endgroup}
+\def\pack_framed_math_pos
+ {\global\advance\c_pack_framed_mathframed\plusone
+ \xdef\pack_framed_mc_one{mcf:1:\number\c_pack_framed_mathframed}%
+ \xdef\pack_framed_mc_two{mcf:2:\number\c_pack_framed_mathframed}%
+ \xypos\pack_framed_mc_two}
+
\appendtoks
\mathraggedstatus\plustwo % makes \startalign work
\eqalignmode \zerocount % makes \startalign fit
@@ -2771,6 +2773,8 @@
%D The simple brace (or group) delimited case is typeset slightly different
%D and is not aligned.
+\let\pack_framed_strut\relax
+
\tolerant\protected\def\pack_framed_text_direct[#1]#*[#2]%
{\bgroup
\edef\currentframedtext{#1}%
diff --git a/tex/context/base/mkxl/page-bck.mkxl b/tex/context/base/mkxl/page-bck.mkxl
index 334a797b8..5683ba250 100644
--- a/tex/context/base/mkxl/page-bck.mkxl
+++ b/tex/context/base/mkxl/page-bck.mkxl
@@ -508,6 +508,8 @@
\def\v_page_backgrounds_single_set{\v!text,\v!hidden,\v!paper,\v!page,\v!leftpage,\v!rightpage}
\def\v_page_backgrounds_common_set{\v!leftedge,\v!leftmargin,\v!text,\v!rightmargin,\v!rightedge}
+\let\page_backgrounds_setup_step_nested\relax
+
\protected\def\page_backgrounds_setup_double[#1][#2][#3]% if needed we can speed this up
{\global\settrue\c_page_backgrounds_some
\def\page_backgrounds_setup_step##1%
diff --git a/tex/context/base/mkxl/page-brk.mkxl b/tex/context/base/mkxl/page-brk.mkxl
index 7256efefa..aca1d097d 100644
--- a/tex/context/base/mkxl/page-brk.mkxl
+++ b/tex/context/base/mkxl/page-brk.mkxl
@@ -124,7 +124,7 @@
{\enforced\permanent\protected\def\pagebreak[##1]{\goodbreak}}
\permanent\protected\def\disablepagebreaks % to be used grouped !
- {\enforced\let\page_breaks_process\gobbleoneoptional}
+ {\enforced\let\pagebreak\gobbleoneoptional}
\installpagebreakmethod \s!dummy
{\page_otr_command_flush_all_floats
diff --git a/tex/context/base/mkxl/page-col.mkxl b/tex/context/base/mkxl/page-col.mkxl
index 5634589fa..43330c9a7 100644
--- a/tex/context/base/mkxl/page-col.mkxl
+++ b/tex/context/base/mkxl/page-col.mkxl
@@ -105,6 +105,8 @@
%D with \type {\currentcolumnbox}. In case of the mid columns, \type
%D {\firstcolumnbox} and \type {\lastcolumnbox} are handled outside these macro's.
+\let\page_columns_action\relax
+
\permanent\protected\def\dohandleallcolumnscs#1{\let\page_columns_action #1\page_columns_all_indeed}
\permanent\protected\def\dohandleallcolumns #1{\def\page_columns_action{#1}\page_columns_all_indeed}
diff --git a/tex/context/base/mkxl/page-cst.mkxl b/tex/context/base/mkxl/page-cst.mkxl
index d0d6f2abd..a6f63a562 100644
--- a/tex/context/base/mkxl/page-cst.mkxl
+++ b/tex/context/base/mkxl/page-cst.mkxl
@@ -633,6 +633,8 @@
\newdimen\d_page_grd_span_width
+\let\page_grd_span_stop\relax
+
\permanent\tolerant\protected\def\startpagegridspan[#1]#*[#2]#*[#3]% [#3] gobbles space
{\endgraf % else rubish output if forgotten
\synchronizepagegrid
diff --git a/tex/context/base/mkxl/page-pcl.mkxl b/tex/context/base/mkxl/page-pcl.mkxl
index 98f69b10d..6d186a4cd 100644
--- a/tex/context/base/mkxl/page-pcl.mkxl
+++ b/tex/context/base/mkxl/page-pcl.mkxl
@@ -546,17 +546,13 @@
\let\page_col_command_flush_top_insertions \page_one_command_flush_top_insertions
\let\page_col_command_flush_bottom_insertions\page_one_command_flush_bottom_insertions
-%let\page_col_command_set_top_insertions \page_one_command_set_top_insertions
-\let\page_col_command_set_bottom_insertions \page_one_command_set_bottom_insertions
+\let\page_col_command_set_bottom_insertions \page_one_command_set_bottom_insertions
-%let\page_col_command_set_top_insertions_indeed \page_one_command_set_top_insertions
-\let\page_col_command_set_bottom_insertions_indeed \page_one_command_set_botttom_insertions
-
-\let\page_col_command_flush_float_box \page_one_command_flush_float_box
-\let\page_col_command_synchronize_side_floats \page_one_command_synchronize_side_floats
-\let\page_col_command_flush_side_floats \page_one_command_flush_side_floats
-\let\page_col_command_flush_margin_blocks \page_one_command_flush_margin_blocks
-\let\page_col_command_test_page \page_one_command_test_page
+\let\page_col_command_flush_float_box \page_one_command_flush_float_box
+\let\page_col_command_synchronize_side_floats\page_one_command_synchronize_side_floats
+\let\page_col_command_flush_side_floats \page_one_command_flush_side_floats
+\let\page_col_command_flush_margin_blocks \page_one_command_flush_margin_blocks
+\let\page_col_command_test_page \page_one_command_test_page
%D The separator code is more or less the same as mixed columns but we need
%D to compensate for the top floats so we comment a bit for now.
diff --git a/tex/context/base/mkxl/page-sel.mklx b/tex/context/base/mkxl/page-sel.mklx
index 03be048f4..1ec1b40e3 100644
--- a/tex/context/base/mkxl/page-sel.mklx
+++ b/tex/context/base/mkxl/page-sel.mklx
@@ -77,6 +77,9 @@
{\emptyhbox\page}}%
\egroup}
+\let\page_selectors_filter_step_indeed\gobbleoneargument
+\let\page_selectors_filter_step \gobbleoneargument
+
\permanent\tolerant\protected\def\filterpages[#filename]#spacer[#selection]#spacer[#settings]% % \noffigurepages not yet supported
{\bgroup
\dontcomplain
diff --git a/tex/context/base/mkxl/page-txt.mklx b/tex/context/base/mkxl/page-txt.mklx
index 4a217538e..f8db27f38 100644
--- a/tex/context/base/mkxl/page-txt.mklx
+++ b/tex/context/base/mkxl/page-txt.mklx
@@ -763,9 +763,10 @@
\def\page_layouts_reset_page_number_location
{\ifrelax\m_page_layouts_page_number_location_v\else
+ % this can be done better now, no meaning hackery needed
\edef\currentlayoutelement{\m_page_layouts_page_number_location_v:\m_page_layouts_page_number_location_h}%
- \edef\page_layouts_previous_page_number_locator{\detokenizedlayoutelementparameter\m_page_layouts_page_number_location_x}%
- \doif{\meaning\page_layouts_previous_page_number_locator}{\meaning\page_layouts_place_page_number}
+ \edef\tempstring{\detokenizedlayoutelementparameter\m_page_layouts_page_number_location_x}%
+ \doif{\meaning\tempstring}{\meaning\page_layouts_place_page_number}
{\resetlayoutelementparameter\m_page_layouts_page_number_location_x}%
\fi}
diff --git a/tex/context/base/mkxl/scrn-bar.mklx b/tex/context/base/mkxl/scrn-bar.mklx
index f99f7569f..4cfcbde81 100644
--- a/tex/context/base/mkxl/scrn-bar.mklx
+++ b/tex/context/base/mkxl/scrn-bar.mklx
@@ -253,6 +253,8 @@
\newconstant\c_scrn_bar_mode
+\let\scrn_bar_goto_indeed\relax
+
\protected\def\scrn_bar_goto_x#command%
{\doifelse{\interactionbarparameter\c!symbol}\v!yes
{\setupsymbolset[\interactionparameter\c!symbolset]%
diff --git a/tex/context/base/mkxl/scrn-but.mklx b/tex/context/base/mkxl/scrn-but.mklx
index 76694e1d9..9832ffbbb 100644
--- a/tex/context/base/mkxl/scrn-but.mklx
+++ b/tex/context/base/mkxl/scrn-but.mklx
@@ -521,6 +521,8 @@
%D This calls: % can be \c!command for vertical/horizontal
+\let\scrn_menu_packager\relax
+
\setvalue{\??menupacker\v!vertical}% all menus
{\let\scrn_menu_packager\scrn_menu_packager_vertical
\setbox\b_scrn_menu\hbox{\scrn_menu_actions\currentinteractionmenulocation}%
@@ -631,6 +633,8 @@
% removed: \restorestandardblank (vspacing) ... should happen elsewhere
+\let\scrn_menu_between_action_indeed\relax
+
\def\scrn_menu_package_vertical#content%
{\begingroup
\global\c_scrn_menu_position\zerocount
diff --git a/tex/context/base/mkxl/scrn-fld.mklx b/tex/context/base/mkxl/scrn-fld.mklx
index d4f07d5e9..6c134268c 100644
--- a/tex/context/base/mkxl/scrn-fld.mklx
+++ b/tex/context/base/mkxl/scrn-fld.mklx
@@ -754,7 +754,7 @@
\permanent\tolerant\protected\def\fieldstack[#tag]#spacer[#symbols]#spacer[#settings]%
{\ifparameter#symbols\or
- \scrn_fieldstack_define[#tag][#symbols][#settings]%
+ \definefieldstack[#tag][#symbols][#settings]%
\fi
\csname\??fieldstack#tag\endcsname}
@@ -959,6 +959,8 @@
[\c!frame=\v!off,
\c!offset=\v!overlay]
+\let\scrn_rollbutton_symbol\relax
+
\def\scrn_rollbutton_symbol_m
{\scrn_rollbutton_symbol_indeed
\interactionmenuparameter
diff --git a/tex/context/base/mkxl/spac-par.mkxl b/tex/context/base/mkxl/spac-par.mkxl
index 03b81b25d..808043cb6 100644
--- a/tex/context/base/mkxl/spac-par.mkxl
+++ b/tex/context/base/mkxl/spac-par.mkxl
@@ -245,14 +245,17 @@
\newconditional\c_spac_paragraphs_intro_next
\newconditional\c_spac_paragraphs_intro_each
+\let\spac_paragraphs_flush_intro\relax
+\let\spac_paragraphs_intro_step \relax
+
\permanent\protected\tolerant\def\setupparagraphintro[#1]#*[#2]%
{\def\spac_paragraphs_intro_step##1%
{\csname\??paragraphintro\ifcsname\??paragraphintro##1\endcsname##1\fi\endcsname{#2}}%
\processcommacommand[#1]\spac_paragraphs_intro_step}
-\letvalue{\??paragraphintro\empty}\gobbleoneargument
+\letcsname\??paragraphintro\empty\endcsname\gobbleoneargument
-\setvalue{\??paragraphintro\v!reset}#1%
+\defcsname\??paragraphintro\v!reset\endcsname#1%
{\global\setfalse\c_spac_paragraphs_intro_first
\global\setfalse\c_spac_paragraphs_intro_next
\global\setfalse\c_spac_paragraphs_intro_each
@@ -261,17 +264,17 @@
\global\t_spac_paragraphs_intro_each \emptytoks
\glet\spac_paragraphs_flush_intro\relax}
-\setvalue{\??paragraphintro\v!first}#1%
+\defcsname\??paragraphintro\v!first\endcsname#1%
{\global\settrue\c_spac_paragraphs_intro_first
\gtoksapp\t_spac_paragraphs_intro_first{#1}%
\glet\spac_paragraphs_flush_intro\spac_paragraphs_flush_intro_indeed}
-\setvalue{\??paragraphintro\v!next}#1%
+\defcsname\??paragraphintro\v!next\endcsname#1%
{\global\settrue\c_spac_paragraphs_intro_next
\gtoksapp\t_spac_paragraphs_intro_next{#1}%
\glet\spac_paragraphs_flush_intro\spac_paragraphs_flush_intro_indeed}
-\setvalue{\??paragraphintro\v!each}#1%
+\defcsname\??paragraphintro\v!each\endcsname#1%
{\global\settrue\c_spac_paragraphs_intro_each
\gtoksapp\t_spac_paragraphs_intro_each{#1}%
\glet\spac_paragraphs_flush_intro\spac_paragraphs_flush_intro_indeed}
diff --git a/tex/context/base/mkxl/spac-ver.lmt b/tex/context/base/mkxl/spac-ver.lmt
index f3fa78ddd..2d4aace24 100644
--- a/tex/context/base/mkxl/spac-ver.lmt
+++ b/tex/context/base/mkxl/spac-ver.lmt
@@ -2359,17 +2359,6 @@ end
do
- -- old variant
-
--- implement {
--- name = "vspacing",
--- actions = vspacing.analyze,
--- scope = "private",
--- arguments = "string"
--- }
-
- -- new variant
-
interfaces.implement {
name = "injectvspacing",
actions = vspacing.inject,
diff --git a/tex/context/base/mkxl/spac-ver.mkxl b/tex/context/base/mkxl/spac-ver.mkxl
index 4bbf723bd..6787c7cad 100644
--- a/tex/context/base/mkxl/spac-ver.mkxl
+++ b/tex/context/base/mkxl/spac-ver.mkxl
@@ -165,11 +165,11 @@
\installmacrostack\currentinterlinespace
-\permanent\overloaded\tolerant\protected\def\setupinterlinespace[#1]#*[#2]%
+\permanent\overloaded\tolerant\protected\def\setupinterlinespace[#1]%
{\ifarguments
\settrue\interlinespaceisset
\spac_linespacing_synchronize_local
- \or
+ \else
\settrue\interlinespaceisset
\ifcsname\namedinterlinespacehash{#1}\s!parent\endcsname
\edef\currentinterlinespace{#1}%
@@ -178,9 +178,6 @@
\else
\spac_linespacing_setup_specified_or_relative[#1]%
\fi
- \or
- \settrue\interlinespaceisset
- \setup_interlinespace[#1][#2]%
\fi}
\def\spac_linespacing_setup_specified_or_relative[#1]%
@@ -1892,6 +1889,7 @@
%
% \ifgridsnapping will go
+\installcorenamespace{vspacing}
\installcorenamespace{vspacingamount}
\permanent\tolerant\protected\def\definevspacingamount[#1]#*[#2]#*[#3]% can be combined
@@ -1991,25 +1989,9 @@
\def\spac_vspacing_yes_ignore[#1]{\ifmmode\else\par\fi}
\def\spac_vspacing_nop_ignore {\ifmmode\else\par\fi}
-\installcorenamespace{vspacing}
-
\permanent\protected\def\directvspacing#1%
{\ifmmode\else\par\ifvmode\clf_injectvspacing\ifgridsnapping\plusone\else\zerocount\fi{\iftok{#1}\emptytoks\currentvspacing\else#1\fi}\fi\fi}
-\def\spac_vspacing_dim_preset#1%
- {\ifcsname\??vspacing#1\endcsname
- \lastnamedcs
- \else
- \spac_vspacing_yes_preset{#1}%
- \fi}
-
-\def\spac_vspacing_yes_preset#1%
- {\xdefcsname\??vspacing#1\endcsname{\clf_vspacing{#1}}%
- %\writestatus{}{}%
- %\writestatus{#1}{\expandafter\meaning\csname\??vspacing#1\endcsname}%
- %\writestatus{}{}%
- \csname\??vspacing#1\endcsname}
-
\permanent\protected\def\directdefaultvspacing
{\ifinpagebody % somewhat weird
\directvspacing\currentvspacing
diff --git a/tex/context/base/mkxl/strc-flt.mklx b/tex/context/base/mkxl/strc-flt.mklx
index 846d55d60..8f96701f5 100644
--- a/tex/context/base/mkxl/strc-flt.mklx
+++ b/tex/context/base/mkxl/strc-flt.mklx
@@ -1581,6 +1581,9 @@
\permanent\def\captionminwidth {\the\d_strc_floats_caption_min_width}
\permanent\def\captionovershoot{\the\d_strc_floats_caption_overshoot}
+\let\strc_floats_align_content\relax
+\let\strc_floats_align_caption\relax
+
\def\strc_floats_set_caption_criteria % can become parameter (but what name)
{\d_strc_floats_caption_min_width15\bodyfontsize
\d_strc_floats_caption_overshoot 2\emwidth}
diff --git a/tex/context/base/mkxl/strc-itm.mklx b/tex/context/base/mkxl/strc-itm.mklx
index 9f0ba35db..efead3d83 100644
--- a/tex/context/base/mkxl/strc-itm.mklx
+++ b/tex/context/base/mkxl/strc-itm.mklx
@@ -741,25 +741,31 @@
% \strc_itemgroups_insert_reference
% \endgroup}
+\let\strc_itemgroups_temp_symbol \empty
+\let\strc_itemgroups_used_symbol \empty
+\let\strc_itemgroups_asked_symbol \empty
+\let\strc_itemgroups_margin_symbol\empty
+\let\strc_itemgroups_extra_symbol \empty
+
\def\strc_itemgroups_set_symbol#symbol%
- {\edef\strc_itemgroups_tmp_symbol{#symbol}%
- \ifempty\strc_itemgroups_tmp_symbol \else
- \doifelsesymboldefined\strc_itemgroups_tmp_symbol
+ {\edef\strc_itemgroups_temp_symbol{#symbol}%
+ \ifempty\strc_itemgroups_temp_symbol \else
+ \doifelsesymboldefined\strc_itemgroups_temp_symbol
\strc_itemgroups_set_symbol_symbol
- {\doifelseconversiondefined\strc_itemgroups_tmp_symbol
+ {\doifelseconversiondefined\strc_itemgroups_temp_symbol
\strc_itemgroups_set_symbol_conversion
\donothing}%
\fi}
\def\strc_itemgroups_set_symbol_symbol
- {\let\currentitemgroupsymbol\strc_itemgroups_tmp_symbol
+ {\let\currentitemgroupsymbol\strc_itemgroups_temp_symbol
\strc_itemgroups_store_global_symbol\currentitemgroupsymbol
\strc_itemgroups_store_local_symbol\v_strc_itemgroups_unknown_symbol
\let\strc_itemgroups_used_symbol\strc_itemgroups_set_symbol_symbol_item
\let\strc_itemgroups_asked_symbol\empty}
\def\strc_itemgroups_set_symbol_conversion
- {\let\currentitemgroupsymbol\strc_itemgroups_tmp_symbol
+ {\let\currentitemgroupsymbol\strc_itemgroups_temp_symbol
\strc_itemgroups_store_global_symbol\currentitemgroupsymbol
\strc_itemgroups_store_local_symbol\strc_itemgroups_insert_item_counter
\let\strc_itemgroups_used_symbol\strc_itemgroups_set_symbol_conversion_item
diff --git a/tex/context/base/mkxl/strc-not.mklx b/tex/context/base/mkxl/strc-not.mklx
index b8a44e287..5ac571374 100644
--- a/tex/context/base/mkxl/strc-not.mklx
+++ b/tex/context/base/mkxl/strc-not.mklx
@@ -297,17 +297,19 @@
\expandafter\strc_notations_start_reference
\fi[#2]}
+\let\strc_notations_pickup_yes\relax
+
\protected\def\strc_notations_start_setups[#1]%
- {\normalexpanded{\def\noexpand\strc_pickup_yes##/\csname\e!stop\currentconstruction\endcsname{\strc_notations_start_setups_indeed[#1]{##1}}}%
- \strc_pickup_yes}
+ {\normalexpanded{\def\noexpand\strc_notations_pickup_yes##/\csname\e!stop\currentconstruction\endcsname{\strc_notations_start_setups_indeed[#1]{##1}}}%
+ \strc_notations_pickup_yes}
\protected\def\strc_notations_start_setups_indeed[#1]#*#2%
{\strc_constructions_register[][\c!label={\descriptionparameter\c!text},\c!reference=,\c!title={#2},\c!bookmark=,\c!list=,\c!referencetext=,#1]%
\strc_notations_wrapup}
\protected\def\strc_notations_start_reference[#1]%
- {\normalexpanded{\def\noexpand\strc_pickup_yes##/\csname\e!stop\currentconstruction\endcsname{\strc_notations_start_reference_indeed[#1]{##1}}}%
- \strc_pickup_yes}
+ {\normalexpanded{\def\noexpand\strc_notations_pickup_yes##/\csname\e!stop\currentconstruction\endcsname{\strc_notations_start_reference_indeed[#1]{##1}}}%
+ \strc_notations_pickup_yes}
\protected\def\strc_notations_start_reference_indeed[#1]#*#2%
{\strc_constructions_register[][\c!label={\descriptionparameter\c!text},\c!reference={#1},\c!title={#2},\c!bookmark=,\c!list=,\c!referencetext=]%
@@ -550,6 +552,9 @@
\let\strc_notes_set_reference_attribute_text \donothing
\let\strc_notes_set_destination_attribute_text\donothing
+\let\strc_notes_set_style_color_inline \relax
+\let\strc_notes_set_style_color_display\relax
+
% inline
\let\m_strc_notes_internal\relax
diff --git a/tex/context/base/mkxl/strc-reg.mkxl b/tex/context/base/mkxl/strc-reg.mkxl
index 841b1e8be..22a6614b7 100644
--- a/tex/context/base/mkxl/strc-reg.mkxl
+++ b/tex/context/base/mkxl/strc-reg.mkxl
@@ -64,6 +64,8 @@
% maybe we should drop the plural form
+\let\strc_registers_setup_step\relax
+
\permanent\tolerant\protected\overloaded\def\setupregister[#1]#*[#2]#*[#3]%
{\ifarguments\or
\strc_registers_setup_saved[#1]%
diff --git a/tex/context/base/mkxl/strc-syn.mkxl b/tex/context/base/mkxl/strc-syn.mkxl
index bcf5895c2..df573a7e9 100644
--- a/tex/context/base/mkxl/strc-syn.mkxl
+++ b/tex/context/base/mkxl/strc-syn.mkxl
@@ -636,7 +636,7 @@
{\begingroup
\edef\currentsimplelist{#1}%
\normalexpanded{\startnamedsection[\v!chapter][\c!title={\headtext{\simplelistparameter\s!multi}},\c!reference=#1]}%
- \strc_sorting_place_list[#1][#2]%
+ \placelistofsorts[#1][#2]%
\page
\stopnamedsection
\endgroup}
diff --git a/tex/context/base/mkxl/strc-tag.mkxl b/tex/context/base/mkxl/strc-tag.mkxl
index 18cb65760..c25970747 100644
--- a/tex/context/base/mkxl/strc-tag.mkxl
+++ b/tex/context/base/mkxl/strc-tag.mkxl
@@ -340,7 +340,7 @@
{\iftrialtypesetting
\expandafter\gobbletwooptionals
\else
- \expandafterstrc_set_element_user_properties
+ \expandafter\strc_tags_set_element_user_properties
\fi}
\protected\def\strc_tags_enable_properties
diff --git a/tex/context/base/mkxl/supp-box.lmt b/tex/context/base/mkxl/supp-box.lmt
index 9dd85e093..206529bae 100644
--- a/tex/context/base/mkxl/supp-box.lmt
+++ b/tex/context/base/mkxl/supp-box.lmt
@@ -1330,7 +1330,7 @@ do
else
setfield(b,field)
end
- context(p)
+ context(p) -- todo: proper return
end
end
diff --git a/tex/context/base/mkxl/supp-box.mkxl b/tex/context/base/mkxl/supp-box.mkxl
index b8d6e86e4..3f8739c42 100644
--- a/tex/context/base/mkxl/supp-box.mkxl
+++ b/tex/context/base/mkxl/supp-box.mkxl
@@ -556,6 +556,8 @@
%D In this implementation the \type {\aftergroup} construction is needed because
%D \type {\afterassignment} is executed inside the box.
+\let\syst_boxes_with_next_box\relax
+
\permanent\protected\def\dowithnextbox#1%
{\def\syst_boxes_with_next_box{#1}%
\afterassignment\syst_boxes_with_next_box_indeed
@@ -639,6 +641,9 @@
% \let\syst_boxes_with_next_box_two#1%
% \afterassignment\syst_boxes_with_next_box_content_indeed
% \setbox\nextbox}
+%
+% \def\syst_boxes_with_next_box_content_indeed
+% {\syst_boxes_with_next_box_two\aftergroup\syst_boxes_with_next_box_one}
\permanent\protected\def\dowithnextboxcontent#1#2% inside, after
{\afterassigned{#1\aftergrouped{#2}}%
@@ -648,9 +653,6 @@
{\afterassigned{#1\aftergroup#2}%
\setbox\nextbox}
-\def\syst_boxes_with_next_box_content_indeed
- {\syst_boxes_with_next_box_two\aftergroup\syst_boxes_with_next_box_one}
-
%D \macros
%D {llap, rlap, tlap, blap, clap}
%D
@@ -1853,6 +1855,8 @@
\newbox\processbox % public : this is the one where \nextbox's end up in
+\let\syst_boxes_process_indeed\relax
+
\permanent\protected\def\processboxes#1%
{\bgroup
\def\syst_boxes_process_indeed{#1}% #1 can be redefined halfway
diff --git a/tex/context/base/mkxl/supp-ran.mkxl b/tex/context/base/mkxl/supp-ran.mkxl
index 4762153f7..7d212fdfd 100644
--- a/tex/context/base/mkxl/supp-ran.mkxl
+++ b/tex/context/base/mkxl/supp-ran.mkxl
@@ -44,7 +44,9 @@
\aliased\let\freezerandomseed \pushrandomseed
\aliased\let\defrostrandomseed\poprandomseed
+\setnewconstant \mpscaledmax 4095 % for old times sake
+
\permanent\def\randomnumber #1#2{\clf_getrandomnumber\numexpr#1\relax\numexpr#2\relax}
-\permanent\def\mprandomnumber {\clf_getmprandomnumber}
+\permanent\def\mprandomnumber {\clf_getrandomnumber\zerocount\mpscaledmax}
\protect \endinput
diff --git a/tex/context/base/mkxl/syst-aux.mkxl b/tex/context/base/mkxl/syst-aux.mkxl
index d2e5ce581..e4cecfe58 100644
--- a/tex/context/base/mkxl/syst-aux.mkxl
+++ b/tex/context/base/mkxl/syst-aux.mkxl
@@ -289,13 +289,6 @@
%D The next one is handy in predictable situations:
-\def\syst_helpers_do_if_fast_optional_check_else
- {\ifx\nexttoken\syst_helpers_next_optional_character_token
- \expandafter\m_syst_action_yes
- \else
- \expandafter\m_syst_action_nop
- \fi}
-
\permanent\protected\def\doifelsefastoptionalcheck#1#2%
{\def\m_syst_action_yes{#1}%
\def\m_syst_action_nop{#2}%
@@ -898,6 +891,8 @@
%D \def\command[#1]{... #1 ...}
%D \stoptyping
+\let\syst_helpers_do_process_comma_list_with_parameters\gobbleoneargument
+
\permanent\protected\def\processcommalistwithparameters[#1]#2%
{\def\syst_helpers_do_process_comma_list_with_parameters##1{#2[##1]}%
\processcommalist[#1]\syst_helpers_do_process_comma_list_with_parameters}
@@ -967,6 +962,11 @@
\mutable\let\commalistelement\empty
+\let\m_syst_string_one\empty
+\let\m_syst_string_two\empty
+
+\let\syst_helpers_do_compare_process_action\relax
+
\protected\def\syst_helpers_do_compare_process_action_a[#1=>#2][#3]%
{\edef\m_syst_string_two{#1}%
\ifx\m_syst_string_two\s!default
@@ -1019,6 +1019,9 @@
\fi
[#1]}
+\let\syst_helpers_do_process_action \gobbleoneargument
+\let\syst_helpers_do_do_process_action\gobbleoneargument
+
\tolerant\protected\def\syst_helpers_process_first_action_in_set_indeed[#1]#*[#2]%
{\def\syst_helpers_do_process_action##1%
{\def\syst_helpers_do_do_process_action####1{\syst_helpers_do_compare_process_action_c[####1][##1]}%
@@ -1309,6 +1312,8 @@
%D The gain in speed depends on the length of the argument (the longer the argument,
%D the less we gain). The question is: do we still need these raw variants?
+\let\syst_helpers_do_make_raw_comma_list\gobbleoneargument
+
\permanent\protected\def\makerawcommalist[#1]#2% use \processnext ... here
{\scratchtoks\emptytoks
\def\syst_helpers_do_make_raw_comma_list##1{\iftok\scratchtoks\emptytoks\scratchtoks{##1}\else\toksapp\scratchtoks{,##1}\fi}%
@@ -1601,6 +1606,8 @@
%D \getemptyparameters [label] [...=...,...=...]
%D \stoptyping
+\let\syst_helpers_get_empty_parameters\gobbleoneargument
+
\permanent\protected\def\getemptyparameters[#1]#*[#2]%
{\def\syst_helpers_get_empty_parameters##1{\doassignempty[#1][##1]}%
\processcommalist[#2]\syst_helpers_get_empty_parameters}
@@ -1630,9 +1637,11 @@
\mutable\let\currentassignmentlistkey \empty
\mutable\let\currentassignmentlistvalue \empty
+\let\syst_helpers_process_assign_entry\gobbleoneargument
+
\permanent\protected\def\processassignmentlist[#1]#2% #2 == \command{key}{value]
- {\def\syst_helpers_process_assignment_entry##1{#2}% {##2}{##3} % namespace is ignored
- \dogetparameters\syst_helpers_process_assignment_entry[][#1]}
+ {\def\syst_helpers_process_assign_entry##1{#2}% {##2}{##3} % namespace is ignored
+ \dogetparameters\syst_helpers_process_assign_entry[][#1]}
\permanent\protected\def\processassignmentcommand[#1]%
{\normalexpanded{\processassignmentlist[#1]}}
@@ -1692,6 +1701,8 @@
%D By using \type {\docopyvalue} we've prepared this command for use in a
%D multi||lingual environment.
+\let\syst_helpers_copy_parameter\relax
+
\permanent\protected\def\copyparameters[#1]#*[#2]#*[#3]%
{\doifnot{#1}{#2}
{\def\syst_helpers_copy_parameter{\docopyvalue{#1}{#2}}% ##1
@@ -2884,6 +2895,8 @@
\def\syst_helpers_dodo_global
{\resetglobal\global}
+\let\syst_helpers_redo_global\relax
+
\permanent\protected\def\saveglobal
{\let\syst_helpers_dodo_global\dodoglobal
\let\syst_helpers_redo_global\redoglobal}
@@ -3240,6 +3253,8 @@
%D \dowith{a,b,c}{[#1]}
%D \stoptyping
+\let\syst_helpers_with\gobbleoneargument
+
\permanent\protected\def\dowith#1#2%
{\def\syst_helpers_with##1{#2}%
\normalexpanded{\processcommalist[#1]}\syst_helpers_with}
@@ -3471,10 +3486,10 @@
%D Think of:
%D
%D \starttyping
-%D \domatch {(\letterpercent w+) *(\letterpercent w*)} {aa bb cc dd} {
+%D \doloopovermatch {(\letterpercent w+) *(\letterpercent w*)} {aa bb cc dd} {
%D [
-%D \domatch{(\letterpercent w)(\letterpercent w)} {#1} {(##1 ##2)}
-%D \domatch{(\letterpercent w)(\letterpercent w)} {#2} {(##1 ##2)}
+%D \doloopovermatch{(\letterpercent w)(\letterpercent w)} {#1} {(##1 ##2)}
+%D \doloopovermatch{(\letterpercent w)(\letterpercent w)} {#2} {(##1 ##2)}
%D ]
%D }
%D
@@ -3875,6 +3890,9 @@
\permanent\protected\def\gobbleuntil#1%
{\def\syst_helpers_gobble_indeed##-#1{}\syst_helpers_gobble_indeed}
+\permanent\protected\def\gobbleuntilandfinalize#1%
+ {\def\syst_helpers_gobble_indeed##-#1{#1}\syst_helpers_gobble_indeed}
+
\permanent\protected\def\gobbleuntilrelax#-\relax
{}
@@ -4433,6 +4451,8 @@
% {\scratchtoks{xaa} \removetoks x\from\scratchtoks [\the\scratchtoks]}
% {\scratchtoks{a\relax b} \removetoks \relax\from\scratchtoks [\showthe\scratchtoks]}
+\let\syst_helpers_remove_toks\relax
+
\permanent\protected\def\removetoks#1\from#2%
{\def\syst_helpers_remove_toks##1#1##2\empty\empty\empty##3^^^^0004%
{\def\m_syst_string_one{##3}%
@@ -5083,6 +5103,8 @@
%D A complete match of two sets can be tested with \type {\doifallcommonelse}, where
%D the first two arguments are sets.
+\let\syst_helpers_do_common_check_all\gobbleoneargument
+
\def\syst_helpers_do_if_all_common_else#1#2#3#4% slow
{\def\syst_helpers_do_common_check_all##1%
{\doifnotinset{##1}{#4}\donefalse
@@ -5216,6 +5238,7 @@
%D As we can see below, spaces following a control sequence are to enclosed in \type
%D {{}}.
+\let\syst_helpers_strip_character \relax
\let\m_syst_helpers_strip_character\empty
\permanent\protected\def\stripcharacter#1\from#2\to#3%
@@ -5429,6 +5452,9 @@
% {\syst_helpers_process_assign_list_assign[##1==\relax]}%
% \processcommalist[#2]\syst_helpers_process_assign_list_step}
+\let\syst_helpers_process_assign_list_assign\gobbleoneoptional
+\let\syst_helpers_process_assign_list_step \gobbleoneargument
+
\permanent\protected\def\processassignlist#1[#2]#3%
{\def\syst_helpers_process_assign_list_assign[##1=##-=##2]%
{\doif{##2}\relax{#3{##1}}}%
@@ -5628,6 +5654,8 @@
%D Running this one not always gives the expected results. Consider for instance the
%D macro for which I originally wrote this token handler.
+\let\syst_helpers_split_off_tokens\gobbleoneargument
+
\permanent\protected\def\splitofftokens#1\from#2\to#3% slow but hardly used
{\ifnum#1>\zerocount
\privatescratchcounter#1\relax
@@ -5674,6 +5702,8 @@
\mutable\let\nexthandledtoken\empty % part of public interface
+\let\syst_helpers_handle_tokens_command\relax
+
\protected\def\syst_helpers_handle_tokens
{\futurelet\nexthandledtoken\syst_helpers_handle_tokens_indeed}
@@ -6231,6 +6261,9 @@
\newcount\c_syst_helpers_test_feature_n
\newcount\c_syst_helpers_test_feature_m
+\let\syst_helpers_test_feature_yes\relax
+\let\syst_helpers_test_feature_nop\relax
+
\permanent\def\currentfeaturetest{\number\c_syst_helpers_test_feature_n}
\permanent\protected\def\testfeature#1#2%
diff --git a/tex/context/base/mkxl/syst-ini.mkxl b/tex/context/base/mkxl/syst-ini.mkxl
index ec55c49d1..781515615 100644
--- a/tex/context/base/mkxl/syst-ini.mkxl
+++ b/tex/context/base/mkxl/syst-ini.mkxl
@@ -395,6 +395,7 @@
\mutable\let\tempstring \empty
+\mutable\let\scratchstring \empty
\mutable\let\scratchstringone\empty
\mutable\let\scratchstringtwo\empty
@@ -935,6 +936,8 @@
%D get. Beware: this macro does not support nested loops. We use a namespace
%D prefix \type {@@pln}.
+\let\syst_plain_body\relax
+
\permanent\def\loop#1\repeat{\def\syst_plain_body{#1}\syst_plain_iterate} % might go
%D The following makes \type {\loop} \unknown\ \type {\if} \unknown\ \type
@@ -1167,4 +1170,147 @@
\suggestedalias \dimen@i \scratchdimenone
\suggestedalias \dimen@ii \scratchdimentwo
+%D The next feature is experimental and could go into another system module, but it
+%D feels more natural to have it here.
+%D
+%D \starttyping
+%D \begingroup
+%D \newlocaldimen\mydimena % \mydimena1\onepoint
+%D \newlocaldimen\mydimenb % \mydimenb2\onepoint
+%D \begingroup
+%D \newlocaldimen\mydimena % \mydimena3\onepoint
+%D \newlocaldimen\mydimenb % \mydimenb4\onepoint
+%D \newlocaldimen\mydimenc % \mydimenc5\onepoint
+%D \endgroup
+%D \endgroup
+%D
+%D \begingroup
+%D \setlocaldimen\mydimena 1\onepoint
+%D \setlocaldimen\mydimenb 2\onepoint
+%D \begingrou
+%D \setlocaldimen\mydimena 3\onepoint
+%D \setlocaldimen\mydimenb 4\onepoint
+%D \setlocaldimen\mydimenc 5\onepoint
+%D \endgroup
+%D \endgroup
+%D \stoptyping
+%D
+%D There is a little extra overhead in the overload protection but not that much.
+%D Instead of:
+
+% \newcount\c_syst_local_count \c_syst_local_count \c_syst_max_allocated_register
+% \newcount\c_syst_local_dimen \c_syst_local_dimen \c_syst_local_count
+% \newcount\c_syst_local_skip \c_syst_local_skip \c_syst_local_count
+% \newcount\c_syst_local_muskip\c_syst_local_muskip\c_syst_local_count
+% \newcount\c_syst_local_box \c_syst_local_box \c_syst_local_count
+% \newcount\c_syst_local_toks \c_syst_local_toks \c_syst_local_count
+
+%D We do this:
+
+\permanent\countdef\c_syst_local_count = 72 \c_syst_local_count = \c_syst_max_allocated_register
+\permanent\countdef\c_syst_local_dimen = 73 \c_syst_local_dimen = \c_syst_local_count
+\permanent\countdef\c_syst_local_skip = 74 \c_syst_local_skip = \c_syst_local_count
+\permanent\countdef\c_syst_local_muskip = 75 \c_syst_local_muskip = \c_syst_local_count
+\permanent\countdef\c_syst_local_box = 76 \c_syst_local_box = \c_syst_local_count
+\permanent\countdef\c_syst_local_toks = 77 \c_syst_local_toks = \c_syst_local_count
+\permanent\countdef\c_syst_local_read = 78 \c_syst_local_read = \c_syst_local_count
+\permanent\countdef\c_syst_local_write = 79 \c_syst_local_write = \c_syst_local_count
+
+% We should have used \c_syst_local_dimen = \numexpr \c_syst_max_allocated_register +
+% 1\relax, but we do this instead (it's no problem loosing a few registers).
+
+\c_syst_max_allocated_register \numexpr\c_syst_max_allocated_register:2\relax % floor
+
+\permanent\protected\def\syst_local_overflow#1#2{\writestatus\m!system{no room for local #1 \string#2}\wait}
+
+\permanent\protected\def\setnewlocaldimen#1%
+ {\ifnum\c_syst_local_dimen>\c_syst_max_allocated_register
+ \advance\c_syst_local_dimen\minusone\dimendef#1\c_syst_local_dimen
+ \else
+ \syst_local_overflow_dimen#1%
+ \fi
+ #1}
+
+\permanent\protected\def\setnewlocalcount#1%
+ {\ifnum\c_syst_local_count>\c_syst_max_allocated_register
+ \advance\c_syst_local_count\minusone
+ \overloaded\frozen\countdef#1\c_syst_local_count
+ \else
+ \syst_local_overflow_count#1%
+ \fi
+ #1}
+
+\permanent\protected\def\setnewlocalskip#1%
+ {\ifnum\c_syst_local_skip>\c_syst_max_allocated_register
+ \advance\c_syst_local_skip\minusone
+ \overloaded\frozen\skipdef#1\c_syst_local_skip
+ \else
+ \syst_local_overflow_skip#1%
+ \fi
+ #1}
+
+\permanent\protected\def\setnewlocalmuskip#1%
+ {\ifnum\c_syst_local_muskip>\c_syst_max_allocated_register
+ \advance\c_syst_local_muskip\minusone
+ \overloaded\frozen\muskipdef#1\c_syst_local_muskip
+ \else
+ \syst_local_overflow_muskip#1%
+ \fi
+ #1}
+
+\permanent\protected\def\setnewlocaltoks#1%
+ {\ifnum\c_syst_local_toks>\c_syst_max_allocated_register
+ \advance\c_syst_local_toks\minusone
+ \overloaded\frozen\toksdef#1\c_syst_local_toks
+ \else
+ \syst_local_overflow_toks#1%
+ \fi
+ #1}
+
+\permanent\protected\def\setnewlocalbox#1%
+ {\ifnum\c_syst_local_box>\c_syst_max_allocated_register
+ \advance\c_syst_local_box\minusone
+ \overloaded\frozen\integerdef#1\c_syst_local_box
+ \else
+ \syst_local_overflow_box#1%
+ \fi
+ \setbox#1}
+
+\permanent\protected\def\newlocalread#1% so no set
+ {\ifnum\c_syst_local_read>\c_syst_max_allocated_register
+ \advance\c_syst_local_read\minusone
+ \overloaded\frozen\integerdef#1\c_syst_local_read
+ \else
+ \syst_local_overflow_read#1%
+ \fi}
+
+\permanent\protected\def\newlocalwrite#1% so no set
+ {\ifnum\c_syst_local_write>\c_syst_max_allocated_register
+ \advance\c_syst_local_write\minusone
+ \overloaded\frozen\integerdef#1\c_syst_local_write
+ \else
+ \syst_local_overflow_write#1%
+ \fi}
+
+%D The error handlers:
+
+\permanent\protected\def\syst_local_overflow_count {\syst_local_overflow {count}}
+\permanent\protected\def\syst_local_overflow_dimen {\syst_local_overflow {dimen}}
+\permanent\protected\def\syst_local_overflow_skip {\syst_local_overflow {skip}}
+\permanent\protected\def\syst_local_overflow_muskip{\syst_local_overflow{muskip}}
+\permanent\protected\def\syst_local_overflow_toks {\syst_local_overflow {toks}}
+\permanent\protected\def\syst_local_overflow_box {\syst_local_overflow {box}}
+\permanent\protected\def\syst_local_overflow_read {\syst_local_overflow {read}}
+\permanent\protected\def\syst_local_overflow_write {\syst_local_overflow {write}}
+
+%D We sacrifice a little performance but save some tokens by not defineing these
+%D completely:
+
+\permanent\protected\def\newlocalcount #1{\setnewlocalcount #1\zerocount }
+\permanent\protected\def\newlocaldimen #1{\setnewlocaldimen #1\zeropoint }
+\permanent\protected\def\newlocalskip #1{\setnewlocalskip #1\zeroskip }
+\permanent\protected\def\newlocalmuskip#1{\setnewlocalmuskip#1\zeromuskip}
+\permanent\protected\def\newlocaltoks #1{\setnewlocaltoks #1\emptytoks }
+\permanent\protected\def\newlocalbox #1{\setnewlocalbox #1\emptybox }
+
\protect \endinput
diff --git a/tex/context/base/mkxl/syst-lua.lmt b/tex/context/base/mkxl/syst-lua.lmt
index 911f9cbdf..a89cea852 100644
--- a/tex/context/base/mkxl/syst-lua.lmt
+++ b/tex/context/base/mkxl/syst-lua.lmt
@@ -396,9 +396,12 @@ do
usage = "value",
actions = function(prefix)
local n = scaninteger()
- scankeyword("to")
- local m = scancsname(true)
local c = channels[n]
+ if scankeyword("line") and c then
+ c:gotoline(scaninteger())
+ end
+ scankeyword("to")
+ local m = scancsname(true)
local g = 0
local s
l = 0
@@ -466,9 +469,12 @@ do
usage = "value",
actions = function(prefix)
local n = scaninteger()
- scankeyword("to")
- local m = scancsname(true)
local c = channels[n]
+ if scankeyword("line") and c then
+ c:gotoline(scaninteger())
+ end
+ scankeyword("to")
+ local m = scancsname(true)
local s = c and c:reader()
if s then
local e = texgetcount("endlinechar") -- we can have tex.endline if needed
diff --git a/tex/context/base/mkxl/tabl-mis.mkxl b/tex/context/base/mkxl/tabl-mis.mkxl
index 8f83a65a7..7b6f0ffac 100644
--- a/tex/context/base/mkxl/tabl-mis.mkxl
+++ b/tex/context/base/mkxl/tabl-mis.mkxl
@@ -127,6 +127,8 @@
\aliased\let\typo_paragraphs_setup_saved\setupparagraphs
+\let\typo_paragraphs_setup_step\gobbleoneargument
+
\overloaded\permanent\tolerant\protected\def\setupparagraphs[#1]#*[#2]#*[#3]% we are downward compatible with [each] and [1,3]
{\ifarguments\or
\typo_paragraphs_setup_saved[#1]%
@@ -141,12 +143,12 @@
\fi}
\appendtoks
- \frozen\instance\letvalue{\e!next \currentparagraphs}\nextparagraphs
- \frozen\instance\letvalue\currentparagraphs\nextparagraphs
- \frozen\instance\setuevalue{\e!start\currentparagraphs}{\startparagraphs[\currentparagraphs]}%
- \frozen\instance\letvalue{\e!stop \currentparagraphs}\stopparagraphs
+ \frozen\instance\letcsname\e!next \currentparagraphs\endcsname\nextparagraphs
+ \frozen\instance\letcsname\currentparagraphs\endcsname\nextparagraphs
+ \frozen\instance\protected\edefcsname\e!start\currentparagraphs\endcsname{\startparagraphs[\currentparagraphs]}%
+ \frozen\instance\letcsname\e!stop \currentparagraphs\endcsname\stopparagraphs
%frozen\instance\setuevalue{\e!setup\currentparagraph\e!endsetup}{\typo_paragraphs_setup_saved[\currentparagraphs]}%
- \dorecurse{\paragraphsparameter\c!n}
+ \dorecurse{\paragraphsparameter\c!n}%
{\normalexpanded{\typo_paragraphs_setup_saved[\currentparagraphs:\recurselevel][\c!width=,\s!parent=\??paragraphs\currentparagraphs]}}%
\typo_paragraphs_setup_saved[\currentparagraphs:1][\c!distance=\zeropoint]%
\to \everydefineparagraphs
@@ -156,6 +158,9 @@
\newdimen\d_typo_paragraphs_width
\newdimen\d_typo_paragraphs_auto
+\let\typo_paragraphs_start_cell\relax
+\let\typo_paragraphs_stop_cell \relax
+
\permanent\protected\def\startparagraphs[#1]% quite slow
{\bgroup % (1)
\edef\currentparagraphs{#1}%
@@ -187,7 +192,7 @@
\fi
\parindent\zeropoint
\c_typo_paragraphs_n\zerocount
- \enforced\let\\\typo_paragraphs_next % downward compatible
+ \enforced\let\\\nextparagraphs % downward compatible
\edef\p_offset{\paragraphsparameter\c!offset}%
\doifelsedimension\p_offset
{\scratchoffset\p_offset}%
diff --git a/tex/context/base/mkxl/tabl-ntb.mkxl b/tex/context/base/mkxl/tabl-ntb.mkxl
index 57538e460..5b30c449c 100644
--- a/tex/context/base/mkxl/tabl-ntb.mkxl
+++ b/tex/context/base/mkxl/tabl-ntb.mkxl
@@ -404,6 +404,9 @@
\let\tabl_ntb_parameters_get\setupcurrentnaturaltablelocal
+\let\tabl_ntb_setup_step \gobbleoneargument
+\let\tabl_ntb_setup_step_step\gobbleoneargument
+
\permanent\tolerant\protected\def\setupTABLE[#1]#*[#2]#*[#3]%
{\ifarguments
\expandafter\gobblethreeoptionals
@@ -1536,6 +1539,8 @@
\newdimen\d_tabl_ntb_saved_hsize
+\let\tabl_ntb_pass\relax
+
\def\tabl_ntb_table_stop
{\forgetall % new, here see narrower-004.tex
%\setbox\scratchbox\hbox
diff --git a/tex/context/base/mkxl/tabl-tab.mkxl b/tex/context/base/mkxl/tabl-tab.mkxl
index 045560b2c..547ff93ff 100644
--- a/tex/context/base/mkxl/tabl-tab.mkxl
+++ b/tex/context/base/mkxl/tabl-tab.mkxl
@@ -1473,6 +1473,8 @@
% \def\doverysimpletableHL % todo
% {\noalign{\normalexpanded{\noexpand\tabl_table_normal_full_rule\m_tabl_table_HLheight}}
+\let\tabl_table_restart\relax
+
\def\tabl_table_restart_indeed#1%
{\gdef\tabl_table_restart{#1}%
\tabl_table_restart
diff --git a/tex/context/base/mkxl/type-ini.mklx b/tex/context/base/mkxl/type-ini.mklx
index 39b3224a5..bba2d433b 100644
--- a/tex/context/base/mkxl/type-ini.mklx
+++ b/tex/context/base/mkxl/type-ini.mklx
@@ -575,7 +575,7 @@
\permanent\tolerant\protected\def\inherittypeface[#name]#spacer[#styles]#spacer[#parentclass]%
{\iftok{#styles}\emptytoks
- \font_typescripts_inherit_indeed[#name][\s!rm,\s!ss,\s!tt,\s!mm][\fontclass]%
+ \inherittypeface[#name][\s!rm,\s!ss,\s!tt,\s!mm][\fontclass]%
\orelse\iftok{#name}{#parentclass}\else
\glet\font_typescripts_inherit_check\font_typescripts_inherit_check_indeed
\def\font_typescripts_inherit_check_step#style{\edefcsname\??typescriptinheritances#name:#style\endcsname{#parentclass}}%
diff --git a/tex/context/base/mkxl/typo-itm.mkxl b/tex/context/base/mkxl/typo-itm.mkxl
index 3a2e2ce17..7ae1b732f 100644
--- a/tex/context/base/mkxl/typo-itm.mkxl
+++ b/tex/context/base/mkxl/typo-itm.mkxl
@@ -134,13 +134,8 @@
% rendering
-\setvalue{\??itemshorizontal\v!margin}#1%
- {\ifnum\c_typo_items_m=\plusone\hss\else\hfill\fi
- \strut#1%
- \ifnum\c_typo_items_m=\c_typo_items_n\hss\else\hfill\fi}
-
-\setvalue{\??itemshorizontal\s!unknown}%
- {\simplealignedbox\scratchwidth\m_typo_items_align}
+\let\typo_items_item\relax
+\let\typo_items_make\relax
\def\typo_items_item_horizontal
{\advance\c_typo_items_m\plusone
@@ -152,9 +147,6 @@
\fi
\endcsname}
-\setvalue{\??itemsvertical\s!unknown}%
- {\simplealignedbox\scratchwidth\m_typo_items_align}
-
\def\typo_items_item_vertical
{\advance\c_typo_items_m\plusone
\csname\??itemsvertical
@@ -165,6 +157,17 @@
\fi
\endcsname}
+\defcsname\??itemshorizontal\v!margin\endcsname#1%
+ {\ifnum\c_typo_items_m=\plusone\hss\else\hfill\fi
+ \strut#1%
+ \ifnum\c_typo_items_m=\c_typo_items_n\hss\else\hfill\fi}
+
+\defcsname\??itemshorizontal\s!unknown\endcsname
+ {\simplealignedbox\scratchwidth\m_typo_items_align}
+
+\defcsname\??itemsvertical\s!unknown\endcsname
+ {\simplealignedbox\scratchwidth\m_typo_items_align}
+
\def\typo_items_make_horizontal#1%
{\divide\scratchwidth\c_typo_items_n
\hbox{#1}}
diff --git a/tex/context/modules/mkiv/m-system-readers.mkxl b/tex/context/modules/mkiv/m-system-readers.mkxl
new file mode 100644
index 000000000..a077b20a3
--- /dev/null
+++ b/tex/context/modules/mkiv/m-system-readers.mkxl
@@ -0,0 +1,148 @@
+%D \module
+%D [ file=m-system-readers,
+%D version=2021.02.13,
+%D title=\CONTEXT\ Modules,
+%D subtitle=Reading from files,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\startmodule[system-readers]
+
+% \unprotect
+%
+% \installcorenamespace {markedlines}
+%
+% \permanent\protected\def\startmarkedlines[#1]%
+% {\edef\scratchstring{#1}%
+% \scratchcounter\numexpr\inputlineno+\plusone\relax
+% \gobbleuntilandfinalize\stopmarkedlines}
+%
+% \permanent\protected\def\stopmarkedlines
+% {\edefcsname\??markedlines\scratchstring\endcsname
+% {{\the\scratchcounter}{\the\numexpr\inputlineno+\minusone\relax}}}
+%
+% \protected\def\firstmarkedline#1%
+% {\numexpr
+% \ifcsname\??markedlines#1\endcsname
+% \normalexpanded{\noexpand\firstoftwoarguments\lastnamedcs}%
+% \else
+% \zerocount
+% \fi
+% \relax}
+%
+% \protected\def\lastmarkedline#1%
+% {\numexpr
+% \ifcsname\??markedlines#1\endcsname
+% \normalexpanded{\noexpand\secondoftwoarguments\lastnamedcs}%
+% \else
+% \zerocount
+% \fi
+% \relax}
+%
+% \protected\def\markedlines#1%
+% {\ifcsname\??markedlines\scratchstring\endcsname\lastnamedcs\else{0}{0}\fi}
+%
+% \protect
+
+\startluacode
+
+ local createtoken = token.create
+ local gobbletoken = token.gobble
+ local integer_value = tokens.values.integer
+
+ local marked = { }
+
+ interfaces.implement {
+ name = "startmarkedlines",
+ public = true,
+ protected = true,
+ arguments = "optional",
+ actions = function(tag)
+ local start = status.readstate.linenumber + 1
+ gobbletoken(createtoken("startmarkedlines"),createtoken("stopmarkedlines"))
+ local state = status.readstate
+ marked[tag] = { state.filename, start, state.linenumber - 1 }
+ end
+ }
+
+
+ interfaces.implement {
+ name = "markedfilename",
+ public = true,
+ -- usage = "value",
+ arguments = "string",
+ actions = function(tag)
+ local m = marked[tag]
+ -- return m and m[1] or ""
+ context(m and m[1] or "")
+ end
+ }
+
+ interfaces.implement {
+ name = "firstmarkedline",
+ public = true,
+ usage = "value",
+ arguments = "string",
+ actions = function(tag)
+ local m = marked[tag]
+ return integer_value, m and m[2] or 0
+ end
+ }
+
+ interfaces.implement {
+ name = "lastmarkedline",
+ public = true,
+ usage = "value",
+ arguments = "string",
+ actions = function(tag)
+ local m = marked[tag]
+ return integer_value, m and m[3] or 0
+ end
+ }
+
+\stopluacode
+
+\continueifinputfile{m-system-readers.mkxl}
+
+\starttext
+
+\startmarkedlines[test]
+SOME LINE 1
+SOME LINE 2
+SOME LINE 3
+SOME LINE 4
+\stopmarkedlines
+
+\startmarkedlines[more]
+SOME MORE 1
+SOME MORE 2
+SOME MORE 3
+SOME MORE 4
+\stopmarkedlines
+
+\begingroup
+ \newlocalread\myreada
+ \immediate\openin\myreada {\markedfilename{test}}
+ \dostepwiserecurse{\lastmarkedline{test}}{\firstmarkedline{test}}{-1}{
+ \readline\myreada line #1 to \scratchstring #1 : \scratchstring \par
+ }
+ \immediate\closein\myreada
+\endgroup
+
+\blank
+
+\begingroup
+ \newlocalread\myreada
+ \immediate\openin\myreada {\markedfilename{more}}
+ \dostepwiserecurse{\firstmarkedline{more}}{\lastmarkedline{more}}{1}{
+ \read \myreada line #1 to \scratchstring #1 : \scratchstring \par
+ }
+ \immediate\closein\myreada
+\endgroup
+
+\stoptext
diff --git a/tex/context/modules/mkiv/s-system-macros.mkxl b/tex/context/modules/mkiv/s-system-macros.mkxl
index c779157fc..0f2644403 100644
--- a/tex/context/modules/mkiv/s-system-macros.mkxl
+++ b/tex/context/modules/mkiv/s-system-macros.mkxl
@@ -146,11 +146,12 @@
ctx_NC() if primitive then ctx_bold(csname) else
ctx_verb(csname) end
ctx_NC() if parameters then context(parameters > 0 and parameters or "-") end
- ctx_NC() context(cscommand)
+ ctx_NC() if undefined then context.red(false) end
+ context(cscommand)
ctx_NC() if primitive then context(primitive) end
ctx_NC() if permanent then context(permanent) end
- ctx_NC() if frozen then context(frozen) end
ctx_NC() if immutable then context(immutable) end
+ ctx_NC() if frozen then context(frozen) end
ctx_NC() if mutable then context(mutable) end
ctx_NC() if instance then context(instance) end
ctx_NC() if noaligned then context(noaligned) end
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 2b731fbd1..cf618d021 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 : c:/data/develop/context/sources/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date : 2021-02-12 18:45
+-- merge date : 2021-02-14 16:11
do -- begin closure to overcome local limits and interference