summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2019-06-14 18:53:48 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2019-06-14 18:53:48 +0200
commitc3e821627fba8ecf4342582ed62e75c5ad36afc0 (patch)
treecc1bee237f26ac5a5e2325a6869a8375e372aa4f
parent36ee3b791e253a00877a7b25e2d94b1dfc90a174 (diff)
downloadcontext-c3e821627fba8ecf4342582ed62e75c5ad36afc0.tar.gz
2019-06-14 17:56:00
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-json.lua6
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-json.lua6
-rw-r--r--context/data/vscode/extensions/context/keybindings/context.json20
-rw-r--r--context/data/vscode/extensions/context/package.json170
-rw-r--r--context/data/vscode/extensions/context/package.nls.json4
-rw-r--r--context/data/vscode/extensions/context/settings/context-settings-bibtex.json14
-rw-r--r--context/data/vscode/extensions/context/settings/context-settings-bnf.json11
-rw-r--r--context/data/vscode/extensions/context/settings/context-settings-cld.json21
-rw-r--r--context/data/vscode/extensions/context/settings/context-settings-cpp.json17
-rw-r--r--context/data/vscode/extensions/context/settings/context-settings-json.json14
-rw-r--r--context/data/vscode/extensions/context/settings/context-settings-lua.json21
-rw-r--r--context/data/vscode/extensions/context/settings/context-settings-mps.json20
-rw-r--r--context/data/vscode/extensions/context/settings/context-settings-pdf.json17
-rw-r--r--context/data/vscode/extensions/context/settings/context-settings-sql.json2
-rw-r--r--context/data/vscode/extensions/context/settings/context-settings-tex.json20
-rw-r--r--context/data/vscode/extensions/context/settings/context-settings-xml.json5
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-bibtex.json267
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-bnf.json74
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-cld.json209
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-cpp.json143
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-json.json278
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-lua.json184
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-mps.json179
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-pdf.json271
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-sql.json120
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json240
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-xml.json222
-rw-r--r--context/data/vscode/extensions/context/tasks/context.json73
-rw-r--r--context/data/vscode/extensions/context/themes/context.json356
-rw-r--r--context/data/vscode/extensions/context/vscode-context.readme5
-rw-r--r--context/data/vscode/settings.json45
-rw-r--r--context/data/vscode/vscode-context.cmd7
-rw-r--r--doc/context/documents/general/qrcs/setup-cs.pdfbin858533 -> 858670 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-de.pdfbin858502 -> 858627 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-en.pdfbin865475 -> 865600 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-fr.pdfbin857263 -> 857379 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-it.pdfbin862592 -> 862716 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-cs.pdfbin348749 -> 348859 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-de.pdfbin433170 -> 433282 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-en.pdfbin346069 -> 346192 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-fr.pdfbin349149 -> 349256 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-it.pdfbin347490 -> 347611 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-nl.pdfbin346903 -> 347018 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-ro.pdfbin510544 -> 510656 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-nl.pdfbin852226 -> 852342 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-ro.pdfbin856176 -> 856286 bytes
-rw-r--r--doc/context/scripts/mkiv/mtx-vscode.html53
-rw-r--r--doc/context/scripts/mkiv/mtx-vscode.man30
-rw-r--r--doc/context/scripts/mkiv/mtx-vscode.xml26
-rw-r--r--scripts/context/lua/mtx-vscode.lua3181
-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/mkii/mult-cs.mkii1
-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/math-tag.lua7
-rw-r--r--tex/context/base/mkiv/mlib-lua.lua5
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin26526 -> 26541 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin266550 -> 266575 bytes
-rw-r--r--tex/context/interface/mkii/keys-cs.xml1
-rw-r--r--tex/context/interface/mkiv/i-context.pdfbin865475 -> 865600 bytes
-rw-r--r--tex/context/interface/mkiv/i-readme.pdfbin61165 -> 61165 bytes
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
63 files changed, 6341 insertions, 14 deletions
diff --git a/context/data/scite/context/lexers/scite-context-lexer-json.lua b/context/data/scite/context/lexers/scite-context-lexer-json.lua
index 78e01fd2c..ca7add07d 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-json.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-json.lua
@@ -37,9 +37,9 @@ local operator = S(':,{}[]')
local fence = openarray + closearray + openhash + closehash
local escape_un = P("\\u") * S("09","AF","af")
-local escape_bs = P([[\]]) * P(1)
-local content = (escape_un + escape_bs + (1-double))^0
-local content = ((1-double))^0
+local escape_bs = P("\\") * P(1)
+----- content = (escape_un + escape_bs + (1-double))^0
+local content = (escape_bs + (1-double))^0
local reserved = P("true")
+ P("false")
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-json.lua b/context/data/textadept/context/lexers/scite-context-lexer-json.lua
index 78e01fd2c..ca7add07d 100644
--- a/context/data/textadept/context/lexers/scite-context-lexer-json.lua
+++ b/context/data/textadept/context/lexers/scite-context-lexer-json.lua
@@ -37,9 +37,9 @@ local operator = S(':,{}[]')
local fence = openarray + closearray + openhash + closehash
local escape_un = P("\\u") * S("09","AF","af")
-local escape_bs = P([[\]]) * P(1)
-local content = (escape_un + escape_bs + (1-double))^0
-local content = ((1-double))^0
+local escape_bs = P("\\") * P(1)
+----- content = (escape_un + escape_bs + (1-double))^0
+local content = (escape_bs + (1-double))^0
local reserved = P("true")
+ P("false")
diff --git a/context/data/vscode/extensions/context/keybindings/context.json b/context/data/vscode/extensions/context/keybindings/context.json
new file mode 100644
index 000000000..80bbc099b
--- /dev/null
+++ b/context/data/vscode/extensions/context/keybindings/context.json
@@ -0,0 +1,20 @@
+[
+ {
+ "args" : "process tex file",
+ "command" : "workbench.action.tasks.runTask",
+ "key" : "ctrl-F12",
+ "when" : "editorTextFocus && editorLangId == context.tex"
+ },
+ {
+ "args" : "check tex file",
+ "command" : "workbench.action.tasks.runTask",
+ "key" : "F12",
+ "when" : "editorTextFocus && editorLangId == context.tex"
+ },
+ {
+ "args" : "process lua file",
+ "command" : "workbench.action.tasks.runTask",
+ "key" : "ctrl-F12",
+ "when" : "editorTextFocus && editorLangId == context.cld"
+ }
+] \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/package.json b/context/data/vscode/extensions/context/package.json
new file mode 100644
index 000000000..fc9fa7607
--- /dev/null
+++ b/context/data/vscode/extensions/context/package.json
@@ -0,0 +1,170 @@
+{
+ "categories" : [ "Lexers", "Syntaxes" ],
+ "contributes" : {
+ "grammars" : [
+ {
+ "language" : "context.tex",
+ "path" : "./syntaxes/context-syntax-tex.json",
+ "scopeName" : "source.context.tex"
+ },
+ {
+ "language" : "context.mps",
+ "path" : "./syntaxes/context-syntax-mps.json",
+ "scopeName" : "source.context.mps"
+ },
+ {
+ "language" : "context.lua",
+ "path" : "./syntaxes/context-syntax-lua.json",
+ "scopeName" : "source.context.lua"
+ },
+ {
+ "language" : "context.cld",
+ "path" : "./syntaxes/context-syntax-cld.json",
+ "scopeName" : "source.context.cld"
+ },
+ {
+ "language" : "context.xml",
+ "path" : "./syntaxes/context-syntax-xml.json",
+ "scopeName" : "source.context.xml"
+ },
+ {
+ "language" : "context.bibtex",
+ "path" : "./syntaxes/context-syntax-bibtex.json",
+ "scopeName" : "source.context.bibtex"
+ },
+ {
+ "language" : "context.sql",
+ "path" : "./syntaxes/context-syntax-sql.json",
+ "scopeName" : "source.context.sql"
+ },
+ {
+ "language" : "context.bnf",
+ "path" : "./syntaxes/context-syntax-bnf.json",
+ "scopeName" : "source.context.bnf"
+ },
+ {
+ "language" : "context.cpp",
+ "path" : "./syntaxes/context-syntax-cpp.json",
+ "scopeName" : "source.context.cpp"
+ },
+ {
+ "language" : "context.pdf",
+ "path" : "./syntaxes/context-syntax-pdf.json",
+ "scopeName" : "source.context.pdf"
+ },
+ {
+ "language" : "context.json",
+ "path" : "./syntaxes/context-syntax-json.json",
+ "scopeName" : "source.context.json"
+ }
+ ],
+ "keybindings" : [
+ {
+ "args" : "process tex file",
+ "command" : "workbench.action.tasks.runTask",
+ "key" : "ctrl-F12",
+ "when" : "editorTextFocus && editorLangId == context.tex"
+ },
+ {
+ "args" : "check tex file",
+ "command" : "workbench.action.tasks.runTask",
+ "key" : "F12",
+ "when" : "editorTextFocus && editorLangId == context.tex"
+ },
+ {
+ "args" : "process lua file",
+ "command" : "workbench.action.tasks.runTask",
+ "key" : "ctrl-F12",
+ "when" : "editorTextFocus && editorLangId == context.cld"
+ }
+ ],
+ "languages" : [
+ {
+ "aliases" : [ "ConTeXt TEX" ],
+ "configuration" : "./settings/context-settings-tex.json",
+ "extensions" : [ ".mkii", ".mkil", ".mkiv", ".mkix", ".mkli", ".mkvi", ".mkxi", ".tex" ],
+ "id" : "context.tex"
+ },
+ {
+ "aliases" : [ "ConTeXt MetaFun" ],
+ "configuration" : "./settings/context-settings-mps.json",
+ "extensions" : [ ".mp", ".mpii", ".mpiv", ".mpvi" ],
+ "id" : "context.mps"
+ },
+ {
+ "aliases" : [ "ConTeXt Lua" ],
+ "configuration" : "./settings/context-settings-lua.json",
+ "id" : "context.lua"
+ },
+ {
+ "aliases" : [ "ConTeXt CLD" ],
+ "configuration" : "./settings/context-settings-cld.json",
+ "extensions" : [ ".cld", ".lfg", ".lua", ".luc", ".lui", ".luj", ".lum", ".luv", ".tma", ".tuc" ],
+ "id" : "context.cld"
+ },
+ {
+ "aliases" : [ "ConTeXt XML" ],
+ "configuration" : "./settings/context-settings-xml.json",
+ "extensions" : [ ".ctx", ".dtd", ".exa", ".export", ".fo", ".htm", ".html", ".lmx", ".rlb", ".rlg", ".rlv", ".rng", ".svg", ".xfdf", ".xhtml", ".xml", ".xsd", ".xsl", ".xslt", ".xul" ],
+ "id" : "context.xml"
+ },
+ {
+ "aliases" : [ "ConTeXt bibTeX" ],
+ "configuration" : "./settings/context-settings-bibtex.json",
+ "extensions" : [ ".bib", ".btx" ],
+ "id" : "context.bibtex"
+ },
+ {
+ "aliases" : [ "ConTeXt SQL" ],
+ "configuration" : "./settings/context-settings-sql.json",
+ "extensions" : [ ".sql" ],
+ "id" : "context.sql"
+ },
+ {
+ "aliases" : [ "ConTeXt BNF" ],
+ "configuration" : "./settings/context-settings-bnf.json",
+ "extensions" : [ ".bnf" ],
+ "id" : "context.bnf"
+ },
+ {
+ "aliases" : [ "ConTeXt C" ],
+ "configuration" : "./settings/context-settings-cpp.json",
+ "extensions" : [ ".c", ".cpp", ".h", ".hpp" ],
+ "id" : "context.cpp"
+ },
+ {
+ "aliases" : [ "ConTeXt PDF" ],
+ "configuration" : "./settings/context-settings-pdf.json",
+ "extensions" : [ ".pdf" ],
+ "id" : "context.pdf"
+ },
+ {
+ "aliases" : [ "ConTeXt JSON" ],
+ "configuration" : "./settings/context-settings-json.json",
+ "extensions" : [ ".json" ],
+ "id" : "context.json"
+ }
+ ],
+ "tasks" : [
+ {
+ "label" : "ConTeXt Tasks",
+ "path" : "./tasks/context.json"
+ }
+ ],
+ "themes" : [
+ {
+ "label" : "ConTeXt",
+ "path" : "./themes/context.json",
+ "uiTheme" : "vs"
+ }
+ ]
+ },
+ "description" : "ConTeXt Syntax Highlighting",
+ "displayName" : "ConTeXt",
+ "engines" : {
+ "vscode" : "*"
+ },
+ "name" : "context",
+ "publisher" : "ConTeXt Development Team",
+ "version" : "1.0.0"
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/package.nls.json b/context/data/vscode/extensions/context/package.nls.json
new file mode 100644
index 000000000..40e00f759
--- /dev/null
+++ b/context/data/vscode/extensions/context/package.nls.json
@@ -0,0 +1,4 @@
+{
+ "description" : "Provides syntax highlighting and bracket matching in ConTeXt files.",
+ "displayName" : "ConTeXt"
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/settings/context-settings-bibtex.json b/context/data/vscode/extensions/context/settings/context-settings-bibtex.json
new file mode 100644
index 000000000..e1927f36b
--- /dev/null
+++ b/context/data/vscode/extensions/context/settings/context-settings-bibtex.json
@@ -0,0 +1,14 @@
+{
+ "autoClosingPairs" : [
+ [ "{", "}" ]
+ ],
+ "brackets" : [
+ [ "{", "}" ]
+ ],
+ "comments" : {
+ "lineComment" : "%"
+ },
+ "surroundingPairs" : [
+ [ "{", "}" ]
+ ]
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/settings/context-settings-bnf.json b/context/data/vscode/extensions/context/settings/context-settings-bnf.json
new file mode 100644
index 000000000..353182133
--- /dev/null
+++ b/context/data/vscode/extensions/context/settings/context-settings-bnf.json
@@ -0,0 +1,11 @@
+{
+ "autoClosingPairs" : [
+ [ "<", ">" ]
+ ],
+ "brackets" : [
+ [ "<", ">" ]
+ ],,
+ "surroundingPairs" : [
+ [ "<", ">" ]
+ ]
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/settings/context-settings-cld.json b/context/data/vscode/extensions/context/settings/context-settings-cld.json
new file mode 100644
index 000000000..1f10daa18
--- /dev/null
+++ b/context/data/vscode/extensions/context/settings/context-settings-cld.json
@@ -0,0 +1,21 @@
+{
+ "autoClosingPairs" : [
+ [ "(", ")" ],
+ [ "{", "}" ],
+ [ "[", "]" ]
+ ],
+ "brackets" : [
+ [ "(", ")" ],
+ [ "{", "}" ],
+ [ "[", "]" ]
+ ],
+ "comments" : {
+ "blockComment" : [ "--[[", "]]" ],
+ "lineComment" : "--"
+ },
+ "surroundingPairs" : [
+ [ "(", ")" ],
+ [ "{", "}" ],
+ [ "[", "]" ]
+ ]
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/settings/context-settings-cpp.json b/context/data/vscode/extensions/context/settings/context-settings-cpp.json
new file mode 100644
index 000000000..89af81ea5
--- /dev/null
+++ b/context/data/vscode/extensions/context/settings/context-settings-cpp.json
@@ -0,0 +1,17 @@
+{
+ "autoClosingPairs" : [
+ [ "{", "}" ],
+ [ "[", "]" ],
+ [ "(", ")" ]
+ ],
+ "brackets" : [
+ [ "{", "}" ],
+ [ "[", "]" ],
+ [ "(", ")" ]
+ ],,
+ "surroundingPairs" : [
+ [ "{", "}" ],
+ [ "[", "]" ],
+ [ "(", ")" ]
+ ]
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/settings/context-settings-json.json b/context/data/vscode/extensions/context/settings/context-settings-json.json
new file mode 100644
index 000000000..73f189132
--- /dev/null
+++ b/context/data/vscode/extensions/context/settings/context-settings-json.json
@@ -0,0 +1,14 @@
+{
+ "autoClosingPairs" : [
+ [ "{", "}" ],
+ [ "[", "]" ]
+ ],
+ "brackets" : [
+ [ "{", "}" ],
+ [ "[", "]" ]
+ ],,
+ "surroundingPairs" : [
+ [ "{", "}" ],
+ [ "[", "]" ]
+ ]
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/settings/context-settings-lua.json b/context/data/vscode/extensions/context/settings/context-settings-lua.json
new file mode 100644
index 000000000..1f10daa18
--- /dev/null
+++ b/context/data/vscode/extensions/context/settings/context-settings-lua.json
@@ -0,0 +1,21 @@
+{
+ "autoClosingPairs" : [
+ [ "(", ")" ],
+ [ "{", "}" ],
+ [ "[", "]" ]
+ ],
+ "brackets" : [
+ [ "(", ")" ],
+ [ "{", "}" ],
+ [ "[", "]" ]
+ ],
+ "comments" : {
+ "blockComment" : [ "--[[", "]]" ],
+ "lineComment" : "--"
+ },
+ "surroundingPairs" : [
+ [ "(", ")" ],
+ [ "{", "}" ],
+ [ "[", "]" ]
+ ]
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/settings/context-settings-mps.json b/context/data/vscode/extensions/context/settings/context-settings-mps.json
new file mode 100644
index 000000000..693fb54b9
--- /dev/null
+++ b/context/data/vscode/extensions/context/settings/context-settings-mps.json
@@ -0,0 +1,20 @@
+{
+ "autoClosingPairs" : [
+ [ "{", "}" ],
+ [ "[", "]" ],
+ [ "(", ")" ]
+ ],
+ "brackets" : [
+ [ "{", "}" ],
+ [ "[", "]" ],
+ [ "(", ")" ]
+ ],
+ "comments" : {
+ "lineComment" : "%"
+ },
+ "surroundingPairs" : [
+ [ "{", "}" ],
+ [ "[", "]" ],
+ [ "(", ")" ]
+ ]
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/settings/context-settings-pdf.json b/context/data/vscode/extensions/context/settings/context-settings-pdf.json
new file mode 100644
index 000000000..05aea0976
--- /dev/null
+++ b/context/data/vscode/extensions/context/settings/context-settings-pdf.json
@@ -0,0 +1,17 @@
+{
+ "autoClosingPairs" : [
+ [ "<", ">" ],
+ [ "[", "]" ],
+ [ "(", ")" ]
+ ],
+ "brackets" : [
+ [ "<", ">" ],
+ [ "[", "]" ],
+ [ "(", ")" ]
+ ],,
+ "surroundingPairs" : [
+ [ "<", ">" ],
+ [ "[", "]" ],
+ [ "(", ")" ]
+ ]
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/settings/context-settings-sql.json b/context/data/vscode/extensions/context/settings/context-settings-sql.json
new file mode 100644
index 000000000..7a73a41bf
--- /dev/null
+++ b/context/data/vscode/extensions/context/settings/context-settings-sql.json
@@ -0,0 +1,2 @@
+{
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/settings/context-settings-tex.json b/context/data/vscode/extensions/context/settings/context-settings-tex.json
new file mode 100644
index 000000000..693fb54b9
--- /dev/null
+++ b/context/data/vscode/extensions/context/settings/context-settings-tex.json
@@ -0,0 +1,20 @@
+{
+ "autoClosingPairs" : [
+ [ "{", "}" ],
+ [ "[", "]" ],
+ [ "(", ")" ]
+ ],
+ "brackets" : [
+ [ "{", "}" ],
+ [ "[", "]" ],
+ [ "(", ")" ]
+ ],
+ "comments" : {
+ "lineComment" : "%"
+ },
+ "surroundingPairs" : [
+ [ "{", "}" ],
+ [ "[", "]" ],
+ [ "(", ")" ]
+ ]
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/settings/context-settings-xml.json b/context/data/vscode/extensions/context/settings/context-settings-xml.json
new file mode 100644
index 000000000..565dda567
--- /dev/null
+++ b/context/data/vscode/extensions/context/settings/context-settings-xml.json
@@ -0,0 +1,5 @@
+{
+ "comments" : {
+ "blockComment" : [ "<!--", "-->" ]
+ }
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-bibtex.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-bibtex.json
new file mode 100644
index 000000000..e670d9a97
--- /dev/null
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-bibtex.json
@@ -0,0 +1,267 @@
+{
+ "name" : "context.bibtex",
+ "patterns" : [
+ {
+ "include" : "#forget"
+ },
+ {
+ "include" : "#comment"
+ },
+ {
+ "include" : "#shortcut"
+ },
+ {
+ "include" : "#definition"
+ }
+ ],
+ "repository" : {
+ "comment" : {
+ "begin" : "\u005Cs*(@(?:comment|Comment|COMMENT))\u005Cs*\u005Cs*({)\u005Cs*",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.keyword.comment.name.bibtex"
+ },
+ "2" : {
+ "name" : "context.grouping.comment.open.bibtex"
+ }
+ },
+ "end" : "\u005Cs*(})\u005Cs*",
+ "endCaptures" : {
+ "1" : {
+ "name" : "context.grouping.comment.close.bibtex"
+ }
+ },
+ "name" : "context.comment.comment.comment.content.bibtex"
+ },
+ "concatinator" : {
+ "match" : "\u005Cs*(#)\u005Cs*",
+ "name" : "context.operator.definition.concatinator.bibtex"
+ },
+ "definition" : {
+ "begin" : "\u005Cs*([a-zA-Z0-9\u005C_@:\u005C-]+)\u005Cs*\u005Cs*({)\u005Cs*\u005Cs*([a-zA-Z0-9\u005C_@:\u005C-]+)\u005Cs*\u005Cs*(,)\u005Cs*",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.keyword.definition.category.bibtex"
+ },
+ "2" : {
+ "name" : "context.grouping.definition.open.bibtex"
+ },
+ "3" : {
+ "name" : "context.operator.definition.label.separator.bibtex"
+ }
+ },
+ "end" : "\u005Cs*(})\u005Cs*",
+ "endCaptures" : {
+ "1" : {
+ "name" : "context.grouping.definition.close.bibtex"
+ }
+ },
+ "name" : "context.warning.definition.error.bibtex",
+ "patterns" : [
+ {
+ "include" : "#string_double"
+ },
+ {
+ "include" : "#string_single"
+ },
+ {
+ "include" : "#string_grouped"
+ },
+ {
+ "include" : "#string_value"
+ },
+ {
+ "include" : "#string_concat"
+ },
+ {
+ "include" : "#separator"
+ }
+ ]
+ },
+ "forget" : {
+ "match" : "%.*$\u005Cn?",
+ "name" : "context.comment.comment.comment.inline.bibtex"
+ },
+ "separator" : {
+ "match" : "\u005Cs*(,)\u005Cs*",
+ "name" : "context.operator.definition.separator.bibtex"
+ },
+ "shortcut" : {
+ "begin" : "\u005Cs*(@(?:string|String|STRING))\u005Cs*\u005Cs*({)\u005Cs*",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.keyword.shortcut.name.bibtex"
+ },
+ "2" : {
+ "name" : "context.grouping.shortcut.open.bibtex"
+ }
+ },
+ "end" : "\u005Cs*(})\u005Cs*",
+ "endCaptures" : {
+ "1" : {
+ "name" : "context.grouping.shortcut.close.bibtex"
+ }
+ },
+ "name" : "context.warning.shortcut.error.bibtex",
+ "patterns" : [
+ {
+ "include" : "#string_double"
+ },
+ {
+ "include" : "#string_single"
+ },
+ {
+ "include" : "#string_grouped"
+ },
+ {
+ "include" : "#string_value"
+ },
+ {
+ "include" : "#string_concat"
+ }
+ ]
+ },
+ "string_concat" : {
+ "patterns" : [
+ {
+ "captures" : {
+ "1" : {
+ "name" : "context.operator.concat.doublequoted.concatinator.bibtex"
+ },
+ "2" : {
+ "name" : "context.special.concat.doublequoted.open.bibtex"
+ },
+ "3" : {
+ "name" : "context.text.concat.doublequoted.text.bibtex"
+ },
+ "4" : {
+ "name" : "context.special.concat.doublequoted.close.bibtex"
+ }
+ },
+ "match" : "\u005Cs*(#)\u005Cs*\u005Cs*(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)\u005Cs*"
+ },
+ {
+ "captures" : {
+ "1" : {
+ "name" : "context.operator.concat.singlequoted.concatinator.bibtex"
+ },
+ "2" : {
+ "name" : "context.special.concat.singlequoted.open.bibtex"
+ },
+ "3" : {
+ "name" : "context.text.concat.singlequoted.text.bibtex"
+ },
+ "4" : {
+ "name" : "context.special.concat.singlequoted.close.bibtex"
+ }
+ },
+ "match" : "\u005Cs*(#)\u005Cs*\u005Cs*(')((?:\u005C\u005C'|[^'])*)(')\u005Cs*"
+ },
+ {
+ "captures" : {
+ "1" : {
+ "name" : "context.operator.concat.grouped.concatinator.bibtex"
+ },
+ "2" : {
+ "name" : "context.operator.concat.grouped.open.bibtex"
+ },
+ "3" : {
+ "name" : "context.text.concat.grouped.text.bibtex"
+ },
+ "4" : {
+ "name" : "context.operator.concat.grouped.close.bibtex"
+ }
+ },
+ "match" : "\u005Cs*(#)\u005Cs*\u005Cs*({)((?:\u005C\u005C{|\u005C\u005C}|[^\u005C{\u005C}])*)(})\u005Cs*"
+ },
+ {
+ "captured" : {
+ "1" : {
+ "name" : "context.operator.concat.value.concatinator.bibtex"
+ },
+ "2" : {
+ "name" : "context.text.concat.value.text.bibtex"
+ }
+ },
+ "match" : "\u005Cs*(#)\u005Cs*\u005Cs*([a-zA-Z0-9\u005C_@:\u005C-]+)\u005Cs*"
+ }
+ ]
+ },
+ "string_double" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.command.doublequoted.key.bibtex"
+ },
+ "2" : {
+ "name" : "context.operator.doublequoted.equal.bibtex"
+ },
+ "3" : {
+ "name" : "context.special.doublequoted.open.bibtex"
+ },
+ "4" : {
+ "name" : "context.text.doublequoted.text.bibtex"
+ },
+ "5" : {
+ "name" : "context.special.doublequoted.close.bibtex"
+ }
+ },
+ "match" : "\u005Cs*([a-zA-Z0-9\u005C_@:\u005C-]+)\u005Cs*\u005Cs*(=)\u005Cs*\u005Cs*(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)\u005Cs*"
+ },
+ "string_grouped" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.command.grouped.key.bibtex"
+ },
+ "2" : {
+ "name" : "context.operator.grouped.equal.bibtex"
+ },
+ "3" : {
+ "name" : "context.operator.grouped.open.bibtex"
+ },
+ "4" : {
+ "name" : "context.text.grouped.text.bibtex"
+ },
+ "5" : {
+ "name" : "context.operator.grouped.close.bibtex"
+ }
+ },
+ "match" : "\u005Cs*([a-zA-Z0-9\u005C_@:\u005C-]+)\u005Cs*\u005Cs*(=)\u005Cs*\u005Cs*({)((?:\u005C\u005C{|\u005C\u005C}|[^\u005C{\u005C}])*)(})\u005Cs*"
+ },
+ "string_single" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.command.singlequoted.key.bibtex"
+ },
+ "2" : {
+ "name" : "context.operator.singlequoted.equal.bibtex"
+ },
+ "3" : {
+ "name" : "context.special.singlequoted.open.bibtex"
+ },
+ "4" : {
+ "name" : "context.text.singlequoted.text.bibtex"
+ },
+ "5" : {
+ "name" : "context.special.singlequoted.close.bibtex"
+ }
+ },
+ "match" : "\u005Cs*([a-zA-Z0-9\u005C_@:\u005C-]+)\u005Cs*\u005Cs*(=)\u005Cs*\u005Cs*(')((?:\u005C\u005C'|[^'])*)(')\u005Cs*"
+ },
+ "string_value" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.command.value.key.bibtex"
+ },
+ "2" : {
+ "name" : "context.operator.value.equal.bibtex"
+ },
+ "3" : {
+ "name" : "context.text.value.text.bibtex"
+ }
+ },
+ "match" : "\u005Cs*([a-zA-Z0-9\u005C_@:\u005C-]+)\u005Cs*\u005Cs*(=)\u005Cs*\u005Cs*([a-zA-Z0-9\u005C_@:\u005C-]+)\u005Cs*"
+ }
+ },
+ "scopeName" : "source.context.bibtex",
+ "version" : "1.0.0"
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-bnf.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-bnf.json
new file mode 100644
index 000000000..d5251624c
--- /dev/null
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-bnf.json
@@ -0,0 +1,74 @@
+{
+ "name" : "context.bnf",
+ "patterns" : [
+ {
+ "include" : "#term"
+ },
+ {
+ "include" : "#text_single"
+ },
+ {
+ "include" : "#text_reverse"
+ },
+ {
+ "include" : "#becomes"
+ },
+ {
+ "include" : "#extra"
+ }
+ ],
+ "repository" : {
+ "becomes" : {
+ "match" : "::=",
+ "name" : "context.operator.symbol.becomes.bnf"
+ },
+ "extra" : {
+ "match" : "|",
+ "name" : "context.extra.symbol.extra.bnf"
+ },
+ "term" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.command.term.open.bnf"
+ },
+ "2" : {
+ "name" : "context.text.term.text.bnf"
+ },
+ "3" : {
+ "name" : "context.command.term.close.bnf"
+ }
+ },
+ "match" : "(<)(([a-zA-Z][a-zA-Z0-9\u005C-]*))(>)"
+ },
+ "text_double" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.special.doublequoted.open.bnf"
+ },
+ "2" : {
+ "name" : "context.text.doublequoted.text.bnf"
+ },
+ "3" : {
+ "name" : "context.special.doublequoted.close.bnf"
+ }
+ },
+ "match" : "(\u0022)([a-zA-Z0-9]|\u005C~|}|\u005C||{|`|_|\u005C^|\u005C]|\u005C\u005C|\u005C[|@|\u005C?|>|=|<|;|:|/|\u005C.|\u005C-|\u005C-|,|\u005C+|\u005C*|\u005C)|\u005C(|\u005C&|\u005C%|\u005C$|#|\u005C!| )(\u0022)"
+ },
+ "text_single" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.special.singlequoted.open.bnf"
+ },
+ "2" : {
+ "name" : "context.text.singlequoted.text.bnf"
+ },
+ "3" : {
+ "name" : "context.special.singlequoted.close.bnf"
+ }
+ },
+ "match" : "(')([a-zA-Z0-9]|\u005C~|}|\u005C||{|`|_|\u005C^|\u005C]|\u005C\u005C|\u005C[|@|\u005C?|>|=|<|;|:|/|\u005C.|\u005C-|\u005C-|,|\u005C+|\u005C*|\u005C)|\u005C(|\u005C&|\u005C%|\u005C$|#|\u005C!| )(')"
+ }
+ },
+ "scopeName" : "source.context.bnf",
+ "version" : "1.0.0"
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-cld.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-cld.json
new file mode 100644
index 000000000..84bd41236
--- /dev/null
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-cld.json
@@ -0,0 +1,209 @@
+{
+ "name" : "context.cld",
+ "patterns" : [
+ {
+ "include" : "#texstring"
+ },
+ {
+ "include" : "#texcommand"
+ },
+ {
+ "include" : "#keyword"
+ },
+ {
+ "include" : "#buildin"
+ },
+ {
+ "include" : "#constant"
+ },
+ {
+ "include" : "#csname"
+ },
+ {
+ "include" : "#goto"
+ },
+ {
+ "include" : "#number_hex"
+ },
+ {
+ "include" : "#number"
+ },
+ {
+ "include" : "#identifier_keyword"
+ },
+ {
+ "include" : "#identifier_valid"
+ },
+ {
+ "include" : "#longcomment"
+ },
+ {
+ "include" : "#string_long"
+ },
+ {
+ "include" : "#string_double"
+ },
+ {
+ "include" : "#string_single"
+ },
+ {
+ "include" : "#shortcomment"
+ },
+ {
+ "include" : "#label"
+ },
+ {
+ "include" : "#operator"
+ }
+ ],
+ "repository" : {
+ "builtin" : {
+ "match" : "(xpcall|utf8|unpack|type|tostring|tonumber|table|string|setmetatable|select|require|rawset|rawget|rawequal|print|pcall|pairs|package|os|next|module|math|lpeg|loadfile|load|ipairs|io|getmetatable|file|error|dofile|debug|coroutine|collectgarbage|bit32|assert)(?=[^a-zA-Z])",
+ "name" : "context.plain.reserved.builtin.lua"
+ },
+ "constant" : {
+ "match" : "(__unm|__tostring|__sub|__pow|__pairs|__newindex|__mul|__mode|__metatable|__lt|__len|__le|__ipairs|__index|__idiv|__gc|__eq|__div|__concat|__close|__call|__add|_VERSION|_M|_G|_ENV|\u005C.\u005C.\u005C.|NaN|<toclose>|<const>)(?=[^a-zA-Z])",
+ "name" : "context.data.reserved.constants.lua"
+ },
+ "csname" : {
+ "begin" : "(metapost|metafun|ctx[A-Za-z_]*|context|commands)(?=[^a-zA-Z])",
+ "end" : "(?!(\u005Cs*[\u005C.\u005C:]*\u005Cs*[_\u005Cw][_\u005Cw0-9]*))",
+ "name" : "context.user.csname.lua",
+ "patterns" : [
+ {
+ "match" : "[\u005C.\u005C:]",
+ "name" : "context.operator.csname.qualifier.lua"
+ }
+ ]
+ },
+ "goto" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.keyword.goto.keyword.lua"
+ },
+ "2" : {
+ "name" : "context.grouping.goto.target.lua"
+ }
+ },
+ "match" : "(goto)\u005Cs*([_\u005Cw][_\u005Cw0-9]*)"
+ },
+ "identifier_keyword" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.operator.identifier.keyword.lua"
+ },
+ "2" : {
+ "name" : "context.warning.identifier.keyword.lua"
+ }
+ },
+ "match" : "\u005Cs*([\u005C.\u005C:])\u005Cs*(while|until|true|then|return|repeat|or|not|nil|local|in|if|function|for|false|end|elseif|else|do|break|and)(?=[^a-zA-Z])"
+ },
+ "identifier_valid" : {
+ "match" : "[_\u005Cw][_\u005Cw0-9]*",
+ "name" : "context.default.identifier.valid.lua"
+ },
+ "keyword" : {
+ "match" : "(while|until|true|then|return|repeat|or|not|nil|local|in|if|function|for|false|end|elseif|else|do|break|and)(?=[^a-zA-Z])",
+ "name" : "context.keyword.reserved.keyword.lua"
+ },
+ "label" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.keyword.label.open.lua"
+ },
+ "2" : {
+ "name" : "context.grouping.label.target.lua"
+ },
+ "3" : {
+ "name" : "context.keyword.label.close.lua"
+ }
+ },
+ "match" : "(::)([_\u005Cw][_\u005Cw0-9]*)(::)"
+ },
+ "longcomment" : {
+ "begin" : "--\u005C[\u005C[",
+ "end" : "\u005C]\u005C]",
+ "name" : "context.comment.comment.long.lua"
+ },
+ "number" : {
+ "match" : "[\u005C-]?[0-9]+(\u005C.[0-9]+)?([eEpP]\u005C-?[0-9]+)?",
+ "name" : "context.number.decnumber.lua"
+ },
+ "number_hex" : {
+ "match" : "[\u005C-]?0[xX][A-Fa-f0-9]+(\u005C.[A-Fa-f0-9]+)?([eEpP]\u005C-?[A-Fa-f0-9]+)?",
+ "name" : "context.number.hexnumber.lua"
+ },
+ "operator" : {
+ "match" : "\u005C~|}|\u005C||{|\u005C^|\u005C]|\u005C[|>|=|<|;|:|/|\u005C.|\u005C-|,|\u005C+|\u005C*|\u005C)|\u005C(|\u005C'|\u005C%|#",
+ "name" : "context.special.operator.lua"
+ },
+ "shortcomment" : {
+ "match" : "--.*$\u005Cn?",
+ "name" : "context.comment.comment.short.lua"
+ },
+ "string_double" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.special.doublequoted.open.lua"
+ },
+ "2" : {
+ "name" : "context.string.doublequoted.text.lua"
+ },
+ "3" : {
+ "name" : "context.special.doublequoted.close.lua"
+ }
+ },
+ "match" : "(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)"
+ },
+ "string_long" : {
+ "begin" : "\u005C[(=*)\u005C[",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.special.string.long.open.lua"
+ }
+ },
+ "end" : "\u005C](\u005C2)\u005C]",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.special.string.long.close.lua"
+ }
+ },
+ "name" : "context.string.long.text.lua"
+ },
+ "string_single" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.special.singlequoted.open.lua"
+ },
+ "2" : {
+ "name" : "context.string.singlequoted.text.lua"
+ },
+ "3" : {
+ "name" : "context.special.singlequoted.close.lua"
+ }
+ },
+ "match" : "(')((?:\u005C\u005C'|[^'])*)(')"
+ },
+ "texcommand" : {
+ "match" : "\u005C\u005C[A-Za-z-ÿ@\u005C!\u005C?_]*",
+ "name" : "context.warning.texcommand.lua"
+ },
+ "texstring" : {
+ "begin" : "\u005C\u005C!!bs",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.special.texstring.open.lua"
+ }
+ },
+ "end" : "\u005C\u005C!!es",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.special.texstring.close.lua"
+ }
+ },
+ "name" : "context.string.texstring.text.lua"
+ }
+ },
+ "scopeName" : "source.context.cld",
+ "version" : "1.0.0"
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-cpp.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-cpp.json
new file mode 100644
index 000000000..67941c551
--- /dev/null
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-cpp.json
@@ -0,0 +1,143 @@
+{
+ "name" : "context.cpp",
+ "patterns" : [
+ {
+ "include" : "#keyword"
+ },
+ {
+ "include" : "#datatype"
+ },
+ {
+ "include" : "#luatex"
+ },
+ {
+ "include" : "#identifier"
+ },
+ {
+ "include" : "#macro"
+ },
+ {
+ "include" : "#string_double"
+ },
+ {
+ "include" : "#string_single"
+ },
+ {
+ "include" : "#texcomment"
+ },
+ {
+ "include" : "#longcomment"
+ },
+ {
+ "include" : "#shortcomment"
+ },
+ {
+ "include" : "#hexnumber"
+ },
+ {
+ "include" : "#decnumber"
+ },
+ {
+ "include" : "#operator"
+ }
+ ],
+ "repository" : {
+ "datatype" : {
+ "match" : "\u005Cb(void|unsigned|union|struct|signed|short|long|int|float|enum|double|char|bool)\u005Cb",
+ "name" : "context.keyword.datatype.c"
+ },
+ "decnumber" : {
+ "match" : "[\u005C-]?[0-9]+(\u005C.[0-9]+)?([eEpP]\u005C-?[0-9]+)?",
+ "name" : "context.number.dec.c"
+ },
+ "hexnumber" : {
+ "match" : "[\u005C-]?0[xX][A-Fa-f0-9]+(\u005C.[A-Fa-f0-9]+)?([eEpP]\u005C-?[A-Fa-f0-9]+)?",
+ "name" : "context.number.hex.c"
+ },
+ "identifier" : {
+ "match" : "[A-Za-z_][A-Za-z_0-9]*",
+ "name" : "context.default.identifier.c"
+ },
+ "keyword" : {
+ "match" : "\u005Cb(while|volatile|virtual|using|typename|typeid|typedef|try|true|throw|this|template|switch|static_cast|static_assert|static|slots|sizeof|signals|return|restrict|reinterpret_cast|register|public|protected|private|operator|new|namespace|mutable|inline|if|goto|friend|for|false|extern|export|explicit|else|dynamic_cast|do|delete|default|continue|const_cast|const|class|catch|case|break|auto|asm|_Pragma|_Imaginary|_Complex|_Bool)\u005Cb",
+ "name" : "context.keyword.c.c"
+ },
+ "longcomment" : {
+ "begin" : "/\u005C*",
+ "end" : "\u005C*/",
+ "name" : "context.comment.long.c"
+ },
+ "luatex" : {
+ "match" : "\u005Cb(scaled|halfword)\u005Cb",
+ "name" : "context.command.luatex.c"
+ },
+ "macro" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.data.macro.tag.c"
+ },
+ "2" : {
+ "name" : "context.data.macro.name.c"
+ }
+ },
+ "match" : "\u005Cs*(#)\u005Cs*\u005Cb(warning|using|undef|pragma|line|include|import|ifndef|ifdef|if|error|endif|else|elif|define)\u005Cb"
+ },
+ "operator" : {
+ "match" : "\u005C~|}|\u005C||{|\u005C^|\u005C]|\u005C[|\u005C?|>|=|<|;|:|/|\u005C.|\u005C-|\u005C+|\u005C*|\u005C)|\u005C(|\u005C&|\u005C%|\u005C!",
+ "name" : "context.operator.any.c"
+ },
+ "shortcomment" : {
+ "match" : "//.*$\u005Cn?",
+ "name" : "context.comment.short.c"
+ },
+ "string_double" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.special.doublequoted.open.c"
+ },
+ "2" : {
+ "name" : "context.string.doublequoted.text.c"
+ },
+ "3" : {
+ "name" : "context.special.doublequoted.close.c"
+ }
+ },
+ "match" : "(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)"
+ },
+ "string_single" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.special.singlequoted.open.c"
+ },
+ "2" : {
+ "name" : "context.string.singlequoted.text.c"
+ },
+ "3" : {
+ "name" : "context.special.singlequoted.close.c"
+ }
+ },
+ "match" : "(')((?:\u005C\u005C'|[^'])*)(')"
+ },
+ "texcomment" : {
+ "begin" : "/\u005C*tex",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.comment.tex.open.c"
+ }
+ },
+ "end" : "\u005C*/",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.comment.tex.close.c"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "source.context.tex"
+ }
+ ]
+ }
+ },
+ "scopeName" : "source.context.cpp",
+ "version" : "1.0.0"
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-json.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-json.json
new file mode 100644
index 000000000..9af4e89e7
--- /dev/null
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-json.json
@@ -0,0 +1,278 @@
+{
+ "name" : "context.json",
+ "patterns" : [
+ {
+ "include" : "#content"
+ }
+ ],
+ "repository" : {
+ "array" : {
+ "begin" : "\u005C[",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.grouping.array.open.json"
+ }
+ },
+ "end" : "\u005C]",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.grouping.array.close.json"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "#content"
+ }
+ ]
+ },
+ "content" : {
+ "patterns" : [
+ {
+ "include" : "#string"
+ },
+ {
+ "include" : "#hexnumber"
+ },
+ {
+ "include" : "#decnumber"
+ },
+ {
+ "include" : "#reserved"
+ },
+ {
+ "include" : "#hash"
+ },
+ {
+ "include" : "#array"
+ },
+ {
+ "include" : "#separator"
+ }
+ ]
+ },
+ "decnumber" : {
+ "match" : "\u005Cs*([\u005C-]?[0-9]+(\u005C.[0-9]+)?([eEpP]\u005C-?[0-9]+)?)",
+ "name" : "context.number.dec.json"
+ },
+ "hash" : {
+ "begin" : "\u005C{",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.grouping.hash.open.json"
+ }
+ },
+ "end" : "\u005C}",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.grouping.hash.close.json"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "#kv_content"
+ }
+ ]
+ },
+ "hexnumber" : {
+ "match" : "\u005Cs*([\u005C-]?0[xX][A-Fa-f0-9]+(\u005C.[A-Fa-f0-9]+)?([eEpP]\u005C-?[A-Fa-f0-9]+)?)",
+ "name" : "context.number.hex.json"
+ },
+ "kv_array" : {
+ "begin" : "(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)\u005Cs*(\u005C:)\u005Cs*(\u005C[)",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.quote.array.key.open.json"
+ },
+ "2" : {
+ "name" : "context.text.array.key.text.json"
+ },
+ "3" : {
+ "name" : "context.quote.array.key.close.json"
+ },
+ "4" : {
+ "name" : "context.operator.array.becomes.json"
+ },
+ "5" : {
+ "name" : "context.grouping.array.value.open.json"
+ }
+ },
+ "end" : "\u005C]",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.grouping.array.value.close.json"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "#content"
+ }
+ ]
+ },
+ "kv_content" : {
+ "patterns" : [
+ {
+ "include" : "#kv_string"
+ },
+ {
+ "include" : "#kv_hexnumber"
+ },
+ {
+ "include" : "#kv_decnumber"
+ },
+ {
+ "include" : "#kv_reserved"
+ },
+ {
+ "include" : "#kv_hash"
+ },
+ {
+ "include" : "#kv_array"
+ },
+ {
+ "include" : "#separator"
+ }
+ ]
+ },
+ "kv_decnumber" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.quote.dec.key.open.json"
+ },
+ "2" : {
+ "name" : "context.text.dec.key.text.json"
+ },
+ "3" : {
+ "name" : "context.quote.dec.key.close.json"
+ },
+ "4" : {
+ "name" : "context.operator.dec.becomes.json"
+ },
+ "5" : {
+ "name" : "context.number.dec.value.json"
+ }
+ },
+ "match" : "(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)\u005Cs*(\u005C:)\u005Cs*([\u005C-]?[0-9]+(\u005C.[0-9]+)?([eEpP]\u005C-?[0-9]+)?)"
+ },
+ "kv_hash" : {
+ "begin" : "(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)\u005Cs*(\u005C:)\u005Cs*(\u005C{)",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.quote.hash.key.open.json"
+ },
+ "2" : {
+ "name" : "context.text.hash.key.text.json"
+ },
+ "3" : {
+ "name" : "context.quote.hash.key.close.json"
+ },
+ "4" : {
+ "name" : "context.operator.hash.becomes.json"
+ },
+ "5" : {
+ "name" : "context.grouping.hash.value.open.json"
+ }
+ },
+ "end" : "\u005C}",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.grouping.hash.value.close.json"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "#kv_content"
+ }
+ ]
+ },
+ "kv_hexnumber" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.quote.hex.key.open.json"
+ },
+ "2" : {
+ "name" : "context.text.hex.key.text.json"
+ },
+ "3" : {
+ "name" : "context.quote.hex.key.close.json"
+ },
+ "4" : {
+ "name" : "context.operator.hex.becomes.json"
+ },
+ "5" : {
+ "name" : "context.number.hex.value.json"
+ }
+ },
+ "match" : "(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)\u005Cs*(\u005C:)\u005Cs*([\u005C-]?0[xX][A-Fa-f0-9]+(\u005C.[A-Fa-f0-9]+)?([eEpP]\u005C-?[A-Fa-f0-9]+)?)"
+ },
+ "kv_reserved" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.quote.reserved.key.open.json"
+ },
+ "2" : {
+ "name" : "context.text.reserved.key.text.json"
+ },
+ "3" : {
+ "name" : "context.quote.reserved.key.close.json"
+ },
+ "4" : {
+ "name" : "context.operator.reserved.becomes.json"
+ },
+ "5" : {
+ "name" : "context.primitive.reserved.value.json"
+ }
+ },
+ "match" : "(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)\u005Cs*(\u005C:)\u005Cs*(true|null|false)"
+ },
+ "kv_string" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.quote.string.key.open.json"
+ },
+ "2" : {
+ "name" : "context.text.string.key.text.json"
+ },
+ "3" : {
+ "name" : "context.quote.string.key.close.json"
+ },
+ "4" : {
+ "name" : "context.operator.string.becomes.json"
+ },
+ "5" : {
+ "name" : "context.quote.string.value.open.json"
+ },
+ "6" : {
+ "name" : "context.string.string.value.text.json"
+ },
+ "7" : {
+ "name" : "context.quote.string.value.close.json"
+ }
+ },
+ "match" : "(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)\u005Cs*(\u005C:)\u005Cs*(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)"
+ },
+ "reserved" : {
+ "match" : "\u005Cs*(true|null|false)",
+ "name" : "context.primitive.reserved.json"
+ },
+ "separator" : {
+ "match" : "\u005Cs*(\u005C,)",
+ "name" : "context.operator.separator.json"
+ },
+ "string" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.quote.string.open.json"
+ },
+ "2" : {
+ "name" : "context.string.string.text.json"
+ },
+ "3" : {
+ "name" : "context.quote.string.close.json"
+ }
+ },
+ "match" : "\u005Cs*(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)"
+ }
+ },
+ "scopeName" : "source.context.json",
+ "version" : "1.0.0"
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-lua.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-lua.json
new file mode 100644
index 000000000..9cd7a681d
--- /dev/null
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-lua.json
@@ -0,0 +1,184 @@
+{
+ "name" : "context.lua",
+ "patterns" : [
+ {
+ "include" : "#keyword"
+ },
+ {
+ "include" : "#buildin"
+ },
+ {
+ "include" : "#constant"
+ },
+ {
+ "include" : "#csname"
+ },
+ {
+ "include" : "#goto"
+ },
+ {
+ "include" : "#number_hex"
+ },
+ {
+ "include" : "#number"
+ },
+ {
+ "include" : "#identifier_keyword"
+ },
+ {
+ "include" : "#identifier_valid"
+ },
+ {
+ "include" : "#longcomment"
+ },
+ {
+ "include" : "#string_long"
+ },
+ {
+ "include" : "#string_double"
+ },
+ {
+ "include" : "#string_single"
+ },
+ {
+ "include" : "#shortcomment"
+ },
+ {
+ "include" : "#label"
+ },
+ {
+ "include" : "#operator"
+ }
+ ],
+ "repository" : {
+ "builtin" : {
+ "match" : "(xpcall|utf8|unpack|type|tostring|tonumber|table|string|setmetatable|select|require|rawset|rawget|rawequal|print|pcall|pairs|package|os|next|module|math|lpeg|loadfile|load|ipairs|io|getmetatable|file|error|dofile|debug|coroutine|collectgarbage|bit32|assert)(?=[^a-zA-Z])",
+ "name" : "context.plain.reserved.builtin.lua"
+ },
+ "constant" : {
+ "match" : "(__unm|__tostring|__sub|__pow|__pairs|__newindex|__mul|__mode|__metatable|__lt|__len|__le|__ipairs|__index|__idiv|__gc|__eq|__div|__concat|__close|__call|__add|_VERSION|_M|_G|_ENV|\u005C.\u005C.\u005C.|NaN|<toclose>|<const>)(?=[^a-zA-Z])",
+ "name" : "context.data.reserved.constants.lua"
+ },
+ "csname" : {
+ "begin" : "(metapost|metafun|ctx[A-Za-z_]*|context|commands)(?=[^a-zA-Z])",
+ "end" : "(?!(\u005Cs*[\u005C.\u005C:]*\u005Cs*[_\u005Cw][_\u005Cw0-9]*))",
+ "name" : "context.user.csname.lua",
+ "patterns" : [
+ {
+ "match" : "[\u005C.\u005C:]",
+ "name" : "context.operator.csname.qualifier.lua"
+ }
+ ]
+ },
+ "goto" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.keyword.goto.keyword.lua"
+ },
+ "2" : {
+ "name" : "context.grouping.goto.target.lua"
+ }
+ },
+ "match" : "(goto)\u005Cs*([_\u005Cw][_\u005Cw0-9]*)"
+ },
+ "identifier_keyword" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.operator.identifier.keyword.lua"
+ },
+ "2" : {
+ "name" : "context.warning.identifier.keyword.lua"
+ }
+ },
+ "match" : "\u005Cs*([\u005C.\u005C:])\u005Cs*(while|until|true|then|return|repeat|or|not|nil|local|in|if|function|for|false|end|elseif|else|do|break|and)(?=[^a-zA-Z])"
+ },
+ "identifier_valid" : {
+ "match" : "[_\u005Cw][_\u005Cw0-9]*",
+ "name" : "context.default.identifier.valid.lua"
+ },
+ "keyword" : {
+ "match" : "(while|until|true|then|return|repeat|or|not|nil|local|in|if|function|for|false|end|elseif|else|do|break|and)(?=[^a-zA-Z])",
+ "name" : "context.keyword.reserved.keyword.lua"
+ },
+ "label" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.keyword.label.open.lua"
+ },
+ "2" : {
+ "name" : "context.grouping.label.target.lua"
+ },
+ "3" : {
+ "name" : "context.keyword.label.close.lua"
+ }
+ },
+ "match" : "(::)([_\u005Cw][_\u005Cw0-9]*)(::)"
+ },
+ "longcomment" : {
+ "begin" : "--\u005C[\u005C[",
+ "end" : "\u005C]\u005C]",
+ "name" : "context.comment.comment.long.lua"
+ },
+ "number" : {
+ "match" : "[\u005C-]?[0-9]+(\u005C.[0-9]+)?([eEpP]\u005C-?[0-9]+)?",
+ "name" : "context.number.decnumber.lua"
+ },
+ "number_hex" : {
+ "match" : "[\u005C-]?0[xX][A-Fa-f0-9]+(\u005C.[A-Fa-f0-9]+)?([eEpP]\u005C-?[A-Fa-f0-9]+)?",
+ "name" : "context.number.hexnumber.lua"
+ },
+ "operator" : {
+ "match" : "\u005C~|}|\u005C||{|\u005C^|\u005C]|\u005C[|>|=|<|;|:|/|\u005C.|\u005C-|,|\u005C+|\u005C*|\u005C)|\u005C(|\u005C'|\u005C%|#",
+ "name" : "context.special.operator.lua"
+ },
+ "shortcomment" : {
+ "match" : "--.*$\u005Cn?",
+ "name" : "context.comment.comment.short.lua"
+ },
+ "string_double" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.special.doublequoted.open.lua"
+ },
+ "2" : {
+ "name" : "context.string.doublequoted.text.lua"
+ },
+ "3" : {
+ "name" : "context.special.doublequoted.close.lua"
+ }
+ },
+ "match" : "(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)"
+ },
+ "string_long" : {
+ "begin" : "\u005C[(=*)\u005C[",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.special.string.long.open.lua"
+ }
+ },
+ "end" : "\u005C](\u005C2)\u005C]",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.special.string.long.close.lua"
+ }
+ },
+ "name" : "context.string.long.text.lua"
+ },
+ "string_single" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.special.singlequoted.open.lua"
+ },
+ "2" : {
+ "name" : "context.string.singlequoted.text.lua"
+ },
+ "3" : {
+ "name" : "context.special.singlequoted.close.lua"
+ }
+ },
+ "match" : "(')((?:\u005C\u005C'|[^'])*)(')"
+ }
+ },
+ "scopeName" : "source.context.lua",
+ "version" : "1.0.0"
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-mps.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-mps.json
new file mode 100644
index 000000000..f1644ff58
--- /dev/null
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-mps.json
@@ -0,0 +1,179 @@
+{
+ "name" : "context.mps",
+ "patterns" : [
+ {
+ "include" : "#comment"
+ },
+ {
+ "include" : "#internal"
+ },
+ {
+ "include" : "#shortcut"
+ },
+ {
+ "include" : "#luacall_suffixed"
+ },
+ {
+ "include" : "#luacall"
+ },
+ {
+ "include" : "#helper"
+ },
+ {
+ "include" : "#plain"
+ },
+ {
+ "include" : "#primitive"
+ },
+ {
+ "include" : "#texstuff"
+ },
+ {
+ "include" : "#suffix"
+ },
+ {
+ "include" : "#identifier"
+ },
+ {
+ "include" : "#number"
+ },
+ {
+ "include" : "#quoted"
+ },
+ {
+ "include" : "#special"
+ },
+ {
+ "include" : "#texlike"
+ },
+ {
+ "include" : "#extra"
+ }
+ ],
+ "repository" : {
+ "comment" : {
+ "match" : "%.*$\u005Cn?",
+ "name" : "context.comment.comment.mps"
+ },
+ "extra" : {
+ "match" : "\u005C~|\u005C||`|_|\u005C^|\u005C\u005C|/|\u005C-|\u005C+\u005C-\u005C+|\u005C+\u005C+|\u005C+|\u005C*|\u005C'|\u005C&|\u005C%",
+ "name" : "context.extra"
+ },
+ "helper" : {
+ "match" : "(zmod|ystretched|ysized|xysized|xyscaled|xstretched|xsized|withtransparency|withshadevector|withshadetransform|withshadestep|withshaderadius|withshadeorigin|withshademethod|withshadefraction|withshadefactor|withshadedomain|withshadedirection|withshadecolors|withshadecenter|withshade|withproperties|withmask|withlinearshade|withgrey|withgray|withcircularshade|whitecolor|wdpart|visualizepaths|visualizedfill|visualizeddraw|verbatim|utfsub|utflen|urtriangle|urmoved|urenlarged|urcircle|uptriangle|unspiked|unitvector|unittriangle|unitdiamond|unitcircle|uniquelist|undrawfill|undecorated|undashed|uncolored|ultriangle|ulmoved|ulenlarged|ulcircle|tripled|triangle|transparent|transparency|tostring|topenlarged|topboundary|topath|topair|tolist|tohash|tocycle|thetextext|thetexbox|theoffset|thelabel|texvar|texvar|textextoffset|textext|texstr|texstr|texmode|texbox|tensecircle|tcircle|tanh|tand|tan|systemmode|superellipsed|strut|stretched|straightpath|straightpairs|straightfunction|stoppassingvariable|startpassingvariable|squeezed|squarepath|sqr|spotcolor|space|sortlist|softened|snapped|smoothed|sized|sinh|sin|simplified|shownshadevector|shownshadeorigin|shortened|shapedlist|shadedup|shadedright|shadedleft|shadedinto|shadeddown|shaded|settoks|setmacro|setdimen|setcount|rule|roundedsquare|righttriangle|rightof|rightenlarged|rightboundary|rightarrow|resolvedcolor|resetdrawoptions|resetarrows|report|register|redecorated|readfile|rcircle|rawtextext|rawtexbox|randomshifted|randomizedcontrols|randomized|radian|quote|quotation|pushcurrentpicture|pushboundingbox|punked|property|properties|prefix|prefix|pow|positionxy|positionwhd|positionregion|positionpxy|positionpath|positionpage|positioninregion|positioncurve|positionbox|positionatanchor|positionanchor|popcurrentpicture|popboundingbox|pointof|pi|perpendicular|percent|penpoint|pencilled|peepholed|pathconnectors|passvariable|passarrayvariable|paralleled|paired|outsideof|outlinetexttopath|outlinetext|outerboundingbox|originpath|onlayer|oddly|nothing|notcached|normalfill|normaldraw|nofill|newhash|naturalizepaths|namedcolor|multitonecolor|mp|mirroredabout|mirrored|luacall|lua|lrtriangle|lrmoved|lrenlarged|lrcircle|log|loadmodule|loadimage|loadfile|loadfigure|ln|lltriangle|llmoved|llenlarged|llcircle|listtolines|listtocurves|listsize|listlast|linearpath|lefttriangle|leftof|leftenlarged|leftboundary|leftarrow|lcircle|laddered|label|keepcached|istextext|isobject|isarray|isarray|invtan|invsin|inverted|invcos|inv|intersection_point|intersection_found|interpolated|insideof|inpath|innerboundingbox|inhash|infont|infinite|htpart|greyscale|greyed|grayscale|grayed|graphictext|gettoks|getmacro|getdimen|getcount|function|fulltriangle|fullsquare|fulldiamond|formatted|format|fillup|filloutlinetext|figure|externalfigure|exp|evenly|epsed|eofillup|eofill|eoclip|enlonged|enlarged|drawwholepath|drawpoints|drawpointoptions|drawpointlabels|drawpoint|drawpathoptions|drawpathonly|drawpath|drawoutlinetext|draworiginoptions|draworigin|drawlineoptions|drawlabeloptions|drawfill|drawdoublearrows|drawcontrolpoints|drawcontroloptions|drawcontrollines|drawboundoptions|drawboundingbox|drawboundary|dquote|dppart|downtriangle|disposehash|dispose|dimension|detailpaths|detaileddraw|defineshade|decorated|ddecimal|dddecimal|ddddecimal|cutends|curvedpath|curvedpairs|curvedfunction|curved|crossingunder|crossed|crlf|cotd|cot|cosh|cos|cornered|copylist|constructedpath|constructedpairs|constructedfunction|condition|complemented|complementary|comment|colortype|colorpart|colorlike|colordecimalslist|colordecimals|cmyk|clearxy|circularpath|checkedbounds|checkbounds|centerarrow|center|break|boundingradius|boundingpoint|boundingcircle|boundingbox|bottomenlarged|bottomboundary|blownup|blackcolor|bitmapimage|bcircle|bbwidth|bbheight|basiccolors|autoalign|atan|asinh|asin|asgroup|arrowpath|area|anchored|along|addbackground|acosh|acos|SPACE|PERCENT|MP|DQUOTE|CRLF)(?=[^a-zA-Z\u005C_@!?-ÿ])",
+ "name" : "context.command.metafun.helper.mps"
+ },
+ "identifier" : {
+ "match" : "[a-zA-Z\u005C_@!?-ÿ]+",
+ "name" : "context.default.identifier.mps"
+ },
+ "internal" : {
+ "match" : "\u005C\u005C|\u005C.\u005C.\u005C.|\u005C.\u005C.|\u005C-\u005C-\u005C-|\u005C-\u005C-|\u005C&",
+ "name" : "context.reserved.internal.mps"
+ },
+ "luacall" : {
+ "begin" : "(lua)\u005Cs*(\u005C()\u005Cs*(\u0022)",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.embedded.lua.command.mps"
+ },
+ "2" : {
+ "name" : "context.special.lua.open.mps"
+ },
+ "3" : {
+ "name" : "context.special.lua.text.open.mps"
+ }
+ },
+ "end" : "(\u0022)\u005Cs*(\u005C))",
+ "endCaptures" : {
+ "1" : {
+ "name" : "context.special.lua.text.close.mps"
+ },
+ "2" : {
+ "name" : "context.special.lua.close.mps"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "source.context.cld"
+ }
+ ]
+ },
+ "luacall_suffixed" : {
+ "begin" : "(lua)",
+ "end" : "(?!(\u005Cs*[\u005C.]\u005Cs*[a-zA-Z\u005C_@!?-ÿ]+))",
+ "name" : "context.embedded.luacall.mps",
+ "patterns" : [
+ {
+ "match" : "[\u005C.]",
+ "name" : "context.default.luacall.qualifier.mps"
+ }
+ ]
+ },
+ "number" : {
+ "match" : "[\u005C-]?[0-9]+(\u005C.[0-9]+)?([eE]\u005C-?[0-9]+)?",
+ "name" : "context.number.number.mps"
+ },
+ "plain" : {
+ "match" : "(z|z|yellow|withdots|white|whatever|upto|up|unitvector|unitsquare|unfilldraw|unfill|undraw|triplet|tracingnone|tracingall|thru|thelabel|tensepath|takepower|superellipse|stop|softjoin|shipit|savepen|round|rotatedaround|rotatedabout|right|relax|reflectedabout|red|range|quartercircle|quadruplet|pt|pickup|pensquare|penspec|penrazor|penpos|penlabels|pc|origin|nullpen|mod|mm|min|max|makelabel|magenta|loggingall|left|laboff|labels|label|inverse|intersectionpoint|interact|incr|in|in|image|identity|hide|halfcircle|green|gobbled|gobble|fullcircle|font_extra_space|font_coding_scheme|flex|filldraw|fill|extra_setup|extra_endfig|extra_endchar|extra_beginfig|extra_beginchar|exitunless|evenly|endglyph|endfig|endchar|drawoptions|drawdot|drawdblarrow|drawarrow|draw|downto|down|dotprod|dotlabels|dotlabel|div|directionpoint|direction|dir|define_whole_vertical_pixels|define_whole_vertical_blacker_pixels|define_whole_pixels|define_whole_blacker_pixels|define_pixels|define_horizontal_corrected_pixels|define_good_y_pixels|define_good_x_pixels|define_corrected_pixels|define_blacker_pixels|defaultfont|decr|dd|dashpattern|cyan|cuttings|cutdraw|cutbefore|cutafter|currentpicture|currentpen|counterclockwise|cm|clearxy|clearpen|clearpen|clearit|change_width|center|ceiling|cc|capsule_end|bye|buildcycle|bp|blue|blankpicture|blacker|black|beginglyph|beginfig|beginchar|bbox|background|arrowhead|abs)(?=[^a-zA-Z\u005C_@!?-ÿ])",
+ "name" : "context.plain.plain.mps"
+ },
+ "primitive" : {
+ "match" : "(zscaled|yypart|yxpart|yscaled|ypart|yoffset|yellowpart|year|xypart|xxpart|xscaled|xpart|xoffset|write|withprescript|withpostscript|withpen|within|withcolor|withcmykcolor|warningcheck|vppp|vardef|urt|urcorner|until|unknown|uniformdeviate|ulft|ulcorner|turningnumber|turningcheck|truecorners|true|troffmode|transformed|transform|tracingtitles|tracingstats|tracingspecs|tracingrestores|tracingpens|tracingoutput|tracingonline|tracingmacros|tracinglostchars|tracingequations|tracingedges|tracingcommands|tracingchoices|tracingcapsules|totalweight|top|to|time|textual|text|tertiarydef|tertiary|tension|suffix|substring|subpath|stroked|string|str|step|sqrt|special|smoothing|slanted|sind|showvariable|showtoken|showstopping|showdependencies|show|shipout|shifted|setbounds|secondarydef|secondary|screen_rows|screen_cols|scantokens|scaled|save|runscript|rt|rotated|rgbcolor|reverse|restoreclipcolor|redpart|readstring|readfrom|randomseed|proofing|prologues|primarydef|primary|prescriptpart|precontrol|postscriptpart|postcontrol|point|pixels_per_inch|picture|penspec|penpart|penoffset|pencircle|pen|pausing|pathpart|path|pair|outputtemplate|outputformat|outer|or|openwindow|openit|on|off|of|odd|oct|numspecial|numeric|nullpicture|notransforms|not|normaldeviate|nodisplays|newinternal|mpxbreak|mpprocset|month|mlog|miterlimit|minute|mexp|message|maketext|makepen|makepath|magentapart|lrt|lrcorner|lowres_fix|llft|llcorner|linejoin|linecap|ligtable|lft|let|length|known|kern|intersectiontimes|interpath|interim|input|inner|infont|imagerules|if|hround|hppp|hour|hex|headerbyte|greypart|greycolor|greenpart|graypart|grayfont|graycolor|granularity|glyph|gfcorners|forsuffixes|forever|for|fontsize|fontsize|fontpart|fontmapline|fontmapfile|fontmaking|fontdimen|floor|fillin|filled|filenametemplate|fi|false|extra_endfig|extra_beginfig|extensible|expr|expandafter|exitif|errmessage|envelope|endinput|endgroup|endfor|enddef|end|elseif|else|doublepath|displaying|display|directiontime|designsize|delimiters|def|decimal|day|dashpart|dashed|cycle|cyanpart|currentwindow|currenttransform|curl|cullit|cull|cosd|controls|contour|colormodel|color|cmykcolor|clipped|clip|charwd|charlist|charic|charht|charext|charexists|chardy|chardx|chardp|charcode|char|bounded|boundarychar|bot|bot|boolean|bluepart|blackpart|begingroup|autorounding|arctime|arclength|angle|and|and|also|addto|ASCII)(?=[^a-zA-Z\u005C_@!?-ÿ])",
+ "name" : "context.primitive.primitive.mps"
+ },
+ "quoted" : {
+ "begin" : "\u0022",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.special.string.open.mps"
+ }
+ },
+ "end" : "\u0022",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.special.string.close.mps"
+ }
+ },
+ "name" : "context.string.string.text.mps"
+ },
+ "shortcut" : {
+ "match" : "(textextoffset|textextanchor|squared|sq|softlighttransparent|shadefactor|screentransparent|saturationtransparent|rounded|rgbcolormodel|pen_top|pen_rt|pen_lft|pen_bot|overlaytransparent|normaltransparent|nocolormodel|multiplytransparent|mitered|metapostversion|maxdimensions|luminositytransparent|lightentransparent|labeloffset|join_radius|infinity|huetransparent|hardlighttransparent|greycolormodel|graycolormodel|exclusiontransparent|epsilon|eps|drawoptionsfactor|dq|dotlabeldiam|ditto|differencetransparent|defaultscale|defaultpen|darkentransparent|crossingscale|crossingoption|colortransparent|colordodgetransparent|colorburntransparent|cmykcolormodel|charscale|butt|beveled|bboxmargin|ahvariant|ahscale|ahlength|ahfactor|ahdimple|ahangle|EOF)(?=[^a-zA-Z\u005C_@!?-ÿ])",
+ "name" : "context.data.shortcut.mps"
+ },
+ "special" : {
+ "match" : "}|{|\u005C]|\u005C[|@#|>|=|<|:|\u005C)|\u005C(|#@|#|\u005C\u0022",
+ "name" : "context.special.special.mps"
+ },
+ "suffix" : {
+ "match" : "@#|#@|#",
+ "name" : "context.number.suffix.mps"
+ },
+ "texlike" : {
+ "match" : "\u005C[a-zA-Z\u005C_@!?-ÿ]+",
+ "name" : "context.warning.unexpected.tex.mps"
+ },
+ "texstuff" : {
+ "begin" : "((?:b|verbatim)tex)\u005Cs+",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.primitive.tex.open.mps"
+ }
+ },
+ "end" : "\u005Cs+(etex)",
+ "endCaptures" : {
+ "1" : {
+ "name" : "context.primitive.tex.close.mps"
+ }
+ },
+ "name" : "context.string.tex.mps",
+ "patterns" : [
+ {
+ "include" : "source.context.tex"
+ }
+ ]
+ }
+ },
+ "scopeName" : "source.context.mps",
+ "version" : "1.0.0"
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-pdf.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-pdf.json
new file mode 100644
index 000000000..a591905e0
--- /dev/null
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-pdf.json
@@ -0,0 +1,271 @@
+{
+ "name" : "context.pdf",
+ "patterns" : [
+ {
+ "include" : "#object"
+ },
+ {
+ "include" : "#comment"
+ },
+ {
+ "include" : "#trailer"
+ },
+ {
+ "include" : "#dictionary"
+ },
+ {
+ "include" : "#startxref"
+ },
+ {
+ "include" : "#xref"
+ }
+ ],
+ "repository" : {
+ "array" : {
+ "begin" : "(\u005C[)",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.grouping.array.open.pdf"
+ }
+ },
+ "end" : "(\u005C])",
+ "endCaptures" : {
+ "1" : {
+ "name" : "context.grouping.array.close.pdf"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "#content"
+ }
+ ]
+ },
+ "comment" : {
+ "match" : "%.*$\u005Cn?",
+ "name" : "context.comment.comment.pdf"
+ },
+ "content" : {
+ "patterns" : [
+ {
+ "include" : "#dictionary"
+ },
+ {
+ "include" : "#stream"
+ },
+ {
+ "include" : "#array"
+ },
+ {
+ "match" : "(/[^\u005Cs<>/\u005C[\u005C]\u005C(\u005C)]+)",
+ "name" : "context.constant.object.content.name.pdf"
+ },
+ {
+ "captures" : {
+ "1" : {
+ "name" : "context.warning.content.reference.1.pdf"
+ },
+ "2" : {
+ "name" : "context.warning.content.reference.2.pdf"
+ },
+ "3" : {
+ "name" : "context.command.content.reference.3.pdf"
+ }
+ },
+ "match" : "([0-9]+)\u005Cs*([0-9]+)\u005Cs*(R)"
+ },
+ {
+ "match" : "([\u005C-]?[0-9]*[\u005C.]?[0-9]+)",
+ "name" : "context.number.content.real.pdf"
+ },
+ {
+ "match" : "([\u005C-]?[0-9]+)",
+ "name" : "context.number.content.integer.pdf"
+ },
+ {
+ "captures" : {
+ "1" : {
+ "name" : "context.quote.content.string.open.pdf"
+ },
+ "2" : {
+ "name" : "context.string.content.string.text.pdf"
+ },
+ "3" : {
+ "name" : "context.quote.content.string.close.pdf"
+ }
+ },
+ "match" : "(\u005C()((?:\u005C\u005C[\u005C(\u005C)]|[^\u005C(\u005C)])*)(\u005C))"
+ },
+ {
+ "match" : "(true|null|false)",
+ "name" : "context.number.content.reserved.pdf"
+ },
+ {
+ "captures" : {
+ "1" : {
+ "name" : "context.quote.content.unicode.open.pdf"
+ },
+ "2" : {
+ "name" : "context.plain.content.unicode.bomb.pdf"
+ },
+ "3" : {
+ "name" : "context.string.content.unicode.text.pdf"
+ },
+ "4" : {
+ "name" : "context.quote.content.unicode.close.pdf"
+ }
+ },
+ "match" : "(<)(feff)([^>]*)(>)"
+ },
+ {
+ "captures" : {
+ "1" : {
+ "name" : "context.quote.content.whatsit.open.pdf"
+ },
+ "2" : {
+ "name" : "context.string.content.whatsit.text.pdf"
+ },
+ "3" : {
+ "name" : "context.quote.content.whatsit.close.pdf"
+ }
+ },
+ "match" : "(<)([^>]*)(>)"
+ }
+ ]
+ },
+ "dictionary" : {
+ "begin" : "(<<)",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.grouping.dictionary.open.pdf"
+ }
+ },
+ "end" : "(>>)",
+ "endCaptures" : {
+ "1" : {
+ "name" : "context.grouping.dictionary.close.pdf"
+ }
+ },
+ "patterns" : [
+ {
+ "begin" : "(/[^\u005Cs<>/\u005C[\u005C]\u005C(\u005C)]+)\u005Cs*",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.command.dictionary.name.pdf"
+ }
+ },
+ "end" : "(?=[>])",
+ "patterns" : [
+ {
+ "include" : "#content"
+ }
+ ]
+ }
+ ]
+ },
+ "object" : {
+ "begin" : "([0-9]+)\u005Cs*([0-9]+)\u005Cs*(obj)",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.warning.object.1.pdf"
+ },
+ "2" : {
+ "name" : "context.warning.object.2.pdf"
+ },
+ "3" : {
+ "name" : "context.keyword.object.open.pdf"
+ }
+ },
+ "end" : "(endobj)",
+ "endCaptures" : {
+ "1" : {
+ "name" : "context.keyword.object.close.pdf"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "#content"
+ }
+ ]
+ },
+ "startxref" : {
+ "begin" : "startxref\u005Cs*",
+ "captures" : {
+ "0" : {
+ "name" : "context.keyword.startxref.1.pdf"
+ }
+ },
+ "end" : "(?=[^0-9])",
+ "patterns" : [
+ {
+ "begin" : "([0-9]+)\u005Cs*",
+ "captures" : {
+ "1" : {
+ "name" : "context.number.startxref.2.pdf"
+ }
+ },
+ "end" : "(?=.)"
+ }
+ ]
+ },
+ "stream" : {
+ "begin" : "^stream$",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.keyword.stream.open.pdf"
+ }
+ },
+ "end" : "^endstream$",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.keyword.stream.close.pdf"
+ }
+ }
+ },
+ "trailer" : {
+ "match" : "trailer",
+ "name" : "context.keyword.trailer.pdf"
+ },
+ "xref" : {
+ "begin" : "xref\u005Cs*",
+ "captures" : {
+ "0" : {
+ "name" : "context.keyword.xref.1.pdf"
+ }
+ },
+ "end" : "(?=[^0-9])",
+ "patterns" : [
+ {
+ "begin" : "([0-9]+)\u005Cs*([0-9]+)\u005Cs*",
+ "captures" : {
+ "1" : {
+ "name" : "context.number.xref.2.pdf"
+ },
+ "2" : {
+ "name" : "context.number.xref.3.pdf"
+ }
+ },
+ "end" : "(?=[^0-9])",
+ "patterns" : [
+ {
+ "begin" : "([0-9]+)\u005Cs*([0-9]+)\u005Cs*([fn])\u005Cs*",
+ "captures" : {
+ "1" : {
+ "name" : "context.number.xref.4.pdf"
+ },
+ "2" : {
+ "name" : "context.number.xref.5.pdf"
+ },
+ "3" : {
+ "name" : "context.keyword.xref.6.pdf"
+ }
+ },
+ "end" : "(?=.)"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "scopeName" : "source.context.pdf",
+ "version" : "1.0.0"
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-sql.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-sql.json
new file mode 100644
index 000000000..60ff5e342
--- /dev/null
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-sql.json
@@ -0,0 +1,120 @@
+{
+ "name" : "context.sql",
+ "patterns" : [
+ {
+ "include" : "#keyword_standard"
+ },
+ {
+ "include" : "#keyword_dialect"
+ },
+ {
+ "include" : "#identifier"
+ },
+ {
+ "include" : "#string_double"
+ },
+ {
+ "include" : "#string_single"
+ },
+ {
+ "include" : "#string_reverse"
+ },
+ {
+ "include" : "#comment_long"
+ },
+ {
+ "include" : "#comment_short"
+ },
+ {
+ "include" : "#number"
+ },
+ {
+ "include" : "#operator"
+ }
+ ],
+ "repository" : {
+ "comment_long" : {
+ "begin" : "/\u005C*",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.command.comment.open.sql"
+ }
+ },
+ "end" : "\u005C*/",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.command.comment.close.sql"
+ }
+ },
+ "name" : "context.comment.comment.text.sql"
+ },
+ "comment_short" : {
+ "match" : "%.*$\u005Cn?",
+ "name" : "context.comment.comment.comment.sql"
+ },
+ "identifier" : {
+ "match" : "[a-zA-Z\u005C_][a-zA-Z0-9\u005C_]*",
+ "name" : "context.text.identifier.sql"
+ },
+ "keyword_dialect" : {
+ "match" : "(zerofill|year_month|xor|x509|writetext|width_bucket|waitfor|volatile|verbose|variables|variable|varcharacter|varchar2|varbinary|var_samp|var_pop|validator|validate|valid|vacuum|utc_timestamp|utc_time|utc_date|user_defined_type_schema|user_defined_type_name|user_defined_type_code|user_defined_type_catalog|use|updatetext|unsigned|unnamed|unlock|unlisten|unencrypted|uncommitted|unbounded|uid|uescape|type|tsequal|trusted|truncate|trigger_schema|trigger_name|trigger_catalog|transforms|transform|transactions_rolled_back|transactions_committed|transaction_active|tran|top_level_count|top|toast|tinytext|tinyint|tinyblob|ties|than|textsize|text|terminated|terminate|template|temp|tablespace|tables|table_name|sysid|sysdate|synonym|superuser|successful|sublist|subclass_origin|style|structure|string|strict|straight_join|storage|stdout|stdin|stddev_samp|stddev_pop|status|statistics|statement|starting|stable|ssl|sqrt|sqlca|sql_warnings|sql_small_result|sql_select_limit|sql_low_priority_updates|sql_log_update|sql_log_off|sql_calc_found_rows|sql_big_tables|sql_big_selects|sql_big_result|specific_name|spatial|source|soname|simple|shutdown|show|share|setuser|setof|server_name|serializable|sequence|separator|self|security|second_microsecond|scope_schema|scope_name|scope_catalog|schemas|schema_name|scale|save|rule|rownum|rowid|rowguidcol|rowcount|row_number|row_count|routine_schema|routine_name|routine_catalog|rlike|returned_sqlstate|returned_octet_length|returned_length|returned_cardinality|restore|restart|resource|reset|require|replication|replace|repeatable|rename|reload|reindex|regr_syy|regr_sxy|regr_sxx|regr_slope|regr_r2|regr_intercept|regr_count|regr_avgy|regr_avgx|regexp|reconfigure|recheck|readtext|raw|rank|raiserror|raid0|quote|purge|processlist|process|procedural|proc|print|prepared|preorder|prefix|preceding|power|postfix|pli|plan|placing|percentile_disc|percentile_cont|percent_rank|percent|pctfree|password|pascal|parameters|parameter_specific_schema|parameter_specific_name|parameter_specific_catalog|parameter_ordinal_position|parameter_name|parameter_mode|pack_keys|owner|overriding|overlay|outfile|others|ordering|options|optionally|optimize|operator|operation|openxml|openrowset|openquery|opendatasource|online|oids|offsets|offset|offline|off|octets|number|nulls|nullable|nowait|notnull|notify|nothing|nosuperuser|normalized|normalize|nonclustered|nologin|noinherit|nocreateuser|nocreaterole|nocreatedb|nocompress|nocheck|noaudit|no_write_to_binlog|nesting|name|myisam|mumps|move|more|monthname|modify|mode|mod|mlslabel|minvalue|minute_second|minute_microsecond|minus|min_rows|middleint|message_text|message_octet_length|message_length|mediumtext|mediumint|mediumblob|maxvalue|maxextents|max_rows|matched|m|low_priority|longtext|longblob|long|logs|login|lock|location|load|ln|listen|lines|lineno|limit|less|length|least|last_insert_id|lancompiler|kill|keys|key_type|key_member|k|isnull|isam|invoker|intersection|int8|int4|int3|int2|int1|instead|instantiable|instance|insert_id|initialize|initial|inherits|inherit|infix|infile|index|increment|including|include|implicit|implementation|immutable|ilike|ignore|identitycol|identity_insert|identified|hour_second|hour_minute|hour_microsecond|hosts|host|holdlock|high_priority|hierarchy|heap|header|greatest|grants|granted|generated|g|fusion|fulltext|freeze|freetexttable|freetext|forward|fortran|force|following|flush|floor|float8|float4|final|fillfactor|file|fields|explain|exp|existing|exclusive|excluding|exclude|every|escaped|errlvl|enum|end-exec|encrypted|encoding|enclosed|enable|dynamic_function_code|dynamic_function|dump|dummy|dual|div|distributed|distinctrow|dispatch|disk|disable|dictionary|destructor|destroy|derived|deny|dense_rank|delimiters|delimiter|delayed|delay_key_write|degree|definer|defined|defaults|dbcc|dayofyear|dayofweek|dayofmonth|day_second|day_minute|day_microsecond|day_hour|datetime_interval_precision|datetime_interval_code|datetime|databases|database|cursor_name|cume_dist|csv|createuser|createrole|createdb|covar_samp|covar_pop|corr|copy|conversion|containstable|constraint_schema|constraint_name|constraint_catalog|connection_name|condition_number|compute|compress|completion|committed|comment|command_function_code|command_function|columns|column_name|collect|collation_schema|collation_name|collation_catalog|cobol|clustered|cluster|class_origin|class|checksum|checkpoint|checked|characters|characteristics|character_set_schema|character_set_name|character_set_catalog|change|chain|ceiling|ceil|catalog_name|cardinality|cache|c|bulk|browse|break|bool|bitvar|bernoulli|backward|backup|avg_row_length|auto_increment|audit|attributes|attribute|assignment|analyze|analyse|always|also|alias|aggregate|admin|ada|access|abs|abort|a|ZEROFILL|YEAR_MONTH|XOR|X509|WRITETEXT|WIDTH_BUCKET|WAITFOR|VOLATILE|VERBOSE|VARIABLES|VARIABLE|VARCHARACTER|VARCHAR2|VARBINARY|VAR_SAMP|VAR_POP|VALIDATOR|VALIDATE|VALID|VACUUM|UTC_TIMESTAMP|UTC_TIME|UTC_DATE|USER_DEFINED_TYPE_SCHEMA|USER_DEFINED_TYPE_NAME|USER_DEFINED_TYPE_CODE|USER_DEFINED_TYPE_CATALOG|USE|UPDATETEXT|UNSIGNED|UNNAMED|UNLOCK|UNLISTEN|UNENCRYPTED|UNCOMMITTED|UNBOUNDED|UID|UESCAPE|TYPE|TSEQUAL|TRUSTED|TRUNCATE|TRIGGER_SCHEMA|TRIGGER_NAME|TRIGGER_CATALOG|TRANSFORMS|TRANSFORM|TRANSACTIONS_ROLLED_BACK|TRANSACTIONS_COMMITTED|TRANSACTION_ACTIVE|TRAN|TOP_LEVEL_COUNT|TOP|TOAST|TINYTEXT|TINYINT|TINYBLOB|TIES|THAN|TEXTSIZE|TEXT|TERMINATED|TERMINATE|TEMPLATE|TEMP|TABLESPACE|TABLES|TABLE_NAME|SYSID|SYSDATE|SYNONYM|SUPERUSER|SUCCESSFUL|SUBLIST|SUBCLASS_ORIGIN|STYLE|STRUCTURE|STRING|STRICT|STRAIGHT_JOIN|STORAGE|STDOUT|STDIN|STDDEV_SAMP|STDDEV_POP|STATUS|STATISTICS|STATEMENT|STARTING|STABLE|SSL|SQRT|SQLCA|SQL_WARNINGS|SQL_SMALL_RESULT|SQL_SELECT_LIMIT|SQL_LOW_PRIORITY_UPDATES|SQL_LOG_UPDATE|SQL_LOG_OFF|SQL_CALC_FOUND_ROWS|SQL_BIG_TABLES|SQL_BIG_SELECTS|SQL_BIG_RESULT|SPECIFIC_NAME|SPATIAL|SOURCE|SONAME|SIMPLE|SHUTDOWN|SHOW|SHARE|SETUSER|SETOF|SERVER_NAME|SERIALIZABLE|SEQUENCE|SEPARATOR|SELF|SECURITY|SECOND_MICROSECOND|SCOPE_SCHEMA|SCOPE_NAME|SCOPE_CATALOG|SCHEMAS|SCHEMA_NAME|SCALE|SAVE|RULE|ROWNUM|ROWID|ROWGUIDCOL|ROWCOUNT|ROW_NUMBER|ROW_COUNT|ROUTINE_SCHEMA|ROUTINE_NAME|ROUTINE_CATALOG|RLIKE|RETURNED_SQLSTATE|RETURNED_OCTET_LENGTH|RETURNED_LENGTH|RETURNED_CARDINALITY|RESTORE|RESTART|RESOURCE|RESET|REQUIRE|REPLICATION|REPLACE|REPEATABLE|RENAME|RELOAD|REINDEX|REGR_SYY|REGR_SXY|REGR_SXX|REGR_SLOPE|REGR_R2|REGR_INTERCEPT|REGR_COUNT|REGR_AVGY|REGR_AVGX|REGEXP|RECONFIGURE|RECHECK|READTEXT|RAW|RANK|RAISERROR|RAID0|QUOTE|PURGE|PROCESSLIST|PROCESS|PROCEDURAL|PROC|PRINT|PREPARED|PREORDER|PREFIX|PRECEDING|POWER|POSTFIX|PLI|PLAN|PLACING|PERCENTILE_DISC|PERCENTILE_CONT|PERCENT_RANK|PERCENT|PCTFREE|PASSWORD|PASCAL|PARAMETERS|PARAMETER_SPECIFIC_SCHEMA|PARAMETER_SPECIFIC_NAME|PARAMETER_SPECIFIC_CATALOG|PARAMETER_ORDINAL_POSITION|PARAMETER_NAME|PARAMETER_MODE|PACK_KEYS|OWNER|OVERRIDING|OVERLAY|OUTFILE|OTHERS|ORDERING|OPTIONS|OPTIONALLY|OPTIMIZE|OPERATOR|OPERATION|OPENXML|OPENROWSET|OPENQUERY|OPENDATASOURCE|ONLINE|OIDS|OFFSETS|OFFSET|OFFLINE|OFF|OCTETS|NUMBER|NULLS|NULLABLE|NOWAIT|NOTNULL|NOTIFY|NOTHING|NOSUPERUSER|NORMALIZED|NORMALIZE|NONCLUSTERED|NOLOGIN|NOINHERIT|NOCREATEUSER|NOCREATEROLE|NOCREATEDB|NOCOMPRESS|NOCHECK|NOAUDIT|NO_WRITE_TO_BINLOG|NESTING|NAME|MYISAM|MUMPS|MOVE|MORE|MONTHNAME|MODIFY|MODE|MOD|MLSLABEL|MINVALUE|MINUTE_SECOND|MINUTE_MICROSECOND|MINUS|MIN_ROWS|MIDDLEINT|MESSAGE_TEXT|MESSAGE_OCTET_LENGTH|MESSAGE_LENGTH|MEDIUMTEXT|MEDIUMINT|MEDIUMBLOB|MAXVALUE|MAXEXTENTS|MAX_ROWS|MATCHED|M|LOW_PRIORITY|LONGTEXT|LONGBLOB|LONG|LOGS|LOGIN|LOCK|LOCATION|LOAD|LN|LISTEN|LINES|LINENO|LIMIT|LESS|LENGTH|LEAST|LAST_INSERT_ID|LANCOMPILER|KILL|KEYS|KEY_TYPE|KEY_MEMBER|K|ISNULL|ISAM|INVOKER|INTERSECTION|INT8|INT4|INT3|INT2|INT1|INSTEAD|INSTANTIABLE|INSTANCE|INSERT_ID|INITIALIZE|INITIAL|INHERITS|INHERIT|INFIX|INFILE|INDEX|INCREMENT|INCLUDING|INCLUDE|IMPLICIT|IMPLEMENTATION|IMMUTABLE|ILIKE|IGNORE|IDENTITYCOL|IDENTITY_INSERT|IDENTIFIED|HOUR_SECOND|HOUR_MINUTE|HOUR_MICROSECOND|HOSTS|HOST|HOLDLOCK|HIGH_PRIORITY|HIERARCHY|HEAP|HEADER|GREATEST|GRANTS|GRANTED|GENERATED|G|FUSION|FULLTEXT|FREEZE|FREETEXTTABLE|FREETEXT|FORWARD|FORTRAN|FORCE|FOLLOWING|FLUSH|FLOOR|FLOAT8|FLOAT4|FINAL|FILLFACTOR|FILE|FIELDS|EXPLAIN|EXP|EXISTING|EXCLUSIVE|EXCLUDING|EXCLUDE|EVERY|ESCAPED|ERRLVL|ENUM|END-EXEC|ENCRYPTED|ENCODING|ENCLOSED|ENABLE|DYNAMIC_FUNCTION_CODE|DYNAMIC_FUNCTION|DUMP|DUMMY|DUAL|DIV|DISTRIBUTED|DISTINCTROW|DISPATCH|DISK|DISABLE|DICTIONARY|DESTRUCTOR|DESTROY|DERIVED|DENY|DENSE_RANK|DELIMITERS|DELIMITER|DELAYED|DELAY_KEY_WRITE|DEGREE|DEFINER|DEFINED|DEFAULTS|DBCC|DAYOFYEAR|DAYOFWEEK|DAYOFMONTH|DAY_SECOND|DAY_MINUTE|DAY_MICROSECOND|DAY_HOUR|DATETIME_INTERVAL_PRECISION|DATETIME_INTERVAL_CODE|DATETIME|DATABASES|DATABASE|CURSOR_NAME|CUME_DIST|CSV|CREATEUSER|CREATEROLE|CREATEDB|COVAR_SAMP|COVAR_POP|CORR|COPY|CONVERSION|CONTAINSTABLE|CONSTRAINT_SCHEMA|CONSTRAINT_NAME|CONSTRAINT_CATALOG|CONNECTION_NAME|CONDITION_NUMBER|COMPUTE|COMPRESS|COMPLETION|COMMITTED|COMMENT|COMMAND_FUNCTION_CODE|COMMAND_FUNCTION|COLUMNS|COLUMN_NAME|COLLECT|COLLATION_SCHEMA|COLLATION_NAME|COLLATION_CATALOG|COBOL|CLUSTERED|CLUSTER|CLASS_ORIGIN|CLASS|CHECKSUM|CHECKPOINT|CHECKED|CHARACTERS|CHARACTERISTICS|CHARACTER_SET_SCHEMA|CHARACTER_SET_NAME|CHARACTER_SET_CATALOG|CHANGE|CHAIN|CEILING|CEIL|CATALOG_NAME|CARDINALITY|CACHE|C|BULK|BROWSE|BREAK|BOOL|BITVAR|BERNOULLI|BACKWARD|BACKUP|AVG_ROW_LENGTH|AUTO_INCREMENT|AUDIT|ATTRIBUTES|ATTRIBUTE|ASSIGNMENT|ANALYZE|ANALYSE|ALWAYS|ALSO|ALIAS|AGGREGATE|ADMIN|ADA|ACCESS|ABS|ABORT|A)(?=[^a-zA-Z])",
+ "name" : "context.keyword.reserved.dialect.sql"
+ },
+ "keyword_standard" : {
+ "match" : "(zone|year|write|work|without|within|with|window|while|where|whenever|when|view|varying|varchar|values|value|using|user|usage|upper|update|until|unnest|unknown|unique|union|undo|under|true|trim|trigger|treat|translation|translate|transaction|trailing|to|timezone_minute|timezone_hour|timestamp|time|then|temporary|tablesample|table|system_user|system|symmetric|sum|substring|submultiset|static|state|start|sqlwarning|sqlstate|sqlexception|sqlerror|sqlcode|sql|specifictype|specific|space|some|smallint|size|similar|signal|sets|set|session_user|session|sensitive|select|section|second|search|scroll|scope|schema|savepoint|rows|row|routine|rollup|rollback|role|right|revoke|returns|return|result|restrict|resignal|repeat|release|relative|referencing|references|ref|recursive|real|reads|read|range|public|procedure|privileges|prior|primary|preserve|prepare|precision|position|path|partition|partial|parameter|pad|overlaps|over|output|outer|out|ordinality|order|or|option|open|only|on|old|of|octet_length|object|numeric|nullif|null|not|none|no|next|new|nclob|nchar|natural|national|names|multiset|month|module|modifies|minute|min|method|merge|member|max|match|map|lower|loop|locator|localtimestamp|localtime|local|like|level|left|leave|leading|lateral|last|large|language|key|join|iterate|isolation|is|into|interval|intersect|integer|int|insert|insensitive|input|inout|inner|initially|indicator|in|immediate|if|identity|hour|hold|having|handler|grouping|group|grant|goto|go|global|get|general|function|full|from|free|found|foreign|for|float|first|filter|fetch|false|extract|external|exit|exists|execute|exec|exception|except|escape|equals|end|elseif|else|element|each|dynamic|drop|double|domain|do|distinct|disconnect|diagnostics|deterministic|descriptor|describe|desc|deref|depth|delete|deferred|deferrable|default|declare|decimal|dec|deallocate|day|date|data|cycle|cursor|current_user|current_transform_group_for_type|current_timestamp|current_time|current_role|current_path|current_default_transform_group|current_date|current|cube|cross|create|count|corresponding|convert|continue|contains|constructor|constraints|constraint|connection|connect|condition|commit|column|collation|collate|coalesce|close|clob|check|character_length|character|char_length|char|catalog|cast|case|cascaded|cascade|called|call|by|breadth|both|boolean|blob|bit_length|bit|binary|bigint|between|begin|before|avg|authorization|atomic|at|asymmetric|assertion|asensitive|asc|as|array|are|any|and|alter|allocate|all|after|add|action|absolute|ZONE|YEAR|WRITE|WORK|WITHOUT|WITHIN|WITH|WINDOW|WHILE|WHERE|WHENEVER|WHEN|VIEW|VARYING|VARCHAR|VALUES|VALUE|USING|USER|USAGE|UPPER|UPDATE|UNTIL|UNNEST|UNKNOWN|UNIQUE|UNION|UNDO|UNDER|TRUE|TRIM|TRIGGER|TREAT|TRANSLATION|TRANSLATE|TRANSACTION|TRAILING|TO|TIMEZONE_MINUTE|TIMEZONE_HOUR|TIMESTAMP|TIME|THEN|TEMPORARY|TABLESAMPLE|TABLE|SYSTEM_USER|SYSTEM|SYMMETRIC|SUM|SUBSTRING|SUBMULTISET|STATIC|STATE|START|SQLWARNING|SQLSTATE|SQLEXCEPTION|SQLERROR|SQLCODE|SQL|SPECIFICTYPE|SPECIFIC|SPACE|SOME|SMALLINT|SIZE|SIMILAR|SIGNAL|SETS|SET|SESSION_USER|SESSION|SENSITIVE|SELECT|SECTION|SECOND|SEARCH|SCROLL|SCOPE|SCHEMA|SAVEPOINT|ROWS|ROW|ROUTINE|ROLLUP|ROLLBACK|ROLE|RIGHT|REVOKE|RETURNS|RETURN|RESULT|RESTRICT|RESIGNAL|REPEAT|RELEASE|RELATIVE|REFERENCING|REFERENCES|REF|RECURSIVE|REAL|READS|READ|RANGE|PUBLIC|PROCEDURE|PRIVILEGES|PRIOR|PRIMARY|PRESERVE|PREPARE|PRECISION|POSITION|PATH|PARTITION|PARTIAL|PARAMETER|PAD|OVERLAPS|OVER|OUTPUT|OUTER|OUT|ORDINALITY|ORDER|OR|OPTION|OPEN|ONLY|ON|OLD|OF|OCTET_LENGTH|OBJECT|NUMERIC|NULLIF|NULL|NOT|NONE|NO|NEXT|NEW|NCLOB|NCHAR|NATURAL|NATIONAL|NAMES|MULTISET|MONTH|MODULE|MODIFIES|MINUTE|MIN|METHOD|MERGE|MEMBER|MAX|MATCH|MAP|LOWER|LOOP|LOCATOR|LOCALTIMESTAMP|LOCALTIME|LOCAL|LIKE|LEVEL|LEFT|LEAVE|LEADING|LATERAL|LAST|LARGE|LANGUAGE|KEY|JOIN|ITERATE|ISOLATION|IS|INTO|INTERVAL|INTERSECT|INTEGER|INT|INSERT|INSENSITIVE|INPUT|INOUT|INNER|INITIALLY|INDICATOR|IN|IMMEDIATE|IF|IDENTITY|HOUR|HOLD|HAVING|HANDLER|GROUPING|GROUP|GRANT|GOTO|GO|GLOBAL|GET|GENERAL|FUNCTION|FULL|FROM|FREE|FOUND|FOREIGN|FOR|FLOAT|FIRST|FILTER|FETCH|FALSE|EXTRACT|EXTERNAL|EXIT|EXISTS|EXECUTE|EXEC|EXCEPTION|EXCEPT|ESCAPE|EQUALS|END|ELSEIF|ELSE|ELEMENT|EACH|DYNAMIC|DROP|DOUBLE|DOMAIN|DO|DISTINCT|DISCONNECT|DIAGNOSTICS|DETERMINISTIC|DESCRIPTOR|DESCRIBE|DESC|DEREF|DEPTH|DELETE|DEFERRED|DEFERRABLE|DEFAULT|DECLARE|DECIMAL|DEC|DEALLOCATE|DAY|DATE|DATA|CYCLE|CURSOR|CURRENT_USER|CURRENT_TRANSFORM_GROUP_FOR_TYPE|CURRENT_TIMESTAMP|CURRENT_TIME|CURRENT_ROLE|CURRENT_PATH|CURRENT_DEFAULT_TRANSFORM_GROUP|CURRENT_DATE|CURRENT|CUBE|CROSS|CREATE|COUNT|CORRESPONDING|CONVERT|CONTINUE|CONTAINS|CONSTRUCTOR|CONSTRAINTS|CONSTRAINT|CONNECTION|CONNECT|CONDITION|COMMIT|COLUMN|COLLATION|COLLATE|COALESCE|CLOSE|CLOB|CHECK|CHARACTER_LENGTH|CHARACTER|CHAR_LENGTH|CHAR|CATALOG|CAST|CASE|CASCADED|CASCADE|CALLED|CALL|BY|BREADTH|BOTH|BOOLEAN|BLOB|BIT_LENGTH|BIT|BINARY|BIGINT|BETWEEN|BEGIN|BEFORE|AVG|AUTHORIZATION|ATOMIC|AT|ASYMMETRIC|ASSERTION|ASENSITIVE|ASC|AS|ARRAY|ARE|ANY|AND|ALTER|ALLOCATE|ALL|AFTER|ADD|ACTION|ABSOLUTE)(?=[^a-zA-Z])",
+ "name" : "context.keyword.reserved.standard.sql"
+ },
+ "number" : {
+ "match" : "[\u005C-]?[0-9]+(\u005C.[0-9]+)?([eEpP]\u005C-?[0-9]+)?",
+ "name" : "context.number.number.sql"
+ },
+ "operator" : {
+ "match" : "\u005C~|}|\u005C||{|\u005C^|\u005C]|\u005C[|\u005C?|>|=|<|;|:|/|\u005C.|\u005C-|\u005C+|\u005C*|\u005C)|\u005C(|\u005C&|\u005C%|\u005C!",
+ "name" : "context.special.operator.sql"
+ },
+ "string_double" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.special.doublequoted.open.sql"
+ },
+ "2" : {
+ "name" : "context.text.doublequoted.text.sql"
+ },
+ "3" : {
+ "name" : "context.special.doublequoted.close.sql"
+ }
+ },
+ "match" : "(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)"
+ },
+ "string_reverse" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.special.reversequoted.open.sql"
+ },
+ "2" : {
+ "name" : "context.text.reversequoted.text.sql"
+ },
+ "3" : {
+ "name" : "context.special.reversequoted.close.sql"
+ }
+ },
+ "match" : "(`)((?:\u005C\u005C`|[^`])*)(`)"
+ },
+ "string_single" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.special.singlequoted.open.sql"
+ },
+ "2" : {
+ "name" : "context.text.singlequoted.text.sql"
+ },
+ "3" : {
+ "name" : "context.special.singlequoted.close.sql"
+ }
+ },
+ "match" : "(')((?:\u005C\u005C'|[^'])*)(')"
+ }
+ },
+ "scopeName" : "source.context.sql",
+ "version" : "1.0.0"
+} \ 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
new file mode 100644
index 000000000..c96ab831a
--- /dev/null
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
@@ -0,0 +1,240 @@
+{
+ "name" : "context.tex",
+ "patterns" : [
+ {
+ "include" : "#comment"
+ },
+ {
+ "include" : "#constant"
+ },
+ {
+ "include" : "#lua_environment"
+ },
+ {
+ "include" : "#lua_command"
+ },
+ {
+ "include" : "#metafun_environment_o"
+ },
+ {
+ "include" : "#metafun_environment_a"
+ },
+ {
+ "include" : "#metafun_command"
+ },
+ {
+ "include" : "#subsystem_prefix"
+ },
+ {
+ "include" : "#subsystem_suffix"
+ },
+ {
+ "include" : "#ifprimitive"
+ },
+ {
+ "include" : "#helper"
+ },
+ {
+ "include" : "#command"
+ },
+ {
+ "include" : "#primitive"
+ },
+ {
+ "include" : "#reserved"
+ },
+ {
+ "include" : "#csname"
+ },
+ {
+ "include" : "#escaped"
+ },
+ {
+ "include" : "#grouping"
+ },
+ {
+ "include" : "#special"
+ },
+ {
+ "include" : "#extra"
+ }
+ ],
+ "repository" : {
+ "command" : {
+ "match" : "\u005C\u005C(zwnj|zwj|zstroke|zhook|zeta|zerowidthspace|zerowidthnobreakspace|zdotaccent|zcaron|zacute|ytilde|ymacron|yhook|ygrave|yen|ydotbelow|ydiaeresis|ycircumflex|yacute|xypos|xxfrac|xtwoheadrightarrow|xtwoheadleftarrow|xtriplerel|xsplitstring|xrightoverleftarrow|xrightleftharpoons|xrightharpoonup|xrightharpoondown|xrightarrow|xrel|xmlverbatim|xmlvalue|xmltofile|xmltobufferverbose|xmltobuffer|xmltext|xmltexentity|xmltag|xmlstrippednolines|xmlstripped|xmlstripnolines|xmlstrip|xmlsnippet|xmlshow|xmlsetup|xmlsetsetup|xmlsetparam|xmlsetpar|xmlsetinjectors|xmlsetfunction|xmlsetentity|xmlsetattribute|xmlsetatt|xmlsave|xmlresetsetups|xmlresetinjectors|xmlresetdocumentsetups|xmlremovesetup|xmlremovedocumentsetup|xmlremapnamespace|xmlremapname|xmlregisterns|xmlregisteredsetups|xmlregistereddocumentsetups|xmlrefatt|xmlraw|xmlpure|xmlprocessfile|xmlprocessdata|xmlprocessbuffer|xmlprettyprinttext|xmlprettyprint|xmlprependsetup|xmlprependdocumentsetup|xmlposition|xmlpos|xmlpath|xmlparam|xmlpar|xmlnonspace|xmlnamespace|xmlname|xmlmapvalue|xmlmain|xmlloadonly|xmlloadfile|xmlloaddirectives|xmlloaddata|xmlloadbuffer|xmllastpar|xmllastmatch|xmllastatt|xmllast|xmlinstalldirective|xmlinlineverbatim|xmlinlineprettyprinttext|xmlinlineprettyprint|xmlinjector|xmlinfo|xmlinclusions|xmlinclusion|xmlinclude|xmlflushtext|xmlflushspacewise|xmlflushpure|xmlflushlinewise|xmlflushdocumentsetups|xmlflushcontext|xmlflush|xmlfirst|xmlfilter|xmlelement|xmldoiftext|xmldoifselfempty|xmldoifnottext|xmldoifnotselfempty|xmldoifnotatt|xmldoifnot|xmldoifelsevalue|xmldoifelsetext|xmldoifelseselfempty|xmldoifelseempty|xmldoifelseatt|xmldoifelse|xmldoifatt|xmldoif|xmldisplayverbatim|xmldirectivesbefore|xmldirectivesafter|xmldirectives|xmldefaulttotext|xmlcount|xmlcontext|xmlconcatrange|xmlconcat|xmlcommand|xmlchecknamespace|xmlchainattdef|xmlchainatt|xmlbeforesetup|xmlbeforedocumentsetup|xmlbadinclusions|xmlattributedef|xmlattribute|xmlattdef|xmlatt|xmlapplyselectors|xmlappendsetup|xmlappenddocumentsetup|xmlall|xmlaftersetup|xmlafterdocumentsetup|xmladdindex|xmapsto|xleftrightharpoons|xleftrightarrow|xleftharpoonup|xleftharpoondown|xleftarrow|xi|xhookrightarrow|xhookleftarrow|xfrac|xequal|xdefconvertedargument|xRightarrow|xLeftrightarrow|xLeftarrow|writetolist|writestatus|writedatatolist|writebetweenlist|wr|wp|wordtonumber|words|wordright|word|withoutpt|widthspanningtext|widthofstring|widetilde|widehat|whitearrowupfrombar|weekday|wedgeeq|wedge|wdofstring|wcircumflex|vspacing|vspace|vsmashed|vsmashbox|vsmash|vpos|vphantom|vl|viewerlayer|vglue|veryraggedright|veryraggedleft|veryraggedcenter|verticalpositionbar|verticalgrowingbar|vert|version|verbosenumber|verbatimstring|verbatim|veeeq|veebar|vee|vec|vdots|vdash|vboxreference|vartheta|varsigma|varrho|varpi|varphi|varnothing|varkappa|varepsilon|varTheta|vDash|utilityregisterlength|utilde|utfupper|utflower|utfchar|usezipfile|useurl|usetypescriptfile|usetypescript|usetexmodule|usesymbols|usesubpath|usestaticMPfigure|usesetupsparameter|userpagenumber|usereferenceparameter|useproject|useprofileparameter|useproduct|usemodule|usemathstyleparameter|useluamodule|uselanguageparameter|useinterlinespaceparameter|useindentnextparameter|useindentingparameter|usegridparameter|usefile|usefigurebase|useexternalsoundtrack|useexternalrendering|useexternalfigure|useexternaldocument|useenvironment|usedummystyleparameter|usedummystyleandcolor|usedummycolorparameter|usedirectory|usecomponent|usecolors|usecitation|usebtxdefinitions|usebtxdataset|usebodyfontparameter|usebodyfont|useblocks|useblankparameter|usealignparameter|useURL|useMPvariables|useMPrun|useMPlibrary|useMPgraphic|useMPenvironmentbuffer|useJSscripts|url|uring|urcorner|upwhitearrow|upuparrows|upsilon|upperrightsinglesixquote|upperrightsingleninequote|upperrightdoublesixquote|upperrightdoubleninequote|upperleftsinglesixquote|upperleftsingleninequote|upperleftdoublesixquote|upperleftdoubleninequote|uppercasestring|uppercased|uplus|upharpoonright|upharpoonleft|updownarrows|updownarrowbar|updownarrow|updasharrow|uparrow|upand|uogonek|untexcommand|untexargument|unspacestring|unspaced|unspaceargument|unspaceafter|unregisterhyphenationpattern|unprotected|unknown|unittext|unitslow|unitshigh|unitlanguage|unit|uniqueMPpagegraphic|uniqueMPgraphic|unihex|unhhbox|unframed|unexpandeddocumentvariable|undoassign|understrikes|understrike|underset|underrightarrow|underrandoms|underrandom|underparent|underleftarrow|underdots|underdot|underdashes|underdash|underbracket|underbrace|underbars|underbar|undepthed|undefinevalue|umacron|ulcorner|uinvertedbreve|uhungarumlaut|uhorntilde|uhornhook|uhorngrave|uhorndotbelow|uhornacute|uhorn|uhook|ugrave|uedcatcodecommand|udoublegrave|udots|udotbelow|udiaeresismacron|udiaeresisgrave|udiaeresiscaron|udiaeresisacute|udiaeresis|uconvertnumber|ucircumflex|ucaron|ubreve|uacute|typesetfile|typesetbuffer|typescripttwo|typescriptthree|typescriptprefix|typescriptone|typeinlinebuffer|typefile|typeface|typedefinedbuffer|typebuffer|type|typ|txx|tx|twothirds|twosuperior|twoheaduparrow|twoheadrightarrowtail|twoheadrightarrow|twoheadleftarrow|twoheaddownarrow|twofifths|twodigitrounding|turnediota|ttwoheadrightarrow|ttwoheadleftarrow|ttriplerel|ttraggedright|tstroke|truefontname|truefilename|tripleverticalbar|tripleprime|triplebond|trightoverleftarrow|trightleftharpoons|trightharpoonup|trightharpoondown|trightarrow|triangleright|triangleq|triangleleft|triangledown|triangle|trel|transparent|transparencycomponents|translate|trademark|tracepositions|traceoutputroutines|tracedfontname|tracecatcodetables|topskippedbox|toprightbox|toplinebox|topleftbox|topbox|top|tooltip|tolinenote|tochar|to|tmapsto|tleftrightharpoons|tleftrightarrow|tleftharpoonup|tleftharpoondown|tleftarrow|tlap|title|tinyfont|times|tilde|tightlayer|tibetannumerals|threesuperior|threequarter|threeperemspace|threefifths|threeeighths|threedigitrounding|thorn|thookrightarrow|thookleftarrow|thook|thirdofthreeunexpanded|thirdofthreearguments|thirdofsixarguments|thirdoffourarguments|thirdoffivearguments|thinspace|thinrules|thinrule|thickspace|theta|theremainingcharacters|therefore|thenormalizedbodyfontsize|thefirstcharacter|thainumerals|thai|textyen|textvisiblespace|textunderscore|texttilde|textsterling|textslash|textrule|textring|textreference|textpm|textplus|textperiod|textpercent|textounce|textormathchars|textormathchar|textohm|textogonek|textnumero|textmultiply|textmu|textminus|textmho|textmath|textmacron|textlognot|textkelvin|texthyphen|texthungarumlaut|texthorizontalbar|texthash|textgrave|textfraction|textflowcollector|texteuro|textellipsis|textdotaccent|textdong|textdollar|textdiv|textdiaeresis|textdegree|textddag|textdag|textcurrency|textcontrolspace|textcomma|textcite|textcitation|textcircumflex|textcircledP|textcent|textcelsius|textcedilla|textcaron|textbullet|textbrokenbar|textbreve|textbraceright|textbraceleft|textbottomdot|textbottomcomma|textbar|textbackslash|textat|textasciitilde|textasciicircum|textampersand|textacute|textAngstrom|texsetup|texdefinition|tex|testtokens|testpagesync|testpageonly|testpage|testfeatureonce|testfeature|testcolumn|testandsplitstring|test|tequal|tcurl|tcommaaccent|tcedilla|tcaron|tbox|tbinom|tau|taglabeltext|taglabellanguage|taggedlabeltexts|taggedctxcommand|tabulaterule|tabulateline|tabulateautorule|tabulateautoline|tRightarrow|tLeftrightarrow|tLeftarrow|systemsetups|systemloglast|systemlogfirst|systemlog|synctexsetfilename|synctexresetfilename|synctexblockfilename|synchronizewhitespace|synchronizestrut|synchronizeoutputstreams|synchronizemarking|synchronizeindenting|synchronizeblank|symbolreference|symbol|switchtointerlinespace|switchtocolor|switchtobodyfont|switchstyleonly|swarrow|swaptypeface|swapmacros|swapface|swapdimens|swapcounts|surdradical|surd|supsetneqq|supsetneq|supseteqq|supseteq|supset|sum|suffixtext|suffixlanguage|succsim|succnsim|succneqq|succneq|succnapprox|succeqq|succeq|succcurlyeq|succapprox|succ|subtractfeature|subsubsubsubsubject|subsubsubsubsection|subsubsubsubject|subsubsubsection|subsubsubject|subsubsection|subsubject|substituteincommalist|subsetneqq|subsetneq|subseteqq|subseteq|subset|subsentence|subsection|subpagenumber|subject|styleinstance|style|strutwd|struttedbox|struthtdp|strutht|strutgap|strutdp|strut|structurevariable|structureuservariable|structuretitle|structurenumber|structurelistuservariable|stripspaces|strippedcsname|stripcharacter|strictdoifnextoptionalelse|strictdoifelsenextoptional|stretched|stopxtablenext|stopxtablehead|stopxtablefoot|stopxtablebody|stopxtable|stopxrowgroup|stopxrow|stopxmlsetups|stopxmlraw|stopxmlinlineverbatim|stopxmldisplayverbatim|stopxgroup|stopxcolumn|stopxcellgroup|stopxcell|stopvtopregister|stopvtop|stopviewerlayer|stopvboxtohboxseparator|stopvboxtohbox|stopvboxregister|stopvbox|stopusingbtxspecification|stopuserdata|stopusemathstyleparameter|stopuseMPgraphic|stopusableMPgraphic|stopunpacked|stopunittext|stopuniqueMPpagegraphic|stopuniqueMPgraphic|stoptyping|stoptypescriptcollection|stoptypescript|stoptransparent|stoptokens|stoptokenlist|stoptitle|stoptextrule|stoptextmakeup|stoptextflow|stoptextcolorintent|stoptextcolor|stoptextbackgroundmanual|stoptextbackground|stoptext|stoptexdefinition|stoptexcode|stoptaglabeltext|stoptagged|stoptabulatetail|stoptabulatehead|stoptabulate|stoptabletext|stoptabletail|stoptables|stoptablehead|stoptable|stopsymbolset|stopsuffixtext|stopsubsubsubsubsubject|stopsubsubsubsubsection|stopsubsubsubsubject|stopsubsubsubsection|stopsubsubsubject|stopsubsubsection|stopsubsubject|stopsubstack|stopsubsentence|stopsubsection|stopsubjectlevel|stopsubject|stopsubformulas|stopstyle|stopstrut|stopstructurepageregister|stopstrictinspectnextcharacter|stopstaticMPgraphic|stopstaticMPfigure|stopstandardmakeup|stopspread|stopsplittext|stopsplitformula|stopspformula|stopspeech|stopspecialitem|stopsimplecolumns|stopsidebar|stopshift|stopshapebox|stopsetups|stopsectionlevel|stopsectionblockenvironment|stopsectionblock|stopsection|stopsdformula|stopscript|stopruby|stoprightaligned|stopreusableMPgraphic|stopregister|stopregime|stopreferenceprefix|stopreadingfile|stoprawsetups|stoprandomseed|stoprandomized|stopquote|stopquotation|stoppunctuation|stoppublication|stopprotectedcolors|stopprotect|stopproject|stopproduct|stopprocesscommalist|stopprocesscommacommand|stopprocessassignmentlist|stopprocessassignmentcommand|stopprefixtext|stoppostponingnotes|stoppostponing|stoppositive|stoppositionoverlay|stoppositioning|stopplacetable|stopplacepairedbox|stopplacelegend|stopplaceintermezzo|stopplacegraphic|stopplaceformula|stopplacefloat|stopplacefigure|stopplacechemical|stoppath|stoppart|stopparbuilder|stopparagraphscell|stopparagraphs|stopparagraph|stoppar|stoppagemakeup|stoppagelayout|stoppagefigure|stoppagecomment|stoppagecolumns|stoppacked|stopoverprint|stopoverlay|stopoutputstream|stopopposite|stopoperatortext|stopnotmode|stopnotext|stopnotallmodes|stopnointerference|stopnicelyfilledbox|stopnegative|stopnarrower|stopnarrow|stopnamedsubformulas|stopnamedsection|stopmpformula|stopmoduletestsection|stopmodule|stopmodeset|stopmode|stopmixedcolumns|stopmiddlemakeup|stopmiddlealigned|stopmidaligned|stopmdformula|stopmaxaligned|stopmatrix|stopmatrices|stopmathstyle|stopmathmode|stopmathmatrix|stopmathlabeltext|stopmathcases|stopmathalignment|stopmarkpages|stopmarkedcontent|stopmarginrule|stopmarginblock|stopmakeup|stopluasetups|stopluaparameterset|stopluacode|stoplua|stoplocalsetups|stoplocalnotes|stoplocallinecorrection|stoplocalheadsetup|stoplocalfootnotes|stoplinetablehead|stoplinetablecell|stoplinetablebody|stoplinetable|stoplines|stoplinenumbering|stoplinenote|stoplinefiller|stoplinecorrection|stoplinealignment|stopline|stoplegend|stopleftaligned|stoplayout|stoplanguage|stoplabeltext|stopknockout|stopitemize|stopitemgroupcolumns|stopitemgroup|stopitem|stopintertext|stopintermezzotext|stopinterface|stopinteractionmenu|stopinteraction|stopindentedtext|stopindentation|stopimath|stophyphenation|stophighlight|stophiding|stophelptext|stopheadtext|stophead|stophboxregister|stophboxestohbox|stophbox|stophanging|stopgridsnapping|stopgraphictext|stopgoto|stopfrontmatter|stopframedtext|stopframedtable|stopframedrow|stopframedcontent|stopframedcell|stopframed|stopformulas|stopformula|stopfootnote|stopfontsolution|stopfontclass|stopfont|stopfloatcombination|stopfixed|stopfittingpage|stopfiguretext|stopfigure|stopfact|stopfacingfloat|stopexternalfigurecollection|stopextendedcatcodetable|stopexpandedcollect|stopexpanded|stopexceptions|stopenvironment|stopendofline|stopendnote|stopembeddedxtable|stopelement|stopeffect|stopdocument|stopdmath|stopdisplaymath|stopdelimitedtext|stopdelimited|stopcurrentlistentrywrapper|stopcurrentcolor|stopctxfunctiondefinition|stopctxfunction|stopcontextdefinitioncode|stopcontextcode|stopcomponent|stopcomment|stopcombination|stopcolumnspan|stopcolumnsetspan|stopcolumnset|stopcolumns|stopcolorset|stopcoloronly|stopcolorintent|stopcolor|stopcollecting|stopcollect|stopchemicaltext|stopchemical|stopcheckedfences|stopcharacteralign|stopchapter|stopcenteraligned|stopcatcodetable|stopcases|stopbuffer|stopbtxrenderingdefinitions|stopbtxlabeltext|stopboxedcolumns|stopbordermatrix|stopbodymatter|stopblockquote|stopbitmapimage|stopbbordermatrix|stopbar|stopbackmatter|stopbackground|stopattachment|stopaside|stoparrangedpages|stopappendices|stopallmodes|stopalignment|stopalign|stopXML|stopTY|stopTX|stopTRs|stopTR|stopTN|stopTH|stopTEXpage|stopTEX|stopTDs|stopTD|stopTC|stopTABLEnext|stopTABLEhead|stopTABLEfoot|stopTABLEbody|stopTABLE|stopPARSEDXML|stopMPrun|stopMPpositionmethod|stopMPpositiongraphic|stopMPpage|stopMPinitializations|stopMPinclusions|stopMPextensions|stopMPenvironment|stopMPdrawing|stopMPdefinitions|stopMPcode|stopMPclip|stopMP|stopLUA|stopJSpreamble|stopJScode|stligature|startxtablenext|startxtablehead|startxtablefoot|startxtablebody|startxtable|startxrowgroup|startxrow|startxmlsetups|startxmlraw|startxmlinlineverbatim|startxmldisplayverbatim|startxgroup|startxcolumn|startxcellgroup|startxcell|startvtopregister|startvtop|startviewerlayer|startvboxtohboxseparator|startvboxtohbox|startvboxregister|startvbox|startusingbtxspecification|startuserdata|startusemathstyleparameter|startuseMPgraphic|startusableMPgraphic|startunpacked|startunittext|startuniqueMPpagegraphic|startuniqueMPgraphic|starttyping|starttypescriptcollection|starttypescript|starttransparent|starttokens|starttokenlist|starttitle|starttextrule|starttextmakeup|starttextflow|starttextcolorintent|starttextcolor|starttextbackgroundmanual|starttextbackground|starttext|starttexdefinition|starttexcode|starttaglabeltext|starttagged|starttabulatetail|starttabulatehead|starttabulate|starttabletext|starttabletail|starttables|starttablehead|starttable|startsymbolset|startsuffixtext|startsubsubsubsubsubject|startsubsubsubsubsection|startsubsubsubsubject|startsubsubsubsection|startsubsubsubject|startsubsubsection|startsubsubject|startsubstack|startsubsentence|startsubsection|startsubjectlevel|startsubject|startsubformulas|startstyle|startstrut|startstructurepageregister|startstrictinspectnextcharacter|startstaticMPgraphic|startstaticMPfigure|startstandardmakeup|startspread|startsplittext|startsplitformula|startspformula|startspeech|startspecialitem|startsimplecolumns|startsidebar|startshift|startshapebox|startsetups|startsectionlevel|startsectionblockenvironment|startsectionblock|startsection|startsdformula|startscript|startruby|startrightaligned|startreusableMPgraphic|startregister|startregime|startreferenceprefix|startreadingfile|startrawsetups|startrandomseed|startrandomized|startquote|startquotation|startpunctuation|startpublication|startprotectedcolors|startprotect|startproject|startproduct|startprocesscommalist|startprocesscommacommand|startprocessassignmentlist|startprocessassignmentcommand|startprefixtext|startpostponingnotes|startpostponing|startpositive|startpositionoverlay|startpositioning|startplacetable|startplacepairedbox|startplacelegend|startplaceintermezzo|startplacegraphic|startplaceformula|startplacefloat|startplacefigure|startplacechemical|startpath|startpart|startparbuilder|startparagraphscell|startparagraphs|startparagraph|startpar|startpagemakeup|startpagelayout|startpagefigure|startpagecomment|startpagecolumns|startpacked|startoverprint|startoverlay|startoutputstream|startopposite|startoperatortext|startnotmode|startnotext|startnotallmodes|startnointerference|startnicelyfilledbox|startnegative|startnarrower|startnarrow|startnamedsubformulas|startnamedsection|startmpformula|startmoduletestsection|startmodule|startmodeset|startmode|startmixedcolumns|startmiddlemakeup|startmiddlealigned|startmidaligned|startmdformula|startmaxaligned|startmatrix|startmatrices|startmathstyle|startmathmode|startmathmatrix|startmathlabeltext|startmathcases|startmathalignment|startmarkpages|startmarkedcontent|startmarginrule|startmarginblock|startmakeup|startluasetups|startluaparameterset|startluacode|startlua|startlocalsetups|startlocalnotes|startlocallinecorrection|startlocalheadsetup|startlocalfootnotes|startlinetablehead|startlinetablecell|startlinetablebody|startlinetable|startlines|startlinenumbering|startlinenote|startlinefiller|startlinecorrection|startlinealignment|startline|startlegend|startleftaligned|startlayout|startlanguage|startlabeltext|startknockout|startitemize|startitemgroupcolumns|startitemgroup|startitem|startintertext|startintermezzotext|startinterface|startinteractionmenu|startinteraction|startindentedtext|startindentation|startimath|starthyphenation|starthighlight|starthiding|starthelptext|startheadtext|starthead|starthboxregister|starthboxestohbox|starthbox|starthanging|startgridsnapping|startgraphictext|startgoto|startfrontmatter|startframedtext|startframedtable|startframedrow|startframedcontent|startframedcell|startframed|startformulas|startformula|startfootnote|startfontsolution|startfontclass|startfont|startfloatcombination|startfixed|startfittingpage|startfiguretext|startfigure|startfact|startfacingfloat|startexternalfigurecollection|startextendedcatcodetable|startexpandedcollect|startexpanded|startexceptions|startenvironment|startendofline|startendnote|startembeddedxtable|startelement|starteffect|startdocument|startdmath|startdisplaymath|startdelimitedtext|startdelimited|startcurrentlistentrywrapper|startcurrentcolor|startctxfunctiondefinition|startctxfunction|startcontextdefinitioncode|startcontextcode|startcomponent|startcomment|startcombination|startcolumnspan|startcolumnsetspan|startcolumnset|startcolumns|startcolorset|startcoloronly|startcolorintent|startcolor|startcollecting|startcollect|startchemicaltext|startchemical|startcheckedfences|startcharacteralign|startchapter|startcenteraligned|startcatcodetable|startcases|startbuffer|startbtxrenderingdefinitions|startbtxlabeltext|startboxedcolumns|startbordermatrix|startbodymatter|startblockquote|startbitmapimage|startbbordermatrix|startbar|startbackmatter|startbackground|startattachment|startaside|startarrangedpages|startappendices|startallmodes|startalignment|startalign|startXML|startTY|startTX|startTRs|startTR|startTN|startTH|startTEXpage|startTEX|startTDs|startTD|startTC|startTABLEnext|startTABLEhead|startTABLEfoot|startTABLEbody|startTABLE|startPARSEDXML|startMPrun|startMPpositionmethod|startMPpositiongraphic|startMPpage|startMPinitializations|startMPinclusions|startMPextensions|startMPenvironment|startMPdrawing|startMPdefinitions|startMPcode|startMPclip|startMP|startLUA|startJSpreamble|startJScode|stareq|star|stackrel|ssharp|squaredots|square|sqsupsetneq|sqsupseteq|sqsupset|sqsubsetneq|sqsubseteq|sqsubset|sqrt|sqcup|sqcap|spreadhbox|splitstring|splitofftype|splitofftokens|splitoffroot|splitoffpath|splitoffname|splitoffkind|splitofffull|splitoffbase|splitfrac|splitfloat|splitfilename|splitdfrac|splitatperiod|splitatcomma|splitatcolons|splitatcolon|splitatasterisk|sphericalangle|speech|spanishnumerals|spanishNumerals|spadesuit|spaceddigitssymbol|spaceddigitsseparator|spaceddigitsmethod|spaceddigits|space|somewhere|someplace|somenamedheadnumber|somelocalfloat|someline|somekindoftab|someheadnumber|solidus|softhyphen|snaptogrid|smile|smashedvbox|smashedhbox|smashboxed|smashbox|smash|smalltype|smallslantedbold|smallslanted|smallskip|smallnormal|smallitalicbold|smaller|smallcappedromannumerals|smallcappedcharacters|smallboldslanted|smallbolditalic|smallbold|smallbodyfont|small|sloveniannumerals|slovenianNumerals|slong|slicepages|slash|slantedface|slantedbold|slanted|sixthofsixarguments|sixperemspace|singleverticalbar|singlebond|singalcharacteralign|simplereversealignedboxplus|simplereversealignedbox|simplegroupedcommand|simplealignedspreadbox|simplealignedboxplus|simplealignedbox|simeq|sim|signalrightpage|sigma|showwarning|showvariable|showvalue|showtrackers|showtokens|showtimer|showsymbolset|showstruts|showsetupsdefinition|showsetups|showprint|showparentchain|showpalet|showotfcomposition|shownextbox|showminimalbaseline|showmessage|showmargins|showmakeup|showlogcategories|showligatures|showligature|showlayoutcomponents|showlayout|showkerning|showjustification|showinjector|showhyphens|showhyphenationtrace|showhelp|showgridsnapping|showgrid|showglyphs|showglyphdata|showframe|showfontstyle|showfontstrip|showfontparameters|showfontkerns|showfontitalics|showfontexpansion|showfontdata|showfont|showexperiments|showedebuginfo|showdirsinmargin|showdirectives|showcounter|showcolorstruts|showcolorset|showcolorgroup|showcolorcomponents|showcolorbar|showcolor|showcharratio|showchardata|showbtxtables|showbtxhashedauthors|showbtxfields|showbtxdatasetfields|showbtxdatasetcompleteness|showbtxdatasetauthors|showboxes|showbodyfontenvironment|showbodyfont|showattributes|showallmakeup|shiftup|shiftdown|shiftbox|sharp|shapedhbox|sfrac|seveneighths|setxvariables|setxvariable|setxvalue|setxmeasure|setwidthof|setvtopregister|setvisualizerfont|setvboxregister|setvariables|setvariable|setvalue|setuxvalue|setuvalue|setupxtable|setupxml|setupwithargumentswapped|setupwithargument|setupwhitespace|setupvspacing|setupviewerlayer|setupversion|setupuserpagenumber|setupuserdataalternative|setupuserdata|setupurl|setupunittext|setupunit|setuptyping|setuptype|setuptoptexts|setuptop|setuptooltip|setuptolerance|setupthinrules|setuptexttexts|setuptextrules|setuptextflow|setuptextbackground|setuptext|setuptaglabeltext|setuptagging|setuptabulation|setuptabulate|setuptables|setupsynonyms|setupsynctex|setupsymbolset|setupsuffixtext|setupsubpagenumber|setupsubformulas|setupsubformula|setupstyle|setupstruts|setupstretched|setupstartstop|setupspellchecking|setupspacing|setupsorting|setupsidebar|setupshift|setupselector|setupsectionblock|setupscripts|setupscript|setupscale|setups|setupruby|setuprotate|setuprenderingwindow|setupregisters|setupregister|setupreferencing|setupreferencestructureprefix|setupreferenceprefix|setupreferenceformat|setuprealpagenumber|setupquote|setupquotation|setupprograms|setupprofile|setupprocessor|setupprefixtext|setuppositioning|setuppositionbar|setupplacement|setupperiods|setupperiodkerning|setupparallel|setupparagraphs|setupparagraphnumbering|setupparagraphintro|setupparagraph|setuppapersize|setuppaper|setuppalet|setuppairedbox|setuppagetransitions|setuppagestate|setuppageshift|setuppagenumbering|setuppagenumber|setuppageinjectionalternative|setuppageinjection|setuppagecomment|setuppagecolumns|setuppagechecker|setupoutputroutine|setupoppositeplacing|setupoperatortext|setupoffsetbox|setupoffset|setupnotes|setupnote|setupnotations|setupnotation|setupnarrower|setupmodule|setupmixedcolumns|setupmathstyle|setupmathstackers|setupmathradical|setupmathornament|setupmathmatrix|setupmathlabeltext|setupmathframed|setupmathfractions|setupmathfraction|setupmathfence|setupmathematics|setupmathcases|setupmathalignment|setupmarking|setupmarginrules|setupmarginrule|setupmarginframed|setupmargindata|setupmarginblock|setupmakeup|setuplowmidhigh|setuplowhigh|setuplow|setuplocalinterlinespace|setuplocalfloats|setuplistextra|setuplistalternative|setuplist|setuplinewidth|setuplinetable|setuplines|setuplinenumbering|setuplinenote|setuplinefillers|setuplinefiller|setuplegend|setuplayouttext|setuplayout|setuplayeredtext|setuplayer|setuplanguage|setuplabeltext|setuplabel|setupitems|setupitemize|setupitemizations|setupitemgroup|setupitaliccorrection|setupinterlinespace|setupinteractionscreen|setupinteractionmenu|setupinteractionbar|setupinteraction|setupinsertion|setupinitial|setupindex|setupindenting|setupindentedtext|setuphyphenmark|setuphyphenation|setuphighlight|setuphigh|setuphelp|setupheadtext|setupheads|setupheadnumber|setupheadertexts|setupheader|setupheadalternative|setuphead|setupglobalreferenceprefix|setupframedtexts|setupframedtext|setupframedtablerow|setupframedtablecolumn|setupframedtable|setupframedcontent|setupframed|setupformulaframed|setupformulae|setupformula|setupforms|setupfootertexts|setupfooter|setupfontsolution|setupfonts|setupfontprotrusion|setupfontexpansion|setupfloatsplitting|setupfloats|setupfloatframed|setupfloat|setupfittingpage|setupfirstline|setupfillinrules|setupfillinlines|setupfiller|setupfieldtotalframed|setupfields|setupfieldlabelframed|setupfieldcontentframed|setupfieldcategory|setupfieldbody|setupfield|setupfacingfloat|setupexternalsoundtracks|setupexternalfigure|setupexport|setupenv|setupenumerations|setupenumeration|setupeffect|setupdocument|setupdirections|setupdescription|setupdelimitedtext|setupdataset|setupcounter|setupcontent|setupcomment|setupcombinedlist|setupcombination|setupcolumnspan|setupcolumnsetstart|setupcolumnsetspan|setupcolumnsetlines|setupcolumnsetareatext|setupcolumnsetarea|setupcolumnset|setupcolumns|setupcolors|setupcolor|setupcollector|setupclipping|setupchemicalframed|setupchemical|setupcharacterspacing|setupcharacterkerning|setupcharacteralign|setupcaptions|setupcaption|setupcapitals|setupbutton|setupbuffer|setupbtxrendering|setupbtxregister|setupbtxlist|setupbtxlabeltext|setupbtxdataset|setupbtx|setupbottomtexts|setupbottom|setupbookmark|setupbodyfont|setupblock|setupbleeding|setupblank|setupblackrules|setupbars|setupbar|setupbackgrounds|setupbackground|setupbackend|setupattachments|setupattachment|setuparranging|setupalternativestyles|setupalign|setupTEXpage|setupTABLE|setupMPvariables|setupMPpage|setupMPinstance|setupMPgraphics|setup|setunreferencedobject|setugvalue|setuevalue|settrialtypesetting|settokenlist|settightunreferencedobject|settightstrut|settightreferencedobject|settightobject|settextcontent|settaggedmetadata|settabular|setsystemmode|setsuperiors|setstrut|setstructurepageregister|setstackbox|setsmallcaps|setsmallbodyfont|setsimplecolumnhsize|setsectionblock|setsecondpasscharacteralign|setscript|setrigidcolumnhsize|setrigidcolumnbalance|setreplacement|setregisterentry|setreferencedobject|setreference|setrandomseed|setprofile|setpositionstrut|setpositionplus|setpositiononly|setpositiondataplus|setpositiondata|setpositionbox|setposition|setperiodkerning|setpercentdimen|setpenalties|setpagestaterealpageno|setpagestate|setpagereference|setoldstyle|setobject|setnotetext|setnote|setnostrut|setmode|setminus|setmessagetext|setmeasure|setmathstyle|setmarking|setmarker|setmainparbuilder|setmainbodyfont|setlocalscript|setlocalhsize|setlinefiller|setlayertext|setlayerframed|setlayer|setitaliccorrection|setinternalrendering|setinterfacevariable|setinterfacemessage|setinterfaceelement|setinterfaceconstant|setinterfacecommand|setinteraction|setinjector|setinitial|sethyphenationfeatures|sethyphenatedurlnormal|sethyphenatedurlbefore|sethyphenatedurlafter|sethboxregister|setgvariables|setgvariable|setgvalue|setgmeasure|setglobalscript|setfontstrut|setfontsolution|setfontfeature|setfontcolorsheme|setfont|setflag|setfirstpasscharacteralign|setfirstline|setevariables|setevariable|setevalue|setemeasure|setelementexporttag|setdummyparameter|setdocumentfilename|setdocumentargumentdefault|setdocumentargument|setdirection|setdigitsmanipulation|setdefaultpenalties|setdataset|setcurrentfontclass|setcounterown|setcounter|setcolormodell|setcollector|setcharstrut|setcharacterstripping|setcharacterspacing|setcharacterkerning|setcharactercleaning|setcharactercasing|setcharacteraligndetail|setcharacteralign|setcatcodetable|setcapstrut|setbreakpoints|setboxlly|setboxllx|setbigbodyfont|setbar|setautopagestaterealpageno|setMPvariables|setMPvariable|setMPtext|setMPpositiongraphicrange|setMPpositiongraphic|setMPlayer|setJSpreamble|serifnormal|serifbold|serif|serializedcommalist|serializecommalist|selectblocks|select|seeindex|sectionmark|section|secondoftwounexpanded|secondoftwoarguments|secondofthreeunexpanded|secondofthreearguments|secondofsixarguments|secondoffourarguments|secondoffivearguments|searrow|screen|scommaaccent|scircumflex|schwahook|schwa|scedilla|scaron|scale|sbox|savetwopassdata|savetaggedtwopassdata|savenormalmeaning|savecurrentattributes|savecounter|savebuffer|savebtxdataset|savebox|sansserif|sansnormal|sansbold|sans|samplefile|safechar|sacute|rvert|runninghbox|runMPbuffer|ruledvtop|ruledvpack|ruledvbox|ruledtpack|ruledtopv|ruledmbox|ruledhpack|ruledhbox|ruby|rtop|rtimes|rrointerval|rrbracket|rrangle|rparent|rotate|rootradical|romanxii|romanxi|romanx|romanviii|romanvii|romanvi|romanv|romannumerals|romanm|romanl|romanix|romaniv|romaniii|romanii|romani|romand|romanc|romanXII|romanXI|romanX|romanVIII|romanVII|romanVI|romanV|romanM|romanL|romanIX|romanIV|romanIII|romanII|romanI|romanD|romanC|roman|rollbutton|rointerval|robustpretocommalist|robustdoifinsetelse|robustdoifelseinset|robustaddtocommalist|rneq|rmoustache|rlointerval|rlap|risingdotseq|rinvertedbreve|rinterval|ring|rightwhitearrow|rightwavearrow|righttopbox|righttoleftvtop|righttoleftvbox|righttolefthbox|righttoleft|rightthreetimes|rightthreearrows|rightsubguillemot|rightsquigarrow|rightskipadaption|rightrightarrows|rightpageorder|rightorleftpageaction|rightmathlabeltext|rightline|rightleftharpoons|rightleftarrows|rightlabeltext|rightheadtext|righthbox|rightharpoonup|rightharpoondown|rightguillemot|rightdasharrow|rightbox|rightbottombox|rightarrowtriangle|rightarrowtail|rightarrowbar|rightarrow|rightangle|rightaligned|right|rhookswarrow|rhooknearrow|rho|rhbox|rgroup|rfloor|rfence|revivefeature|reversedtripleprime|reversedprime|reverseddoubleprime|reuserandomseed|reuseMPgraphic|reusableMPgraphic|restriction|restoreglobalbodyfont|restoreendofline|restorecurrentattributes|restorecounter|restorecatcodes|restorebox|restartcounter|resolvedglyphstyled|resolvedglyphdirect|reshapebox|resetvisualizers|resetvalue|resetuserpagenumber|resetusedsynonyms|resetusedsortings|resettrialtypesetting|resettrackers|resettokenlist|resettimer|resetsystemmode|resetsymbolset|resetsubpagenumber|resetshownsynonyms|resetsetups|resetscript|resetreplacement|resetreference|resetrecurselevel|resetprofile|resetperiodkerning|resetpenalties|resetpath|resetparallel|resetpagenumber|resetmode|resetmarking|resetmarker|resetlocalfloats|resetlayer|resetitaliccorrection|resetinteractionmenu|resetinjector|resethyphenationfeatures|resetfontsolution|resetfontfallback|resetfontcolorsheme|resetflag|resetfeature|resetdirection|resetdigitsmanipulation|resetcounter|resetcollector|resetcharacterstripping|resetcharacterspacing|resetcharacterkerning|resetcharacteralign|resetbuffer|resetbreakpoints|resetboxesincache|resetbar|resetandaddfeature|resetallattributes|resetMPinstance|resetMPenvironment|resetMPdrawing|rescanwithsetup|rescan|replaceword|replaceincommalist|replacefeature|removeunwantedspaces|removetoks|removesubstring|removepunctuation|removemarkedcontent|removelastspace|removelastskip|removefromcommalist|removedepth|removebottomthings|remark|remainingcharacters|relbar|relaxvalueifundefined|relateparameterhandlers|relatemarking|regular|registerunit|registersynonym|registersort|registermenubuttons|registerhyphenationpattern|registerhyphenationexception|registerfontclass|registerexternalfigure|registered|registerctxluafile|registerattachment|referring|referenceprefix|reference|ref|redoconvertfont|recursestring|recurselevel|recursedepth|realsmallcapped|reals|realpagenumber|realSmallcapped|realSmallCapped|readxmlfile|readtexfile|readsysfile|readsetfile|readlocfile|readjobfile|readfixfile|readfile|rdoublegrave|rcommaaccent|rceil|rcaron|rbracket|rbrace|rbox|rawsubcountervalue|rawstructurelistuservariable|rawprocesscommalist|rawprocesscommacommand|rawprocessaction|rawgetparameters|rawdoifinsetelse|rawdoifinset|rawdoifelseinset|rawdate|rawcountervalue|rawcounter|rationals|rangle|randomnumber|randomizetext|raisebox|raggedwidecenter|raggedright|raggedleft|raggedcenter|raggedbottom|racute|rVert|quotesinglebase|quotesingle|quoteright|quoteleft|quotedblright|quotedblleft|quotedblbase|quotedbl|quote|quotation|quittypescriptscanning|quitprevcommalist|quitcommalist|questionedeq|questiondown|quarterstrut|quads|quadrupleprime|quad|qquad|putnextboxincache|putboxincache|pushsystemmode|pushoutputstream|pushmode|pushmacro|pushbutton|pushattribute|purenumber|punctuationspace|psi|pseudosmallcapped|pseudoSmallcapped|pseudoSmallCapped|pseudoMixedCapped|propto|project|program|profilegivenbox|profiledbox|product|prod|processyear|processxtablebuffer|processuntil|processtokens|processtexbuffer|processseparatedlist|processranges|processmonth|processlist|processlinetablefile|processlinetablebuffer|processisolatedwords|processisolatedchars|processfirstactioninset|processfileonce|processfilenone|processfilemany|processfile|processcontent|processcommalistwithparameters|processcommalist|processcommacommand|processcolorcomponents|processbodyfontenvironmentlist|processblocks|processbetween|processassignmentlist|processassignmentcommand|processassignlist|processallactionsinset|processaction|processMPfigurefile|processMPbuffer|procent|primes|prime|prevuserpagenumber|prevuserpage|prevsubpagenumber|prevsubpage|prevsubcountervalue|prevrealpagenumber|prevrealpage|preventmode|prevcountervalue|prevcounter|prettyprintbuffer|pretocommalist|presetunittext|presettaglabeltext|presetsuffixtext|presetprefixtext|presetoperatortext|presetmathlabeltext|presetlabeltext|presetheadtext|presetfieldsymbols|presetdocument|presetbtxlabeltext|prerollblank|prependvalue|prependtoksonce|prependtoks|prependtocommalist|prependgvalue|prependetoks|prefixtext|prefixlanguage|prefixedpagenumber|predefinesymbol|predefinefont|predefinedfont|precsim|precnsim|precneqq|precneq|precnapprox|preceqq|preceq|preccurlyeq|precapprox|prec|postponenotes|positivesign|positionregionoverlay|positionoverlay|position|popsystemmode|popmode|popmacro|popattribute|pm|placetable|placesubformula|placesidebyside|placerenderingwindow|placeregister|placerawlist|placeparallel|placepairedbox|placepagenumber|placeontopofeachother|placeongrid|placenotes|placenamedformula|placenamedfloat|placement|placelocalnotes|placelocalfootnotes|placelistoftables|placelistofsynonyms|placelistofsorts|placelistofpublications|placelistoflogos|placelistofintermezzi|placelistofgraphics|placelistoffigures|placelistofchemicals|placelistofabbreviations|placelist|placelegend|placelayeredtext|placelayer|placeintermezzo|placeinitial|placeindex|placehelp|placeheadtext|placeheadnumber|placegraphic|placeframed|placeformula|placefootnotes|placefloatwithsetups|placefloat|placefigure|placedbox|placecurrentformulanumber|placecontent|placecomments|placecombinedlist|placecitation|placechemical|placebtxrendering|placebookmarks|placeattachments|pitchfork|pickupgroupedcommand|pi|phook|phi|phantombox|phantom|perthousand|persianthousandsseparator|persiannumerals|persiandecimalseparator|persiandecimals|perp|permitspacesbetweengroups|permitcircumflexescape|permitcaretescape|periods|periodcentered|percentdimen|percent|pdfeTeX|pdfcolor|pdfbackendsetshade|pdfbackendsetpattern|pdfbackendsetpagesattribute|pdfbackendsetpageresource|pdfbackendsetpageattribute|pdfbackendsetname|pdfbackendsetinfo|pdfbackendsetextgstate|pdfbackendsetcolorspace|pdfbackendsetcatalog|pdfbackendcurrentresources|pdfbackendactualtext|pdfactualtext|pdfTeX|partial|part|parallel|paragraphmark|paletsize|pagestaterealpageorder|pagestaterealpage|pagereference|pagenumber|pageinjection|pagefigure|pagebreak|pagearea|page|owns|overstrikes|overstrike|overset|overrightarrow|overparentunderparent|overparent|overloaderror|overleftarrow|overlaywidth|overlayrollbutton|overlayoffset|overlaylinewidth|overlaylinecolor|overlayimage|overlayheight|overlayfigure|overlaydepth|overlaycolor|overlaybutton|overbracketunderbracket|overbracket|overbraceunderbrace|overbrace|overbarunderbar|overbars|overbar|over|outputstreamunvcopy|outputstreamunvbox|outputstreamcopy|outputstreambox|outputfilename|otimes|otildemacron|otilde|ostrokeacute|ostroke|oslash|ornamenttext|ordmasculine|ordinalstr|ordinaldaynumber|ordfeminine|oplus|operatortext|operatorlanguage|oogonekmacron|oogonek|onethird|onesuperior|onesixth|onequarter|onehalf|onefifth|oneeighth|onedigitrounding|ominus|omicron|omega|omacron|oinvertedbreve|ointctrclockwise|ointclockwise|oint|oiint|oiiint|ohungarumlaut|ohorntilde|ohornhook|ohorngrave|ohorndotbelow|ohornacute|ohorn|ohook|ohm|ograve|offsetbox|offset|oeligature|odoublegrave|odotbelow|odotaccentmacron|odotaccent|odot|odiaeresismacron|odiaeresis|ocircumflextilde|ocircumflexhook|ocircumflexgrave|ocircumflexdotbelow|ocircumflexacute|ocircumflex|ocaron|obreve|obox|objectwidth|objectmargin|objectheight|objectdepth|obeydepth|oacute|nwsearrow|nwarrow|nvrightarrow|nvleftrightarrow|nvleftarrow|nvdash|nvDash|numbers|numberofpoints|nu|ntrianglerighteq|ntriangleright|ntrianglelefteq|ntriangleleft|ntimes|ntilde|nsupseteq|nsupset|nsucccurlyeq|nsucc|nsubseteq|nsubset|nsqsupseteq|nsqsubseteq|nsimeq|nsim|nrightarrow|npreccurlyeq|nprec|nparallel|nowns|notragged|notopandbottomlines|notin|notesymbol|note|not|nospace|normaltypeface|normalslantedface|normalizetextwidth|normalizetextline|normalizetextheight|normalizetextdepth|normalizefontwidth|normalizefontline|normalizefontheight|normalizefontdepth|normalizedfontsize|normalizebodyfontsize|normalitalicface|normalframedwithsettings|normalboldface|normal|nonmathematics|nonfrenchspacing|noitem|noindentation|noheightstrut|noheaderandfooterlines|noflocalfloats|noflines|noffigurepages|nodetostring|nocite|nocitation|nocharacteralign|nocap|nobreakspace|nobar|nni|nmid|nlesssim|nlessgtr|nless|nleq|nleftrightarrow|nleftarrow|njligature|nin|nihongo|ni|ngtrsim|ngtrless|ngtr|ngrave|ngeq|nextuserpagenumber|nextuserpage|nextsubpagenumber|nextsubpage|nextsubcountervalue|nextrealpagenumber|nextrealpage|nextparagraphs|nextdepth|nextcountervalue|nextcounter|nextboxwd|nextboxhtdp|nextboxht|nextboxdp|nextbox|nexists|newsystemmode|newsignal|newmode|newfrenchspacing|newevery|newcounter|newcatcodetable|newattribute|neswarrow|nequiv|neq|neng|negthinspace|negenspace|negemspace|negativesign|negated|negatecolorbox|neg|nearrow|ne|ndivides|ncurl|ncong|ncommaaccent|ncaron|naturalwd|naturalvtop|naturalvpack|naturalvcenter|naturalvbox|naturalnumbers|naturalhpack|naturalhbox|natural|nasymp|narrownobreakspace|napproxEq|napprox|napostrophe|namedtaggedlabeltexts|namedstructurevariable|namedstructureuservariable|namedstructureheadlocation|namedheadnumber|nacute|nabla|nVrightarrow|nVleftrightarrow|nVleftarrow|nVdash|nVDash|nRightarrow|nLeftrightarrow|nLeftarrow|nHuparrow|nHdownarrow|multimap|mu|mtwoheadrightarrow|mtwoheadleftarrow|mtriplerel|mtext|mrightoverleftarrow|mrightleftharpoons|mrightharpoonup|mrightharpoondown|mrightarrow|mrel|mprandomnumber|mp|monthshort|monthlong|month|mononormal|monobold|mono|molecule|moduleparameter|models|mmapsto|mleftrightharpoons|mleftrightarrow|mleftharpoonup|mleftharpoondown|mleftarrow|mkvibuffer|mixedcaps|mirror|minuscolon|minus|minimalhbox|midsubsentence|midhbox|middlebox|middlealigned|middle|midaligned|mid|mhookrightarrow|mhookleftarrow|mho|mhbox|mfunctionlabeltext|mfunction|mframed|mfence|message|mequal|menubutton|medspace|medskip|measuredeq|measuredangle|measured|measure|mcframed|mbox|maxaligned|mathwordtf|mathwordsl|mathwordit|mathwordbs|mathwordbi|mathwordbf|mathword|mathupright|mathunder|mathtt|mathtriplet|mathtf|mathtexttf|mathtextsl|mathtextit|mathtextbs|mathtextbi|mathtextbf|mathtext|mathss|mathsl|mathscript|mathrm|mathpercent|mathover|mathop|mathlabeltexts|mathlabeltext|mathlabellanguage|mathitalic|mathit|mathhyphen|mathhash|mathfunction|mathfraktur|mathematics|mathdouble|mathdollar|mathdefault|mathbs|mathblackboard|mathbi|mathbf|mathampersand|math|mat|markpage|markinjector|marking|markedpages|markcontent|margintext|margindata|mapsup|mapsto|mapsfrom|mapsdown|mapfontsize|maltese|makestrutofbox|makerawcommalist|makecharacteractive|mainlanguage|mRightarrow|mLeftrightarrow|mLeftarrow|m|lvert|luaversion|luasetup|luaparameterset|luaminorversion|luametaTeX|luamajorversion|luajitTeX|luafunction|luaexpr|luaexpanded|luaenvironment|luaconditional|luacode|luaTeX|ltop|ltimes|lt|lstroke|lrtbbox|lrointerval|lrcorner|lparent|lozenge|lowerrightsingleninequote|lowerrightdoubleninequote|lowerleftsingleninequote|lowerleftdoubleninequote|lowercasestring|lowercased|lowerbox|low|lor|looparrowright|looparrowleft|longrightsquigarrow|longrightarrow|longmapsto|longmapsfrom|longleftrightarrow|longleftarrow|lomihi|lointerval|lohi|logo|locfilename|locatefilepath|locatedfilepath|localundefine|localpushmacro|localpushbox|localpopmacro|localpopbox|localhsize|localframedwithsettings|localframed|loadtypescriptfile|loadtexfileonce|loadtexfile|loadspellchecklist|loadluafileonce|loadluafile|loadfontgoodies|loadcldfileonce|loadcldfile|loadbtxreplacementfile|loadbtxdefinitionfile|loadanyfileonce|loadanyfile|lnsim|lnot|lneqq|lneq|lnapprox|lmoustache|llless|lll|llcorner|llbracket|llap|llangle|ll|ljligature|listnamespaces|listlength|listcite|listcitation|linterval|linethickness|linespanningtext|linenote|linefeed|linebox|line|limitatetext|limitatelines|limitatefirstline|lhooksearrow|lhooknwarrow|lhbox|lgroup|lfloor|lfence|letvaluerelax|letvalueempty|letvalue|letterunderscore|lettertilde|letterspacing|letterslash|lettersinglequote|letterrightparenthesis|letterrightbracket|letterrightbrace|letterquestionmark|letterpercent|letteropenbrace|lettermore|letterless|letterleftparenthesis|letterleftbracket|letterleftbrace|letterhat|letterhash|letterexclamationmark|letterescape|letteregroup|letterdoublequote|letterdollar|lettercolon|letterclosebrace|letterbgroup|letterbar|letterbackslash|letterat|letterampersand|letgvalurelax|letgvalueempty|letgvalue|letempty|letdummyparameter|letcsnamecsname|letcsnamecs|letcscsname|letcatcodecommand|letbeundefined|lesssim|lessgtr|lesseqqgtr|lesseqgtr|lessdot|lessapprox|leqslant|leqq|leq|leftwhitearrow|leftwavearrow|lefttorightvtop|lefttorightvbox|lefttorighthbox|lefttoright|lefttopbox|leftthreetimes|leftsubguillemot|leftsquigarrow|leftskipadaption|leftrightsquigarrow|leftrightharpoons|leftrightarrowtriangle|leftrightarrows|leftrightarrow|leftorrightvtop|leftorrightvbox|leftorrighthbox|leftmathlabeltext|leftline|leftleftarrows|leftlabeltext|leftheadtext|lefthbox|leftharpoonup|leftharpoondown|leftguillemot|leftdasharrow|leftbox|leftbottombox|leftarrowtriangle|leftarrowtail|leftarrow|leftaligned|left|leadsto|le|ldots|ldotp|ldotmiddle|lcurl|lcommaaccent|lceil|lcaron|lbracket|lbrace|lbox|lbar|lazysavetwopassdata|lazysavetaggedtwopassdata|layerwidth|layerheight|layeredtext|latin|lateluacode|lastuserpagenumber|lastuserpage|lasttwodigits|lastsubpagenumber|lastsubpage|lastsubcountervalue|lastrealpagenumber|lastrealpage|lastpredefinedsymbol|lastnaturalboxwd|lastnaturalboxht|lastnaturalboxdp|lastlinewidth|lastdigit|lastcountervalue|lastcounter|languagecharwidth|languagecharacters|languageCharacters|language|langle|land|lambdabar|lambda|lacute|labeltexts|labeltext|labellanguage|lVert|koreanparentnumerals|koreannumeralsp|koreannumeralsc|koreannumerals|koreancirclenumerals|kkra|khook|kerncharacters|keepunwantedspaces|keeplinestogether|keepblocks|kcommaaccent|kcaron|kappa|kap|jobfilesuffix|jobfilename|jmath|jcircumflex|jcaron|itilde|itemtag|items|item|italicface|italiccorrection|italicbold|italic|istrtdir|istltdir|iota|iogonek|invokepageheandler|invisibletimes|intop|intertext|intercal|interactionmenu|interactionbuttons|interactionbar|integers|integerrounding|intclockwise|int|installversioninfo|installunitsspace|installunitsseparator|installtopframerenderer|installtextracker|installtexdirective|installswitchsetuphandler|installswitchcommandhandler|installstyleandcolorhandler|installsimpleframedcommandhandler|installsimplecommandhandler|installshipoutmethod|installsetuponlycommandhandler|installsetuphandler|installrootparameterhandler|installrightframerenderer|installparentinjector|installparametersethandler|installparameterhashhandler|installparameterhandler|installpagearrangement|installoutputroutine|installnamespace|installmacrostack|installleftframerenderer|installlanguage|installglobalmacrostack|installframedcommandhandler|installframedautocommandhandler|installdirectstyleandcolorhandler|installdirectsetuphandler|installdirectparametersethandler|installdirectparameterhandler|installdirectcommandhandler|installdefinitionsetmember|installdefinitionset|installdefinehandler|installcorenamespace|installcommandhandler|installbottomframerenderer|installbasicparameterhandler|installbasicautosetuphandler|installautosetuphandler|installautocommandhandler|installattributestack|installanddefineactivecharacter|installactivecharacter|installactionhandler|insertpages|inrightmargin|inrightedge|inright|inputgivenfile|inputfilesuffix|inputfilerealsuffix|inputfilename|inputfilebarename|input|inoutermargin|inouteredge|inouter|inother|innerflushshapebox|inmframed|inmargin|inlinerange|inlineprettyprintbuffer|inlineordisplaymath|inlinemessage|inlinemathematics|inlinemath|inlinedbox|inlinebuffer|inline|inleftmargin|inleftedge|inleft|initializeboxstack|ininnermargin|ininneredge|ininner|inhibitblank|inheritparameter|infull|infty|inframed|infofontbold|infofont|index|indentation|incrementvalue|incrementsubpagenumber|incrementpagenumber|incrementedcounter|incrementcounter|increment|includeversioninfo|includemenu|in|imply|implies|impliedby|immediatesavetwopassdata|imath|imaginaryj|imaginaryi|imacron|ijligature|iinvertedbreve|iintop|iint|iiintop|iiint|iiiintop|iiiint|ihook|igrave|ignorevalue|ignoretagsinexport|ignoreimplicitspaces|iftrialtypesetting|ifparameters|ifinoutputstream|ifinobject|iff|ifassignment|idoublegrave|idotbelow|idotaccent|idiaeresis|ideographicspace|ideographichalffillspace|icircumflex|icaron|ibreve|ibox|iacute|hyphenatedword|hyphenatedurl|hyphenatedpar|hyphenatedhbox|hyphenatedfilename|hyphenatedfile|hyphenatedcoloredword|hyphen|htofstring|htdpofstring|hstroke|hspace|hsmashed|hsmashbox|hsmash|hslash|hsizefraction|hpos|hphantom|horizontalpositionbar|horizontalgrowingbar|hookrightarrow|hookleftarrow|hl|himilo|hilo|highordinalstr|highlight|high|hideblocks|hiddencite|hiddencitation|hiddenbar|hglue|helptext|heightspanningtext|heightofstring|heightanddepthofstring|hebrewZayin|hebrewYod|hebrewVav|hebrewTsadifinal|hebrewTsadi|hebrewTet|hebrewTav|hebrewShin|hebrewSamekh|hebrewResh|hebrewQof|hebrewPefinal|hebrewPe|hebrewNunfinal|hebrewNun|hebrewMemfinal|hebrewMem|hebrewLamed|hebrewKaffinal|hebrewKaf|hebrewHet|hebrewHe|hebrewGimel|hebrewDalet|hebrewBet|hebrewAyin|hebrewAlef|heartsuit|headwidth|headvbox|headtextwidth|headtexts|headtextdistance|headtextcontent|headtext|headsetupspacing|headreferenceattributes|headnumberwidth|headnumberdistance|headnumbercontent|headnumber|headlanguage|headhbox|hdofstring|hcircumflex|hcaron|hboxreference|hboxofvbox|hbar|hat|hash|hanzi|hangul|handwritten|handletokens|halfwaybox|halfstrut|halflinestrut|hairspace|hairline|gurmurkhinumerals|gujaratinumerals|guilsingleright|guilsingleleft|gtrsim|gtrless|gtreqqless|gtreqless|gtrdot|gtrapprox|gt|gstroke|gsetboxlly|gsetboxllx|groupedcommand|grid|greekzeta|greekxi|greekvaria|greekupsilonvrachy|greekupsilonvaria|greekupsilontonos|greekupsilonpsilivaria|greekupsilonpsilitonos|greekupsilonpsiliperispomeni|greekupsilonpsili|greekupsilonperispomeni|greekupsilonoxia|greekupsilonmacron|greekupsilondialytikavaria|greekupsilondialytikatonos|greekupsilondialytikaperispomeni|greekupsilondiaeresis|greekupsilondasiavaria|greekupsilondasiatonos|greekupsilondasiaperispomeni|greekupsilondasia|greekupsilon|greektonos|greekthetaalt|greektheta|greektau|greekstigma|greeksigmalunate|greeksigma|greeksampi|greekrhopsili|greekrhodasia|greekrhoalt|greekrho|greekpsilivaria|greekpsilitonos|greekpsiliperispomeni|greekpsili|greekpsi|greekprosgegrammeni|greekpialt|greekpi|greekphialt|greekphi|greekperispomeni|greekoxia|greekomicronvaria|greekomicrontonos|greekomicronpsilivaria|greekomicronpsilitonos|greekomicronpsili|greekomicronoxia|greekomicrondasiavaria|greekomicrondasiatonos|greekomicrondasia|greekomicron|greekomegavaria|greekomegatonos|greekomegapsilivaria|greekomegapsilitonos|greekomegapsiliperispomeni|greekomegapsili|greekomegaperispomeni|greekomegaoxia|greekomegaiotasubvaria|greekomegaiotasubtonos|greekomegaiotasubpsilivaria|greekomegaiotasubpsilitonos|greekomegaiotasubpsiliperispomeni|greekomegaiotasubpsili|greekomegaiotasubperispomeni|greekomegaiotasubdasiavaria|greekomegaiotasubdasiatonos|greekomegaiotasubdasiaperispomeni|greekomegaiotasubdasia|greekomegaiotasub|greekomegadasiavaria|greekomegadasiatonos|greekomegadasiaperispomeni|greekomegadasia|greekomega|greeknumkoppa|greeknumerals|greeknu|greekmu|greeklambda|greekkoppa|greekkappa|greekiotavrachy|greekiotavaria|greekiotatonos|greekiotapsilivaria|greekiotapsilitonos|greekiotapsiliperispomeni|greekiotapsili|greekiotaperispomeni|greekiotaoxia|greekiotamacron|greekiotadialytikavaria|greekiotadialytikatonos|greekiotadialytikaperispomeni|greekiotadialytika|greekiotadasiavaria|greekiotadasiatonos|greekiotadasiaperispomeni|greekiotadasia|greekiota|greekgamma|greekfinalsigma|greeketavaria|greeketatonos|greeketapsilivaria|greeketapsilitonos|greeketapsiliperispomeni|greeketapsili|greeketaperispomeni|greeketaoxia|greeketaiotasubvaria|greeketaiotasubtonos|greeketaiotasubpsilivaria|greeketaiotasubpsilitonos|greeketaiotasubpsiliperispomeni|greeketaiotasubpsili|greeketaiotasubperispomeni|greeketaiotasubdasiavaria|greeketaiotasubdasiatonos|greeketaiotasubdasiaperispomeni|greeketaiotasubdasia|greeketaiotasub|greeketadasiavaria|greeketadasiatonos|greeketadasiaperispomeni|greeketadasia|greeketa|greekepsilonvaria|greekepsilontonos|greekepsilonpsilivaria|greekepsilonpsilitonos|greekepsilonpsili|greekepsilonoxia|greekepsilondasiavaria|greekepsilondasiatonos|greekepsilondasia|greekepsilonalt|greekepsilon|greekdigamma|greekdialytikavaria|greekdialytikatonos|greekdialytikaperispomeni|greekdelta|greekdasiavaria|greekdasiatonos|greekdasiaperispomeni|greekdasia|greekchi|greekbetaalt|greekbeta|greekalphavrachy|greekalphavaria|greekalphatonos|greekalphapsilivaria|greekalphapsilitonos|greekalphapsiliperispomeni|greekalphapsili|greekalphaperispomeni|greekalphaoxia|greekalphamacron|greekalphaiotasubvaria|greekalphaiotasubtonos|greekalphaiotasubpsilivaria|greekalphaiotasubpsilitonos|greekalphaiotasubpsiliperispomeni|greekalphaiotasubpsili|greekalphaiotasubperispomeni|greekalphaiotasubdasiavaria|greekalphaiotasubdasiatonos|greekalphaiotasubdasiaperispomeni|greekalphaiotasubdasia|greekalphaiotasub|greekalphadasiavaria|greekalphadasiatonos|greekalphadasiaperispomeni|greekalphadasia|greekalpha|greekZeta|greekXi|greekUpsilonvrachy|greekUpsilonvaria|greekUpsilontonos|greekUpsilonmacron|greekUpsilondialytika|greekUpsilondasiavaria|greekUpsilondasiatonos|greekUpsilondasiaperispomeni|greekUpsilondasia|greekUpsilon|greekTheta|greekTau|greekSigmalunate|greekSigma|greekRhodasia|greekRho|greekPsi|greekPi|greekPhi|greekOmicronvaria|greekOmicrontonos|greekOmicronpsilivaria|greekOmicronpsilitonos|greekOmicronpsili|greekOmicrondasiavaria|greekOmicrondasiatonos|greekOmicrondasia|greekOmicron|greekOmegavaria|greekOmegatonos|greekOmegapsilivaria|greekOmegapsilitonos|greekOmegapsiliperispomeni|greekOmegapsili|greekOmegaiotasubpsilivaria|greekOmegaiotasubpsilitonos|greekOmegaiotasubpsiliperispomeni|greekOmegaiotasubpsili|greekOmegaiotasubdasiavaria|greekOmegaiotasubdasiatonos|greekOmegaiotasubdasiaperispomeni|greekOmegaiotasubdasia|greekOmegaiotasub|greekOmegadasiavaria|greekOmegadasiatonos|greekOmegadasiaperispomeni|greekOmegadasia|greekOmega|greekNu|greekMu|greekLambda|greekKappa|greekIotavrachy|greekIotavaria|greekIotatonos|greekIotapsilivaria|greekIotapsilitonos|greekIotapsiliperispomeni|greekIotapsili|greekIotamacron|greekIotadialytika|greekIotadasiavaria|greekIotadasiatonos|greekIotadasiaperispomeni|greekIotadasia|greekIota|greekGamma|greekEtavaria|greekEtatonos|greekEtapsilivaria|greekEtapsilitonos|greekEtapsiliperispomeni|greekEtapsili|greekEtaiotasubpsilivaria|greekEtaiotasubpsilitonos|greekEtaiotasubpsiliperispomeni|greekEtaiotasubpsili|greekEtaiotasubdasiavaria|greekEtaiotasubdasiatonos|greekEtaiotasubdasiaperispomeni|greekEtaiotasubdasia|greekEtaiotasub|greekEtadasiavaria|greekEtadasiatonos|greekEtadasiaperispomeni|greekEtadasia|greekEta|greekEpsilonvaria|greekEpsilontonos|greekEpsilonpsilivaria|greekEpsilonpsilitonos|greekEpsilonpsili|greekEpsilondasiavaria|greekEpsilondasiatonos|greekEpsilondasia|greekEpsilon|greekDelta|greekCoronis|greekChi|greekBeta|greekAlphavrachy|greekAlphavaria|greekAlphatonos|greekAlphapsilivaria|greekAlphapsilitonos|greekAlphapsiliperispomeni|greekAlphapsili|greekAlphamacron|greekAlphaiotasubpsilivaria|greekAlphaiotasubpsilitonos|greekAlphaiotasubpsiliperispomeni|greekAlphaiotasubpsili|greekAlphaiotasubdasiavaria|greekAlphaiotasubdasiatonos|greekAlphaiotasubdasiaperispomeni|greekAlphaiotasubdasia|greekAlphaiotasub|greekAlphadasiavaria|greekAlphadasiatonos|greekAlphadasiaperispomeni|greekAlphadasia|greekAlpha|greedysplitstring|grayvalue|graycolor|grave|grabuntil|grabbufferdatadirect|grabbufferdata|gotopage|gotobox|goto|godown|gobbleuntilrelax|gobbleuntil|gobbletwooptionals|gobbletwoarguments|gobblethreeoptionals|gobblethreearguments|gobbletenarguments|gobblespacetokens|gobblesixarguments|gobblesingleempty|gobblesevenarguments|gobbleoneoptional|gobbleoneargument|gobbleninearguments|gobblefouroptionals|gobblefourarguments|gobblefiveoptionals|gobblefivearguments|gobbleeightarguments|gobbledoubleempty|gnsim|gneqq|gnapprox|glyphfontfile|globalundefine|globalswapmacros|globalswapdimens|globalswapcounts|globalpushmacro|globalpushbox|globalprocesscommalist|globalpreventmode|globalpopmacro|globalpopbox|globalletempty|globalenablemode|globaldisablemode|gimel|gggtr|ggg|gg|getxparameters|getvariabledefault|getvariable|getvalue|getuvalue|getuserdata|gettwopassdatalist|gettwopassdata|gettokenlist|getsubstring|gets|getroundednoflines|getreferenceentry|getreference|getrawxparameters|getrawparameters|getrawnoflines|getrawgparameters|getraweparameters|getrandomseed|getrandomnumber|getrandomfloat|getrandomdimen|getrandomcount|getprivateslot|getprivatechar|getparameters|getpaletsize|getobjectdimensions|getobject|getnoflines|getnaturaldimensions|getnamedtwopassdatalist|getnamedglyphstyled|getnamedglyphdirect|getmessage|getmarking|getlocalfloats|getlocalfloat|getlasttwopassdata|getinlineuserdata|getgparameters|getglyphstyled|getglyphdirect|getfromtwopassdata|getfromcommalist|getfromcommacommand|getfirsttwopassdata|getfirstcharacter|getfiguredimensions|getexpandedparameters|geteparameters|getemptyparameters|getdummyparameters|getdocumentfilename|getdocumentargumentdefault|getdocumentargument|getdefinedbuffer|getdayspermonth|getdayoftheweek|getcommalistsize|getcommacommandsize|getbufferdata|getbuffer|getboxlly|getboxllx|getboxfromcache|getMPlayer|getMPdrawing|geqslant|geqq|geq|ge|gdotaccent|gdefconvertedcommand|gdefconvertedargument|gcommaaccent|gcircumflex|gcaron|gbreve|gamma|gacute|frule|frozenhbox|frown|fromlinenote|from|frenchspacing|freezemeasure|freezedimenmacro|framedtext|framedparameter|frameddimension|framed|frac|fourthofsixarguments|fourthoffourarguments|fourthoffivearguments|fourperemspace|fourfifths|foundbox|formulanumber|formula|forgetragged|forgetparskip|forgetparameters|forgeteverypar|forcelocalfloats|forcecharacterstripping|forall|footnotetext|footnote|fontstyle|fontsize|fontfeaturelist|fontface|fontclassname|fontclass|fontcharbyindex|fontchar|fontbody|fontalternative|flushtoks|flushtokens|flushtextflow|flushshapebox|flushoutputstream|flushnotes|flushnextbox|flushlocalfloats|flushlayer|flushedrightlastline|flushcollector|flushboxregister|flushbox|floatuserdataparameter|flligature|flat|flag|fixedspaces|fixedspace|fivesixths|fiveeighths|fittopbaselinegrid|fitfieldframed|fitfield|firstuserpagenumber|firstuserpage|firstsubpagenumber|firstsubpage|firstsubcountervalue|firstrealpagenumber|firstrealpage|firstoftwounexpanded|firstoftwoarguments|firstofthreeunexpanded|firstofthreearguments|firstofsixarguments|firstofoneunexpanded|firstofoneargument|firstoffourarguments|firstoffivearguments|firstinlist|firstcountervalue|firstcounter|firstcharacter|finishregisterentry|findtwopassdata|filterreference|filterpages|filterfromvalue|filterfromnext|fillupto|fillintext|fillinrules|fillinline|filler|filledhboxy|filledhboxr|filledhboxm|filledhboxk|filledhboxg|filledhboxc|filledhboxb|filigature|filename|figurewidth|figuresymbol|figurespace|figurenaturalwidth|figurenaturalheight|figureheight|figurefullname|figurefiletype|figurefilepath|figurefilename|fifthofsixarguments|fifthoffivearguments|fieldstack|fieldbody|field|fhook|fflligature|ffligature|ffiligature|fetchtwomarks|fetchtwomarkings|fetchruntinecommand|fetchonemarking|fetchonemark|fetchmarking|fetchmark|fetchallmarks|fetchallmarkings|fenced|fence|feature|fastsxsy|fastswitchtobodyfont|fastsetupwithargumentswapped|fastsetupwithargument|fastsetup|fastscale|fastloopindex|fastloopfinal|fastlocalframed|fastincrement|fastdecrement|fallingdotseq|fakebox|externalfigurecollectionparameter|externalfigurecollectionminwidth|externalfigurecollectionminheight|externalfigurecollectionmaxwidth|externalfigurecollectionmaxheight|externalfigure|exponentiale|expdoifnot|expdoifinsetelse|expdoifelseinset|expdoifelsecommon|expdoifelse|expdoifcommonelse|expdoif|expandfontsynonym|expandeddoifnot|expandeddoifelse|expandeddoif|expanded|expandcheckedcsname|exitloopnow|exitloop|exists|executeifdefined|exclamdown|eunderparentfill|eunderbracketfill|eunderbracefill|eunderbarfill|etwoheadrightarrowfill|etilde|ethiopic|eth|eta|erightharpoonupfill|erightharpoondownfill|erightarrowfill|equiv|equalscolon|equaldigits|eqslantless|eqslantgtr|eqsim|eqless|eqgtr|eqeqeq|eqeq|eqcirc|eq|epsilon|epos|eoverparentfill|eoverbracketfill|eoverbracefill|eoverbarfill|eogonek|envvar|environment|env|enspace|enskip|enquad|endnote|endash|enabletrackers|enableregime|enableparpositions|enableoutputstream|enablemode|enableexperiments|enabledirectives|emspace|emquad|emptyset|emptylines|emphasistypeface|emphasisboldface|emdash|emacron|em|ell|eleftrightarrowfill|eleftharpoonupfill|eleftharpoondownfill|eleftarrowfill|elapsedtime|elapsedseconds|einvertedbreve|ehook|egrave|effect|efcparameter|efcminwidth|efcminheight|efcmaxwidth|efcmaxheight|edoublegrave|edotbelow|edotaccent|ediaeresis|edefconvertedargument|ecircumflextilde|ecircumflexhook|ecircumflexgrave|ecircumflexdotbelow|ecircumflexacute|ecircumflex|ecedilla|ecaron|ebreve|eacute|eTeX|dzligature|dzcaronligature|dummyparameter|dummydigit|dtail|dstroke|dpofstring|downzigzagarrow|downwhitearrow|downuparrows|downharpoonright|downharpoonleft|downdownarrows|downdasharrow|downarrow|dowithwargument|dowithrange|dowithpargument|dowithnextboxcs|dowithnextboxcontentcs|dowithnextboxcontent|dowithnextbox|dowith|doubleverticalbar|doubleprime|doubleparent|doublecup|doublecap|doublebracket|doublebrace|doublebond|doublebar|dottedrightarrow|dottedcircle|dots|dotriplegroupempty|dotripleemptywithset|dotripleempty|dotripleargumentwithset|dotripleargument|dotplus|dotoks|dotminus|dotlessjstroke|dotlessj|dotlessi|dotlessJ|dotlessI|dotfskip|doteqdot|doteq|dot|dosubtractfeature|dostepwiserecurse|dosixtupleempty|dosixtupleargument|dosinglegroupempty|dosingleempty|dosingleargument|doseventupleempty|doseventupleargument|dosetupcheckedinterlinespace|dosetrightskipadaption|dosetleftskipadaption|dosetattribute|dorotatebox|doresetattribute|doresetandafffeature|doreplacefeature|dorepeatwithcommand|dorecurse|dorechecknextindentation|doquintuplegroupempty|doquintupleempty|doquintupleargument|doquadruplegroupempty|doquadrupleempty|doquadrupleargument|doprocesslocalsetups|dopositionaction|dontpermitspacesbetweengroups|dontleavehmode|dontconvertfont|donothing|doloopoverlist|doloop|dollar|doindentation|doifvariableelse|doifvariable|doifvaluesomething|doifvaluenothingelse|doifvaluenothing|doifvalueelse|doifvalue|doifurldefinedelse|doifunknownfontfeature|doifundefinedelse|doifundefinedcounter|doifundefined|doiftypingfileelse|doiftopofpageelse|doiftextflowelse|doiftextflowcollectorelse|doiftextelse|doiftext|doifsymbolsetelse|doifsymboldefinedelse|doifstructurelisthaspageelse|doifstructurelisthasnumberelse|doifstringinstringelse|doifsometokselse|doifsometoks|doifsomethingelse|doifsomething|doifsomespaceelse|doifsomebackgroundelse|doifsomebackground|doifsetupselse|doifsetups|doifsamestringelse|doifsamestring|doifsamelinereferenceelse|doifrighttoleftinboxelse|doifrightpagefloatelse|doifreferencefoundelse|doifpositionsusedelse|doifpositionsonthispageelse|doifpositionsonsamepageelse|doifpositiononpageelse|doifpositionelse|doifpositionactionelse|doifpositionaction|doifposition|doifpatternselse|doifpathexistselse|doifpathelse|doifparentfileelse|doifparallelelse|doifoverlayelse|doifoverlappingelse|doifolderversionelse|doifoldercontextelse|doifoddpagefloatelse|doifoddpageelse|doifobjectreferencefoundelse|doifobjectfoundelse|doifnumberelse|doifnumber|doifnotvariable|doifnotvalue|doifnotsetups|doifnotsamestring|doifnotnumber|doifnotmode|doifnotinstring|doifnotinsidesplitfloat|doifnotinset|doifnothingelse|doifnothing|doifnotflagged|doifnotfile|doifnotescollected|doifnoteonsamepageelse|doifnotenv|doifnotemptyvariable|doifnotemptyvalue|doifnotempty|doifnotdocumentvariable|doifnotdocumentfilename|doifnotdocumentargument|doifnotcounter|doifnotcommon|doifnotcommandhandler|doifnotallmodes|doifnotallcommon|doifnot|doifnonzeropositiveelse|doifnextparenthesiselse|doifnextoptionalelse|doifnextoptionalcselse|doifnextcharelse|doifnextbgroupelse|doifnextbgroupcselse|doifmodeelse|doifmode|doifmessageelse|doifmeaningelse|doifmarkingelse|doifmainfloatbodyelse|doiflocfileelse|doiflocationelse|doiflistelse|doifleapyearelse|doiflayouttextlineelse|doiflayoutsomelineelse|doiflayoutdefinedelse|doiflayerdataelse|doiflanguageelse|doifitalicelse|doifintwopassdataelse|doifintokselse|doifinsymbolsetelse|doifinsymbolset|doifinstringelse|doifinstring|doifinsetelse|doifinset|doifinsertionelse|doifinputfileelse|doifinelementelse|doifincsnameelse|doifhelpelse|doifhasspaceelse|doiffontsynonymelse|doiffontpresentelse|doiffontfeatureelse|doiffontcharelse|doifflaggedelse|doiffirstcharelse|doiffileexistselse|doiffileelse|doiffiledefinedelse|doiffile|doiffigureelse|doiffieldcategoryelse|doiffieldbodyelse|doiffastoptionalcheckelse|doiffastoptionalcheckcselse|doifenvelse|doifenv|doifemptyvariableelse|doifemptyvariable|doifemptyvalueelse|doifemptyvalue|doifemptytoks|doifemptyelse|doifempty|doifelsevariable|doifelsevaluenothing|doifelsevalue|doifelseurldefined|doifelseundefined|doifelsetypingfile|doifelsetopofpage|doifelsetextflowcollector|doifelsetextflow|doifelsetext|doifelsesymbolset|doifelsesymboldefined|doifelsestructurelisthaspage|doifelsestructurelisthasnumber|doifelsestringinstring|doifelsesometoks|doifelsesomething|doifelsesomespace|doifelsesomebackground|doifelsesetups|doifelsesamestring|doifelsesamelinereference|doifelserighttoleftinbox|doifelserightpagefloat|doifelserightpage|doifelsereferencefound|doifelsepositionsused|doifelsepositionsonthispage|doifelsepositionsonsamepage|doifelsepositiononpage|doifelsepositionaction|doifelseposition|doifelsepatterns|doifelsepathexists|doifelsepath|doifelseparentfile|doifelseparallel|doifelseoverlay|doifelseoverlapping|doifelseolderversion|doifelseoldercontext|doifelseoddpagefloat|doifelseoddpage|doifelseobjectreferencefound|doifelseobjectfound|doifelsenumber|doifelsenothing|doifelsenoteonsamepage|doifelsenonzeropositive|doifelsenextparenthesis|doifelsenextoptionalcs|doifelsenextoptional|doifelsenextchar|doifelsenextbgroupcs|doifelsenextbgroup|doifelsemode|doifelsemessage|doifelsemeaning|doifelsemarking|doifelsemarkedpage|doifelsemainfloatbody|doifelselocfile|doifelselocation|doifelselist|doifelseleapyear|doifelselayouttextline|doifelselayoutsomeline|doifelselayoutdefined|doifelselayerdata|doifelselanguage|doifelseitalic|doifelseintwopassdata|doifelseintoks|doifelseinsymbolset|doifelseinstring|doifelseinset|doifelseinsertion|doifelseinputfile|doifelseinelement|doifelseincsname|doifelsehelp|doifelsehasspace|doifelseframed|doifelsefontsynonym|doifelsefontpresent|doifelsefontfeature|doifelsefontchar|doifelseflagged|doifelsefirstchar|doifelsefileexists|doifelsefiledefined|doifelsefile|doifelsefigure|doifelsefieldcategory|doifelsefieldbody|doifelsefastoptionalcheckcs|doifelsefastoptionalcheck|doifelseenv|doifelseemptyvariable|doifelseemptyvalue|doifelseempty|doifelsedrawingblack|doifelsedocumentvariable|doifelsedocumentfilename|doifelsedocumentargument|doifelsedimenstring|doifelsedimension|doifelsedefinedcounter|doifelsedefined|doifelsecurrentsynonymused|doifelsecurrentsynonymshown|doifelsecurrentsortingused|doifelsecurrentfonthasfeature|doifelsecounter|doifelseconversionnumber|doifelseconversiondefined|doifelsecommon|doifelsecommandhandler|doifelsecolor|doifelsebuffer|doifelseboxincache|doifelsebox|doifelseblack|doifelseassignmentcs|doifelseassignment|doifelseallmodes|doifelsealldefined|doifelseallcommon|doifelseMPgraphic|doifelse|doifdrawingblackelse|doifdocumentvariableelse|doifdocumentvariable|doifdocumentfilenameelse|doifdocumentfilename|doifdocumentargumentelse|doifdocumentargument|doifdimenstringelse|doifdimensionelse|doifdefinedelse|doifdefinedcounterelse|doifdefinedcounter|doifdefined|doifcurrentfonthasfeatureelse|doifcounterelse|doifcounter|doifconversionnumberelse|doifconversiondefinedelse|doifcontent|doifcommonelse|doifcommon|doifcommandhandlerelse|doifcommandhandler|doifcolorelse|doifcolor|doifbufferelse|doifboxelse|doifbothsidesoverruled|doifbothsides|doifblackelse|doifassignmentelsecs|doifassignmentelse|doifallmodeselse|doifallmodes|doifalldefinedelse|doifallcommonelse|doifallcommon|doifMPgraphicelse|doif|dogobblesingleempty|dogobbledoubleempty|dogetcommacommandelement|dogetattributeid|dogetattribute|dofastloopcs|doexpandedrecurse|doeassign|dodoublegroupempty|dodoubleemptywithset|dodoubleempty|dodoubleargumentwithset|dodoubleargument|documentvariable|docheckedpair|docheckedpagestate|docheckassignment|doboundtext|doassignempty|doassign|doaddfeature|doadaptrightskip|doadaptleftskip|divides|divideontimes|dividedsize|div|distributedhsize|displaymessage|displaymathematics|displaymath|disabletrackers|disableregime|disableparpositions|disableoutputstream|disablemode|disableexperiments|disabledirectives|dis|directvspacing|directsymbol|directsetup|directsetbar|directselect|directluacode|directlocalframed|directhighlight|directgetboxlly|directgetboxllx|directdummyparameter|directcopyboxfromcache|directconvertedcounter|directcolored|directcolor|directboxfromcache|dimensiontocount|digits|digamma|differentiald|differentialD|diamondsuit|diamond|diameter|dhook|dfrac|devanagarinumerals|determineregistercharacteristics|determinenoflines|determinelistcharacteristics|determineheadnumber|depthstrut|depthspanningtext|depthonlybox|depthofstring|delta|delimitedtext|delimited|definextable|definevspacingamount|definevspacing|definevspace|defineviewerlayer|defineuserdataalternative|defineuserdata|defineunit|definetyping|definetypesetting|definetypescriptsynonym|definetypescriptprefix|definetypeface|definetype|definetwopasslist|definetransparency|definetooltip|definetokenlist|definetextflow|definetextbackground|definetext|definetabulation|definetabulate|definetabletemplate|definesystemvariable|definesystemconstant|definesystemattribute|definesynonyms|definesynonym|definesymbol|definesubformula|definesubfield|definestyleinstance|definestyle|definestartstop|definespotcolor|definesorting|definesort|definesidebar|defineshift|defineseparatorset|defineselector|definesectionlevels|definesectionblock|definesection|definescript|definescale|defineruby|defineresetset|definerenderingwindow|defineregister|definereferenceformat|definereference|definepushsymbol|definepushbutton|defineprogram|defineprofile|defineprocessor|defineprocesscolor|defineprefixset|definepositioning|defineplacement|defineperiodkerning|defineparbuilder|defineparallel|defineparagraphs|defineparagraph|definepapersize|definepalet|definepairedbox|definepagestate|definepageshift|definepageinjectionalternative|definepageinjection|definepagecolumns|definepagechecker|definepagebreak|definepage|defineoverlay|defineoutputroutinecommand|defineoutputroutine|defineornament|definenote|definenarrower|definenamespace|definenamedcolor|definemultitonecolor|definemode|definemixedcolumns|definemessageconstant|definemeasure|definemathunstacked|definemathundertextextensible|definemathunderextensible|definemathunder|definemathtriplet|definemathstyle|definemathstackers|definemathradical|definemathovertextextensible|definemathoverextensible|definemathover|definemathornament|definemathmatrix|definemathframed|definemathfraction|definemathfence|definemathextensible|definemathematics|definemathdoubleextensible|definemathdouble|definemathcommand|definemathcases|definemathalignment|definemathaccent|definemarking|definemarker|definemargindata|definemarginblock|definemakeup|definelowmidhigh|definelowhigh|definelow|definelistextra|definelistalternative|definelist|definelines|definelinenumbering|definelinenote|definelinefiller|definelayout|definelayerpreset|definelayer|definelabelclass|definelabel|defineitems|defineitemgroup|defineintermediatecolor|defineinterlinespace|defineinterfacevariable|defineinterfaceelement|defineinterfaceconstant|defineinteractionmenu|defineinteractionbar|defineinteraction|defineinsertion|defineinitial|defineindenting|defineindentedtext|definehypenationfeatures|definehspace|definehighlight|definehigh|definehelp|defineheadalternative|definehead|definehbox|definegridsnapping|definegraphictypesynonym|defineglobalcolor|definefrozenfont|defineframedtext|defineframedtable|defineframedcontent|defineframed|defineformulaframed|defineformulaalternative|defineformula|definefontsynonym|definefontstyle|definefontsolution|definefontsize|definefontfile|definefontfeature|definefontfamilypreset|definefontfamily|definefontfallback|definefontalternative|definefont|definefloat|definefittingpage|definefirstline|definefiller|definefilesynonym|definefilefallback|definefileconstant|definefiguresymbol|definefieldstack|definefieldcategory|definefieldbodyset|definefieldbody|definefield|definefallbackfamily|definefacingfloat|defineexternalfigure|defineexpandable|defineenumeration|defineeffect|definedfont|definedescription|definedeq|definedelimitedtext|definedataset|definecounter|defineconversionset|defineconversion|definecomplexorsimpleempty|definecomplexorsimple|definecomment|definecommand|definecombinedlist|definecombination|definecolumnsetspan|definecolumnsetarea|definecolumnset|definecolumnbreak|definecolorgroup|definecolor|definecollector|definechemicalsymbol|definechemicals|definechemical|definecharacterspacing|definecharacterkerning|definecharacter|definecapitals|definebutton|definebuffer|definebtxrendering|definebtxregister|definebtxdataset|definebtx|definebreakpoints|definebreakpoint|definebodyfontswitch|definebodyfontenvironment|definebodyfont|defineblock|definebar|definebackground|defineattribute|defineattachment|defineanchor|definealternativestyle|defineactivecharacter|defineaccent|defineTABLEsetup|defineMPinstance|define|defconvertedvalue|defconvertedcommand|defconvertedargument|defcatcodecommand|defaultobjectreference|defaultobjectpage|defaultinterface|decrementvalue|decrementsubpagenumber|decrementpagenumber|decrementedcounter|decrementcounter|decrement|ddots|ddot|dddot|ddagger|ddag|dcurl|dcaron|dbinom|dayspermonth|dayoftheweek|date|datasetvariable|dashv|dashedrightarrow|dashedleftarrow|dasharrow|daleth|dagger|dag|d|cyrilliczhediaeresis|cyrilliczhedescender|cyrilliczhebreve|cyrilliczh|cyrilliczediaeresis|cyrilliczdsc|cyrillicz|cyrillicyu|cyrillicystrstroke|cyrillicystr|cyrillicyo|cyrillicyi|cyrillicyerudiaeresis|cyrillicyat|cyrillicya|cyrillicv|cyrillicushrt|cyrillicumacron|cyrillicuk|cyrillicudoubleacute|cyrillicudiaeresis|cyrillicu|cyrillictshe|cyrillictetse|cyrillictedc|cyrillict|cyrillicshha|cyrillicshch|cyrillicsh|cyrillicsftsn|cyrillicsemisoft|cyrillicsdsc|cyrillicschwadiaeresis|cyrillicschwa|cyrillics|cyrillicr|cyrillicpsi|cyrillicpemidhook|cyrillicp|cyrillicot|cyrillicomegatitlo|cyrillicomegaround|cyrillicomega|cyrillicodiaeresis|cyrillicobarreddiaeresis|cyrillicobarred|cyrillico|cyrillicnje|cyrillicn|cyrillicm|cyrilliclje|cyrilliclittleyusiotified|cyrilliclittleyus|cyrillicl|cyrillicksi|cyrillickoppa|cyrillickje|cyrillickavertstroke|cyrillickastroke|cyrillickahook|cyrillickadc|cyrillickabashkir|cyrillick|cyrillicje|cyrillicizhitsadoublegrave|cyrillicizhitsa|cyrillicishrttail|cyrillicishrt|cyrillicimacron|cyrillicii|cyrillicigrave|cyrillicie|cyrillicidiaeresis|cyrillici|cyrillichrdsn|cyrillichadc|cyrillicha|cyrillich|cyrillicgje|cyrillicgheupturn|cyrillicghestroke|cyrillicghemidhook|cyrillicg|cyrillicfita|cyrillicf|cyrillicery|cyrillicertick|cyrillicerev|cyrillicentail|cyrillicenhook|cyrillicenghe|cyrillicendc|cyrillicemtail|cyrilliceltail|cyrilliceiotified|cyrillicegrave|cyrillicediaeresis|cyrillicebreve|cyrillice|cyrillicdzhe|cyrillicdzeabkhasian|cyrillicdze|cyrillicdje|cyrillicd|cyrillicchevertstroke|cyrillicchekhakassian|cyrillicchediaeresis|cyrillicchedcabkhasian|cyrillicchedc|cyrilliccheabkhasian|cyrillicch|cyrillicc|cyrillicbigyusiotified|cyrillicbigyus|cyrillicb|cyrillicae|cyrillicadiaeresis|cyrillicabreve|cyrillica|cyrillicZHEdiaeresis|cyrillicZHEdescender|cyrillicZHEbreve|cyrillicZH|cyrillicZEdiaeresis|cyrillicZDSC|cyrillicZ|cyrillicYstrstroke|cyrillicYstr|cyrillicYU|cyrillicYO|cyrillicYI|cyrillicYERUdiaeresis|cyrillicYAT|cyrillicYA|cyrillicV|cyrillicUmacron|cyrillicUdoubleacute|cyrillicUdiaeresis|cyrillicUSHRT|cyrillicUK|cyrillicU|cyrillicTSHE|cyrillicTITLO|cyrillicTETSE|cyrillicTEDC|cyrillicT|cyrillicSHHA|cyrillicSHCH|cyrillicSH|cyrillicSFTSN|cyrillicSEMISOFT|cyrillicSDSC|cyrillicSCHWAdiaeresis|cyrillicSCHWA|cyrillicS|cyrillicR|cyrillicPSILIPNEUMATA|cyrillicPSI|cyrillicPEmidhook|cyrillicPALOCHKA|cyrillicPALATALIZATION|cyrillicP|cyrillicOdiaeresis|cyrillicObarreddiaeresis|cyrillicObarred|cyrillicOT|cyrillicOMEGAtitlo|cyrillicOMEGAround|cyrillicOMEGA|cyrillicO|cyrillicNJE|cyrillicN|cyrillicM|cyrillicLJE|cyrillicLITTLEYUSiotified|cyrillicLITTLEYUS|cyrillicL|cyrillicKSI|cyrillicKOPPA|cyrillicKJE|cyrillicKAvertstroke|cyrillicKAstroke|cyrillicKAhook|cyrillicKAbashkir|cyrillicKADC|cyrillicK|cyrillicJE|cyrillicImacron|cyrillicIgrave|cyrillicIdiaeresis|cyrillicIZHITSAdoublegrave|cyrillicIZHITSA|cyrillicISHRTtail|cyrillicISHRT|cyrillicII|cyrillicIE|cyrillicI|cyrillicHRDSN|cyrillicHADC|cyrillicHA|cyrillicH|cyrillicGJE|cyrillicGHEupturn|cyrillicGHEstroke|cyrillicGHEmidhook|cyrillicG|cyrillicFITA|cyrillicF|cyrillicEiotified|cyrillicEgrave|cyrillicEdiaeresis|cyrillicEbreve|cyrillicERtick|cyrillicERY|cyrillicEREV|cyrillicENtail|cyrillicENhook|cyrillicENGHE|cyrillicENDC|cyrillicEMtail|cyrillicELtail|cyrillicE|cyrillicDZHE|cyrillicDZEabkhasian|cyrillicDZE|cyrillicDJE|cyrillicDASIAPNEUMATA|cyrillicD|cyrillicCHEvertstroke|cyrillicCHEkhakassian|cyrillicCHEdiaeresis|cyrillicCHEabkhasian|cyrillicCHEDCabkhasian|cyrillicCHEDC|cyrillicCH|cyrillicC|cyrillicBIGYUSiotified|cyrillicBIGYUS|cyrillicB|cyrillicAdiaeresis|cyrillicAbreve|cyrillicAE|cyrillicA|cwopencirclearrow|curvearrowright|curvearrowleft|currentxtablerow|currentxtablecolumn|currentvalue|currenttime|currentresponses|currentregisterpageuserdata|currentregime|currentproject|currentproduct|currentoutputstream|currentmoduleparameter|currentmessagetext|currentmainlanguage|currentlistsymbol|currentlistentrytitlerendered|currentlistentrytitle|currentlistentryreferenceattribute|currentlistentrypagenumber|currentlistentrynumber|currentlistentrylimitedtext|currentlistentrydestinationattribute|currentlanguage|currentinterface|currentheadnumber|currentfeaturetest|currentenvironment|currentdate|currentcomponent|currentcommalistitem|currentbtxuservariable|currentassignmentlistvalue|currentassignmentlistkey|curlywedge|curlyvee|curlyeqsucc|curlyeqprec|cup|ctxsprint|ctxreport|ctxluacode|ctxluabuffer|ctxlua|ctxloadluafile|ctxlatelua|ctxlatecommand|ctxfunction|ctxdirectlua|ctxdirectcommand|ctxcommand|ctop|cstroke|crightoverleftarrow|crightarrow|crampedrlap|crampedllap|crampedclap|cramped|counttokens|counttoken|countersubs|correctwhitespace|copyunittext|copytaglabeltext|copysuffixtext|copysetups|copyright|copyprefixtext|copyposition|copyparameters|copypages|copyoperatortext|copymathlabeltext|copylabeltext|copyheadtext|copyfield|copybtxlabeltext|copyboxfromcache|coprod|convertvboxtohbox|convertvalue|convertnumber|convertmonth|convertedsubcounter|converteddimen|convertedcounter|convertcommand|convertargument|continueifinputfile|continuednumber|contentreference|constantnumberargument|constantnumber|constantemptyargument|constantdimenargument|constantdimen|cong|compresult|composedlayer|composedcollector|component|complexorsimpleempty|complexorsimple|complexes|completeregister|completepagenumber|completelistoftables|completelistofsynonyms|completelistofsorts|completelistofpublications|completelistoflogos|completelistofintermezzi|completelistofgraphics|completelistoffigures|completelistofchemicals|completelistofabbreviations|completelist|completeindex|completecontent|completebtxrendering|complement|comparepalet|comparedimensioneps|comparedimension|comparecolorgroup|comment|commalistsize|commalistsentence|commalistelement|combinepages|columnsetspanwidth|columnbreak|column|colorvalue|coloronly|colored|colorcomponents|colorbar|color|colonequals|coloncolonequals|colon|collectexpanded|collectedtext|collect|clubsuit|clonefield|clippedoverlayimage|clip|cleftarrow|cldprocessfile|cldloadfile|cldcontext|cldcommand|classfont|clap|cite|citation|circleonrightarrow|circledequals|circleddash|circledcirc|circledast|circledS|circledR|circlearrowright|circlearrowleft|circeq|circ|chook|chinesenumerals|chinesecapnumerals|chineseallnumerals|chi|chemicaltoptext|chemicaltext|chemicalsymbol|chemicalmidtext|chemicalbottext|chemical|chem|checkvariables|checktwopassdata|checksoundtrack|checkpreviousinjector|checkparameters|checkpage|checknextinjector|checknextindentation|checkmark|checkinjector|checkedstrippedcsname|checkedfiller|checkedchar|checkedblank|checkcharacteralign|check|charwidthlanguage|chardescription|characters|character|chapter|cfrac|centerline|centerednextbox|centeredlastline|centeredbox|centerdot|centerbox|centeraligned|cdots|cdotp|cdotaccent|cdot|ccurl|ccircumflex|ccedilla|ccaron|cbox|catcodetablename|carriagereturn|cap|camel|calligraphic|cacute|button|bullet|buildtextognek|buildtextmacron|buildtextgrave|buildtextcedilla|buildtextbottomdot|buildtextbottomcomma|buildtextaccent|buildmathaccent|btxtextcitation|btxsingularplural|btxsingularorplural|btxsetup|btxsavejournalist|btxremapauthor|btxoneorrange|btxloadjournalist|btxlistcitation|btxlabeltext|btxlabellanguage|btxhybridcite|btxhiddencitation|btxfoundtype|btxfoundname|btxflushsuffix|btxflushauthornormalshort|btxflushauthornormal|btxflushauthorname|btxflushauthorinvertedshort|btxflushauthorinverted|btxflushauthor|btxflush|btxfirstofrange|btxfieldtype|btxfieldname|btxfield|btxexpandedjournal|btxdoifuservariableelse|btxdoifsameaspreviouselse|btxdoifsameaspreviouscheckedelse|btxdoifnot|btxdoifelseuservariable|btxdoifelsesameaspreviouschecked|btxdoifelsesameasprevious|btxdoifelsecombiinlist|btxdoifelse|btxdoifcombiinlistelse|btxdoif|btxdirect|btxdetail|btxauthorfield|btxalwayscitation|btxaddjournal|btxabbreviatedjournal|bstroke|breve|breakhere|breakablethinspace|bpos|boxtimes|boxreference|boxplus|boxofsize|boxminus|boxmarker|boxdot|boxcursor|bowtie|bottomrightbox|bottomleftbox|bottombox|bot|bordermatrix|booleanmodevalue|bookmark|boldslanted|bolditalic|boldface|bold|bodyfontsize|bodyfontenvironmentlist|blockuservariable|blocksynctexfile|blockquote|blockligatures|bleedwidth|bleedheight|bleed|blap|blank|blacktriangleright|blacktriangleleft|blacktriangledown|blacktriangle|blacksquare|blackrules|blackrule|blacklozenge|bitmapimage|binom|bigwedge|bigvee|biguplus|bigudot|bigtriangleup|bigtriangledown|bigtimes|bigstar|bigsquare|bigsqcup|bigsqcap|bigskip|bigr|bigotimes|bigoplus|bigodot|bigm|bigl|biggr|biggm|biggl|bigger|bigg|bigdiamond|bigcup|bigcircle|bigcirc|bigcap|bigbodyfont|big|bhook|between|beth|beta|beforetestandsplitstring|beforesplitstring|because|bbox|bbordermatrix|baselinerightbox|baselinemiddlebox|baselineleftbox|baselinebottom|basegrid|barwedge|barovernorthwestarrow|barleftarrowrightarrowbar|barleftarrow|bar|backslash|backsim|backprime|backgroundline|backgroundimagefill|backgroundimage|background|backepsilon|averagecharwidth|availablehsize|autosetups|autopagestaterealpageorder|autopagestaterealpage|automathematics|autointegral|autoinsertnextspace|autodirvtop|autodirvbox|autodirhbox|autocap|attachment|atrightmargin|atpage|atleftmargin|atilde|at|asymp|astype|ast|assumelongusagecs|assignwidth|assignvalue|assigntranslation|assignifempty|assigndimension|assigndimen|assignalfadimension|aside|asciistr|arrowvert|aringacute|aring|arg|arabicwasallam|arabicvowelyeh|arabicvowelwaw|arabictripledot|arabicstartofrubc|arabicslcm|arabicshighthreedots|arabicsemicolon|arabicsanah|arabicsamvat|arabicsalla|arabicsajdah|arabicsafha|arabicrialsign|arabicray|arabicrasoul|arabicquestion|arabicqala|arabicpoeticverse|arabicpertenthousand|arabicpermille|arabicperiod|arabicpercent|arabicparenright|arabicparenleft|arabicnumerals|arabicnumberabove|arabicnumber|arabicmuhammad|arabicmisra|arabiclowseen|arabiclownoonkasra|arabiclowmeemlong|arabiclettermark|arabicjallajalalouhou|arabichighzain|arabichighyeh|arabichighwaqf|arabichighthalatha|arabichightakhallus|arabichightah|arabichighsmallsafha|arabichighseen|arabichighsallallahou|arabichighsakta|arabichighsajda|arabichighsad|arabichighrubc|arabichighrahmatullahalayhe|arabichighradiallahouanhu|arabichighqif|arabichighqaf|arabichighnoonkasra|arabichighnoon|arabichighnisf|arabichighmeemshort|arabichighmeemlong|arabichighmadda|arabichighlamalef|arabichighjeem|arabichighfootnotemarker|arabichighesala|arabichigheqala|arabichighalayheassallam|arabichighain|arabicfourthroot|arabicfootnotemarker|arabicexnumerals|arabicendofayah|arabicdisputedendofayah|arabicdecimals|arabicdateseparator|arabiccuberoot|arabiccomma|arabicbasmalah|arabicasterisk|arabicallallahou|arabicallah|arabicalayhe|arabicakbar|approxnEq|approxeq|approxEq|approx|applytowords|applytosplitstringwordspaced|applytosplitstringword|applytosplitstringlinespaced|applytosplitstringline|applytosplitstringcharspaced|applytosplitstringchar|applytofirstcharacter|applytocharacters|applyprocessor|applyalternativestyle|apply|appendvalue|appendtoksonce|appendtoks|appendtocommalist|appendgvalue|appendetoks|aogonek|angle|anchor|ampersand|amalg|amacron|alwayscite|alwayscitation|alphabeticnumerals|alpha|allinputpaths|alignmentcharacter|alignhere|alignedline|alignedbox|aligned|alignbottom|aleph|ainvertedbreve|ahook|agrave|aftertestandsplitstring|aftersplitstring|afghanicurrency|aemacron|aeligature|aeacute|adoublegrave|adotbelow|adotaccentmacron|adotaccent|adiaeresismacron|adiaeresis|addvalue|addtocommalist|addtoJSpreamble|addfontpath|addfeature|adaptpapersize|adaptlayout|adaptfontfeature|adaptcollector|acwopencirclearrow|acute|actuarial|activatespacehandler|acircumflextilde|acircumflexhook|acircumflexgrave|acircumflexdotbelow|acircumflexacute|acircumflex|acaron|abrevetilde|abrevehook|abrevegrave|abrevedotbelow|abreveacute|abreve|about|abjadnumerals|abjadnodotnumerals|abjadnaivenumerals|abbreviation|aacute|Zstroke|Zhook|Zeta|Zdotaccent|Zcaron|Zacute|Ytilde|Ymacron|Yhook|Ygrave|Ydotbelow|Ydiaeresis|Ycircumflex|Yacute|Xi|XeTeX|XETEX|Words|Word|WidthSpanningText|Wcircumflex|WORDS|WORD|WEEKDAY|Vvdash|Vert|VerboseNumber|Vdash|VDash|Uuparrow|Utilde|Uring|Upsilon|Updownarrow|Uparrow|Uogonek|Umacron|Uinvertedbreve|Uhungarumlaut|Uhorntilde|Uhornhook|Uhorngrave|Uhorndotbelow|Uhornacute|Uhorn|Uhook|Ugrave|Udoublegrave|Udotbelow|Udiaeresismacron|Udiaeresisgrave|Udiaeresiscaron|Udiaeresisacute|Udiaeresis|Ucircumflex|Ucaron|Ubreve|Uacute|Tstroke|TransparencyHack|Thorn|Thook|Theta|TheNormalizedFontSize|TeX|Tcommaaccent|Tcedilla|Tcaron|Tau|TaBlE|TEX|TABLE|Swarrow|Supset|Subset|Smallcapped|Sigma|Searrow|Scommaaccent|Scircumflex|Schwa|Scedilla|Scaron|ScaledPointsToWholeBigPoints|ScaledPointsToBigPoints|Sacute|S|Rsh|Rrightarrow|Romannumerals|Rinvertedbreve|Rightarrow|Rho|Relbar|ReadFile|Re|Rdsh|Rdoublegrave|Rcommaaccent|Rcaron|Racute|PtToCm|Psi|PropertyLine|PointsToWholeBigPoints|PointsToReal|PointsToBigPoints|Plankconst|PiCTeX|Pi|Phook|Phi|PRAGMA|PPCHTeX|PPCHTEX|PICTEX|PDFcolor|PDFTEX|PDFETEX|P|Otildemacron|Otilde|Ostrokeacute|Ostroke|Oogonekmacron|Oogonek|Omicron|Omega|Omacron|Oinvertedbreve|Ohungarumlaut|Ohorntilde|Ohornhook|Ohorngrave|Ohorndotbelow|Ohornacute|Ohorn|Ohook|Ograve|Odoublegrave|Odotbelow|Odotaccentmacron|Odotaccent|Odiaeresismacron|Odiaeresis|Ocircumflextilde|Ocircumflexhook|Ocircumflexgrave|Ocircumflexdotbelow|Ocircumflexacute|Ocircumflex|Ocaron|Obreve|Oacute|OEligature|Nwarrow|Numbers|Nu|Ntilde|NormalizeTextWidth|NormalizeTextHeight|NormalizeFontWidth|NormalizeFontHeight|Njligature|Ngrave|Neng|Nearrow|Ncommaaccent|Ncaron|Nacute|NJligature|Mu|MetaPost|MetaFun|MetaFont|Mapsto|Mapsfrom|MPy|MPxywhd|MPxy|MPx|MPwhd|MPw|MPvv|MPvariable|MPvar|MPv|MPur|MPul|MPtransparency|MPtext|MPstring|MPrs|MPrightskip|MPrest|MPregion|MPrawvar|MPr|MPposset|MPpositiongraphic|MPpos|MPplus|MPpardata|MPpage|MPp|MPoverlayanchor|MPoptions|MPn|MPmenubuttons|MPls|MPlr|MPll|MPleftskip|MPinclusions|MPh|MPgetposboxes|MPgetmultishape|MPgetmultipars|MPfontsizehskip|MPdrawing|MPd|MPcolumn|MPcoloronly|MPcolor|MPcode|MPc|MPbetex|MPanchor|MPVI|MPIV|MPII|MONTHSHORT|MONTHLONG|MONTH|MKXI|MKVI|MKIX|MKIV|MKII|METAPOST|METAFUN|METAFONT|LuajitTeX|LuaTeX|LuaMetaTeX|Lua|Lstroke|Lsh|Longrightarrow|Longmapsto|Longmapsfrom|Longleftrightarrow|Longleftarrow|Lleftarrow|Ljligature|Leftrightarrow|Leftarrow|Ldsh|Ldotmiddle|Lcommaaccent|Lcaron|Lbar|Lambda|LamSTeX|Lacute|LaTeX|LUATEX|LUAMETATEX|LUAJITTEX|LJligature|LATEX|LAMSTEX|Khook|Kcommaaccent|Kcaron|Kappa|Join|Jcircumflex|Itilde|Istroke|Iota|Iogonek|Imacron|Im|Iinvertedbreve|Ihook|Igrave|Idoublegrave|Idotbelow|Idotaccent|Idiaeresis|Icircumflex|Icaron|Ibreve|Iacute|INRSTEX|IJligature|Hstroke|Hcircumflex|Hcaron|Hat|Gstroke|Greeknumerals|GotoPar|Ghook|GetPar|Gdotaccent|Gcommaaccent|Gcircumflex|Gcaron|Gbreve|Gamma|Game|Gacute|Finv|Fhook|EveryPar|EveryLine|Eulerconst|Etilde|Eth|Eta|Epsilon|Eogonek|Emacron|Einvertedbreve|Ehook|Egrave|Edoublegrave|Edotbelow|Edotaccent|Ediaeresis|Ecircumflextilde|Ecircumflexhook|Ecircumflexgrave|Ecircumflexdotbelow|Ecircumflexacute|Ecircumflex|Ecedilla|Ecaron|Ebreve|Eacute|ETEX|Dzligature|Dzcaronligature|Dstroke|Downarrow|Doteq|Dhook|Delta|Ddownarrow|Dcaron|Dafrican|DZligature|DZcaronligature|Cup|Cstroke|ConvertToConstant|ConvertConstantAfter|Context|ConTeXt|Chook|Chi|Characters|Character|Cdotaccent|Ccircumflex|Ccedilla|Ccaron|Caps|Cap|Cacute|CONTEXT|Bumpeq|Box|Bigr|Bigm|Bigl|Biggr|Biggm|Biggl|Bigg|Big|Bhook|Beta|BeforePar|Atilde|Astroke|Arrowvert|Aringacute|Aring|Aogonek|Angstrom|And|Amacron|AmSTeX|Alphabeticnumerals|Alpha|Ainvertedbreve|Ahook|Agrave|AfterPar|Adoublegrave|Adotbelow|Adotaccentmacron|Adotaccent|Adiaeresismacron|Adiaeresis|Acircumflextilde|Acircumflexhook|Acircumflexgrave|Acircumflexdotbelow|Acircumflexacute|Acircumflex|Acaron|Abrevetilde|Abrevehook|Abrevegrave|Abrevedotbelow|Abreveacute|Abreve|Aacute|AMSTEX|AEmacron|AEligature|AEacute)(?=[^a-zA-Z])",
+ "name" : "context.command.commands.context.tex"
+ },
+ "comment" : {
+ "name" : "context.comment.comment.tex"
+ },
+ "constant" : {
+ "match" : "\u005C\u005C(zwnj|zwj|zerowidthspace|zerowidthnonjoiner|zerowidthnobreakspace|zerowidthjoiner|zeroskip|zeropoint|zeromuskip|zerocount|xmlcatcodes|xifcode|xetexengine|wildcardsymbol|whatsitnodecode|vtopgroupcode|vrbcatcodes|voidifcode|voidbox|vmodeifcode|vlistnodecode|vcentergroupcode|vboxifcode|vboxgroupcode|vadjustgroupcode|usetexmodule|usemodule|useluamodule|uprotationangle|unsetnodecode|unknownengine|unexpandeddocumentvariable|underscoreasciicode|undefined|typescripttwo|typescriptthree|typescriptone|txtcatcodes|twoperemspace|trueifcode|tpbcatcodes|tpacatcodes|tildeasciicode|threeperemspace|thousandpoint|texengineversion|texenginename|texenginefunctionality|texengine|texcatcodes|tabasciicode|superscriptcatcode|subscriptcatcode|stoptext|stopproject|stopproduct|stopnotmode|stopnotext|stopnotallmodes|stopmodule|stopmodeset|stopmodeset|stopmode|stopmkivmode|stoplmtxmode|stopenvironment|stopdocument|stopcomponent|stopallmodes|stopTEXpage|starttext|startproject|startproduct|startnotmode|startnotext|startnotallmodes|startmodule|startmodeset|startmodeset|startmode|startmkivmode|startlmtxmode|startenvironment|startdocument|startcomponent|startallmodes|startTEXpage|spacecatcode|spaceasciicode|softhyphen|smallskipamount|slantperpoint|sixperemspace|singlequoteasciicode|simplegroupcode|setupmodule|setupdocument|semisimplegroupcode|scrollmodecode|scaledpoint|rulenodecode|rlm|righttoleftmark|rightrotationangle|rightparentasciicode|rightbraceasciicode|questionmarkasciicode|pushmode|punctuationspace|prtcatcodes|project|product|primeasciicode|preventmode|presetdocument|popmode|points|plustwohundred|plustwo|plustwentythousand|plusthree|plusthousand|plustenthousand|plusten|plussixteen|plussix|plusseven|plusonehundred|plusone|plusnine|plushundred|plusfour|plusfivehundred|plusfive|plusfifty|pluseight|pluscxxviii|pluscxxvii|pluscclvi|pluscclv|penaltynodecode|pdftexengine|parfillrightskip|parfillleftskip|parametercatcode|outputnewlinechar|outputgroupcode|othercatcode|optionalspace|onepoint|onemuskip|onebasepoint|oddifcode|numifcode|notcatcodes|normalpagebox|nonstopmodecode|nonbreakablespace|nobreakspace|noaligngroupcode|nilcatcodes|newlineasciicode|narrownobreakspace|muquad|morethanasciicode|moduleparameter|mmodeifcode|mksuffix|minustwo|minusone|medskipamount|medcard|maxdimen|maxcount|maxcardminusone|maxcard|mathsupnormal|mathsupdisplay|mathsupcramped|mathsubnormal|mathsubcombined|mathsnodecode|mathsizesuffix|mathshiftgroupcode|mathshiftcatcode|mathrelcode|mathradicalcode|mathpunctcode|mathordcode|mathopencode|mathopcode|mathnothingcode|mathnolopcode|mathnodecode|mathlimopcode|mathleftgroupcode|mathinnercode|mathgroupcode|mathexheight|mathemwidth|mathclosecode|mathchoicegroupcode|mathchoicecode|mathboxcode|mathbincode|mathaxisheight|mathalphacode|mathaccentcode|marknodecode|luatexengine|luastringsep|luacatcodes|lrm|ligaturenodecode|lettercatcode|lessthanasciicode|lefttorightmark|leftrotationangle|leftparentasciicode|leftbraceasciicode|kernnodecode|invalidcatcode|interwordstretch|interwordspace|interwordshrink|insertnodecode|insertgroupcode|innerifcode|inicatcodes|ignorecatcode|ideographicspace|ideographichalffillspace|hyphenasciicode|hmodeifcode|hlistnodecode|hboxifcode|hboxgroupcode|hashasciicode|halfpoint|halfapoint|hairspace|gluenodecode|globalpreventmode|globalenablemode|globaldisablemode|fourperemspace|forwardslashasciicode|formfeedasciicode|fontslantperpoint|fontinterwordstretch|fontinterwordspace|fontinterwordshrink|fontextraspace|fontexheight|fontemwidth|fontcharifcode|fmtversion|fmtname|fiveperemspace|figurespace|falseifcode|extraspace|exheight|exclamationmarkasciicode|everystoptext|everystarttext|escapecatcode|errorstopmodecode|eofifcode|environment|enquad|endoflinetoken|endoflinecatcode|endoflineasciicode|endoffileasciicode|endline|endgroupcatcode|enablemode|emwidth|emquad|emptyvbox|emptytoks|emptyhbox|emptybox|empty|egroup|eUx|downrotationangle|doublequoteasciicode|doublecommentsignal|dollarasciicode|doifnotmode|doifnotdocumentvariable|doifnotallmodes|doifmodeelse|doifmode|doifelsemode|doifelsedocumentvariable|doifelseallmodes|doifdocumentvariableelse|doifdocumentvariable|doifallmodeselse|doifallmodes|documentvariable|discretionarynodecode|discretionarygroupcode|disablemode|directionrighttoleft|directionlefttoright|dimifcode|delasciicode|definemode|definedifcode|currentmoduleparameter|ctxcatcodes|ctdcatcodes|csnameifcode|continueifinputfile|contextversion|contextmark|contextlmtxmode|contextkind|contextformat|constantnumberargument|constantnumber|constantemptyargument|constantdimenargument|constantdimen|conditionaltrue|conditionalfalse|component|commentcatcode|commentasciicode|colonasciicode|circumflexasciicode|charnodecode|charifcode|catifcode|caseifcode|breakablethinspace|bottomlevelgroupcode|bigskipamount|bidirlo|bidirle|bidipop|bidilro|bidilre|bgroup|begingroupcatcode|batchmodecode|barasciicode|backslashasciicode|attributeunsetvalue|atsignasciicode|asciispacechar|ampersandasciicode|alignmentcatcode|aligngroupcode|adjustnodecode|adjustedhboxgroupcode|activetabtoken|activemathcharcode|activeformfeedtoken|activeendoflinetoken|activecatcode|activecatcode|Ux|Umathaccents|!!es|!!bs)(?=[^a-zA-Z])",
+ "name" : "context.constant.commands.constant.tex"
+ },
+ "csname" : {
+ "match" : "\u005C\u005C[a-zA-Z\u005C_@!?-ÿ]+",
+ "name" : "context.user.commands.user.tex"
+ },
+ "escaped" : {
+ "match" : "\u005C\u005C.",
+ "name" : "context.command.commands.escaped.tex"
+ },
+ "extra" : {
+ "match" : "\u005C~|\u005C||`|_|\u005C^|\u005C\u005C|/|\u005C-|\u005C+|\u005C'|\u005C&|\u005C%",
+ "name" : "context.extra.symbols.extras.tex"
+ },
+ "grouping" : {
+ "match" : "}|{|\u005C$",
+ "name" : "context.grouping.symbols.groups.tex"
+ },
+ "helper" : {
+ "match" : "\u005C\u005C(xmlsetup|writestatus|wait|vkern|vglue|vfillneg|vfilllneg|vfilll|validassignment|uxdef|usedummystyleparameter|usedummystyleandcolor|usedummycolorparameter|unvoidbox|unsupportedcs|unprotect|unique|unexpanded|undefinevalue|uncramped|ugdef|uedef|uedcatcodecommand|udef|twodigits|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|texsetup|texdefinition|synchronizelayoutdirection|synchronizeinlinedirection|synchronizedisplaydirection|superscript|subscript|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|seventhargumenttrue|seventhargumentfalse|setxvalue|setxmeasure|setvalue|setuxvalue|setuvalue|setups|setup|setugvalue|setuevalue|settruevalue|settrue|setsystemmode|setstrut|setnewmacro|setnewconstant|setmode|setmeasure|setmathtextbox|setmathsmalltextbox|setlocalhsize|setgvalue|setgmeasure|setfalsevalue|setfalse|setexpandeddummyparameter|setevalue|setemeasure|setdummyparameter|setconstantvalue|setconstant|setcatcodetable|secondoftwounexpanded|secondoftwoarguments|secondofthreeunexpanded|secondofthreearguments|secondofsixarguments|secondoffourarguments|secondoffivearguments|secondargumenttrue|secondargumentfalse|scratchyposition|scratchyoffset|scratchxposition|scratchxoffset|scratchwidth|scratchvsize|scratchvoffset|scratchunicode|scratchtopskip|scratchtopoffset|scratchtokstwo|scratchtoksthree|scratchtokssix|scratchtoksone|scratchtoksfour|scratchtoksfive|scratchtoks|scratchskiptwo|scratchskipthree|scratchskipsix|scratchskipone|scratchskipfour|scratchskipfive|scratchskip|scratchrightskip|scratchrightoffset|scratchoffset|scratchny|scratchnx|scratchmy|scratchmx|scratchmuskiptwo|scratchmuskipthree|scratchmuskipsix|scratchmuskipone|scratchmuskipfour|scratchmuskipfive|scratchmuskip|scratchmin|scratchmax|scratchleftskip|scratchleftoffset|scratchhsize|scratchhoffset|scratchheight|scratchdistance|scratchdimentwo|scratchdimenthree|scratchdimensix|scratchdimenone|scratchdimenfour|scratchdimenfive|scratchdimen|scratchdepth|scratchcountertwo|scratchcounterthree|scratchcountersix|scratchcounterone|scratchcounterfour|scratchcounterfive|scratchcounter|scratchboxtwo|scratchboxthree|scratchboxsix|scratchboxone|scratchboxfour|scratchboxfive|scratchbox|scratchbottomskip|scratchbottomoffset|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|quitprevcommalist|quitcommalist|quarterstrut|quad|pushsystemmode|pushmathstyle|pushcatcodetable|punctrelspacing|punctpunctspacing|punctordspacing|punctopspacing|punctopenspacing|punctinnerspacing|punctclosespacing|punctbinspacing|protected|protect|processfirstactioninset|processcommalist|processcommacommand|processallactionsinset|processallactions|processaction|privatescratchtoks|privatescratchskip|privatescratchmuskip|privatescratchdimen|privatescratchcounter|privatescratchbox|prependtotoks|prependtoks|popsystemmode|popmathstyle|popcatcodetable|pickupgroupedcommand|permitspacesbetweengroups|ordrelspacing|ordpunctspacing|ordordspacing|ordopspacing|ordopenspacing|ordinnerspacing|ordclosespacing|ordbinspacing|oprelspacing|oppunctspacing|opordspacing|opopspacing|opopenspacing|opinnerspacing|openrelspacing|openpunctspacing|openordspacing|openopspacing|openopenspacing|openinnerspacing|openclosespacing|openbinspacing|opclosespacing|opbinspacing|onlypdfobjectcompression|onlynonbreakablespace|oninterlineskip|offinterlineskip|obeyspaces|obeyluatokens|obeylualines|obeylines|obeyedtab|obeyedspace|obeyedpage|obeyedline|null|novalidassignment|nosuperscript|nosubscript|nospacing|nospace|normalvglue|normalvfillneg|normalvfilllneg|normalsuperscript|normalsubscript|normalstopimath|normalstopdmath|normalstartimath|normalstartdmath|normalspace|normalreqno|normalpdfcompression|normalnosuperscript|normalnosubscript|normallineskiplimit|normallineskip|normalhglue|normalhfillneg|normalhfilllneg|normalbaselineskip|nopdfobjectcompression|nopdfcompression|nointerlineskip|nohyphens|noheightstrut|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|naturalhpack|naturalhbox|morehyphens|modulonumber|measured|measure|maximumpdfcompression|mathtext|mathstylevcenteredvbox|mathstylevcenteredhbox|mathstylevcenter|mathstylevbox|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|letvalue|letgvalue|letdummyparameter|letcatcodecommand|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|ignoreparskip|htdp|hsizefraction|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|glet|getxparameters|getvalue|getuvalue|getparameters|getgparameters|getfirstcharacter|geteparameters|getdummyparameters|frule|freezemeasure|fourthofsixarguments|fourthoffourarguments|fourthoffivearguments|fourthargumenttrue|fourthargumentfalse|foundtrue|foundfalse|forgetparameters|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|expelsedoif|expdoifnot|expdoifinsetelse|expdoifelseinset|expdoifelsecommon|expdoifcommonelse|expdoif|expanded|exitloop|executeifdefined|everyendpar|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|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|directluacode|directdummyparameter|depthstrut|definenamedlua|definemeasure|defineexpandable|define|defcatcodecommand|defaultcatcodetable|currentcatcodetable|ctxwrite|ctxsprint|ctxreport|ctxluacode|ctxlua|ctxloadluafile|ctxlatelua|ctxlatecommand|ctxfunction|ctxdirectlua|ctxdirectcommand|ctxcommand|crlf|cramped|copysetups|copyparameters|compoundhyphenpenalty|closerelspacing|closepunctspacing|closeordspacing|closeopspacing|closeopenspacing|closeinnerspacing|closeclosespacing|closebinspacing|cldprocessfile|cldloadviafile|cldloadfile|cldcontext|cldcommand|checkedstrippedcsname|checkedrighttoleft|checkedlefttoright|checked|charspace|catcodetablename|carryoverpar|break|boxisempty|booleanmodevalue|binrelspacing|binpunctspacing|binordspacing|binopspacing|binopenspacing|bininnerspacing|binclosespacing|binbinspacing|begstrut|begcsname|availablehsize|autorule|autodirvtop|autodirvbox|autodirhbox|assumelongusagecs|appendtotoks|appendtoks|allowbreak|Umathbotaccent|Ucheckedstopdisplaymath|Ucheckedstartdisplaymath)(?=[^a-zA-Z])",
+ "name" : "context.plain.commands.plain.tex"
+ },
+ "ifprimitive" : {
+ "match" : "\u005C\u005Cif[a-zA-Z\u005C_@!?-ÿ]*",
+ "name" : "context.primitive.commands.if.tex"
+ },
+ "lua_command" : {
+ "begin" : "(\u005C\u005Cstart(?:luathread|luascript|luaexpr|latelua|directlua|ctxlua|ctxlatelua|ctxlatecommand|ctxfunction|ctxcommand|cldcontext|cldcommand))",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.embedded.lua.command.open.tex"
+ },
+ "2" : {
+ "name" : "context.grouping.lua.command.open.tex"
+ }
+ },
+ "end" : "(\u005C\u005Cstop(?:luathread|luascript|luaexpr|latelua|directlua|ctxlua|ctxlatelua|ctxlatecommand|ctxfunction|ctxcommand|cldcontext|cldcommand))",
+ "endCaptures" : {
+ "1" : {
+ "name" : "context.grouping.lua.command.close.tex"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "source.context.cld"
+ }
+ ]
+ },
+ "lua_environment" : {
+ "begin" : "(\u005C\u005Cstart(?:luasetups|luaparameterset|luacode|ctxfunctiondefinition|ctxfunction))",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.embedded.lua.environment.open.tex"
+ }
+ },
+ "end" : "(\u005C\u005Cstop(?:luasetups|luaparameterset|luacode|ctxfunctiondefinition|ctxfunction))",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.embedded.lua.environment.close.tex"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "source.context.cld"
+ }
+ ]
+ },
+ "metafun_command" : {
+ "match" : "\u005C\u005C(useMPgraphic|usableMPgraphic|uniqueMPpagegraphic|uniqueMPgraphic|reuseMPgraphic|reusableMPgraphic|MPpositiongraphic)(?=[^a-zA-Z])",
+ "name" : "context.embedded.metafun.command.tex"
+ },
+ "metafun_environment_a" : {
+ "begin" : "(\u005C\u005Cstart(?:useMPgraphic|reuseMPgraphic|MPinitializations|MPinclusions|MPgraphic|MPextensions|MPdefinitions|MPcode|MPcalculation))\u005Cs*(?:(\u005C{)([^\u005C}]*)(\u005C}))?\u005Cs*(?:(\u005C{)([^\u005C}]*)(\u005C}))?",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.embedded.metafun.environment.start.a.tex"
+ },
+ "2" : {
+ "name" : "context.embedded.metafun.environment.open.a.1.tex"
+ },
+ "3" : {
+ "name" : "context.warning.metafun.environment.content.a.1.tex"
+ },
+ "4" : {
+ "name" : "context.embedded.metafun.environment.close.a.1.tex"
+ },
+ "5" : {
+ "name" : "context.embedded.metafun.environment.open.a.2.tex"
+ },
+ "6" : {
+ "name" : "context.warning.metafun.environment.content.a.2.tex"
+ },
+ "7" : {
+ "name" : "context.embedded.metafun.environment.close.a.2.tex"
+ }
+ },
+ "end" : "(\u005C\u005Cstop(?:useMPgraphic|reuseMPgraphic|MPinitializations|MPinclusions|MPgraphic|MPextensions|MPdefinitions|MPcode|MPcalculation))",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.embedded.metafun.environment.stop.a.tex"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "source.context.mps"
+ }
+ ]
+ },
+ "metafun_environment_o" : {
+ "begin" : "(\u005C\u005CstartMPpage)\u005Cs*(?:(\u005C[)([^\u005C]]*)(\u005C]))?\u005Cs*(?:(\u005C[)([^\u005C]]*)(\u005C]))?",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.embedded.metafun.environment.start.o.tex"
+ },
+ "2" : {
+ "name" : "context.embedded.metafun.environment.open.o.1.tex"
+ },
+ "3" : {
+ "name" : "context.warning.metafun.environment.content.o.1.tex"
+ },
+ "4" : {
+ "name" : "context.embedded.metafun.environment.close.o.1.tex"
+ },
+ "5" : {
+ "name" : "context.embedded.metafun.environment.open.o.2.tex"
+ },
+ "6" : {
+ "name" : "context.warning.metafun.environment.content.o.2.tex"
+ },
+ "7" : {
+ "name" : "context.embedded.metafun.environment.close.o.2.tex"
+ }
+ },
+ "end" : "(\u005C\u005CstopMPpage)",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.embedded.metafun.environment.stop.o.tex"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "source.context.mps"
+ }
+ ]
+ },
+ "primitive" : {
+ "match" : "\u005C\u005C(year|xtokspre|xtoksapp|xspaceskip|xleaders|xdef|write|wordboundary|widowpenalty|widowpenalties|wd|vtop|vss|vsplit|vskip|vsize|vrule|vpack|voffset|vfuzz|vfilneg|vfill|vfil|vcenter|vbox|vbadness|valign|vadjust|useimageresource|useboxresource|uppercase|unvcopy|unvbox|unskip|unpenalty|unless|unkern|uniformdeviate|unhcopy|unhbox|underline|uchyph|uccode|tracingstats|tracingscantokens|tracingrestores|tracingparagraphs|tracingpages|tracingoutput|tracingonline|tracingnesting|tracingmacros|tracinglostchars|tracingifs|tracinggroups|tracingfonts|tracingcommands|tracingassigns|tpack|topskip|topmarks|topmark|tolerance|tokspre|toksdef|toksapp|toks|time|thinmuskip|thickmuskip|the|textstyle|textfont|textdirection|textdir|tagcode|tabskip|synctex|suppressprimitiveerror|suppressoutererror|suppressmathparerror|suppresslongerror|suppressifcsnameerror|suppressfontnotfounderror|string|splittopskip|splitmaxdepth|splitfirstmarks|splitfirstmark|splitdiscards|splitbotmarks|splitbotmark|special|span|spaceskip|spacefactor|skipdef|skip|skewchar|showtokens|showthe|showlists|showifs|showgroups|showboxdepth|showboxbreadth|showbox|show|shipout|shapemode|sfcode|setrandomseed|setlanguage|setfontid|setbox|scrollmode|scriptstyle|scriptspace|scriptscriptstyle|scriptscriptfont|scriptfont|scantokens|scantextokens|savingvdiscards|savinghyphcodes|savepos|saveimageresource|savecatcodetable|saveboxresource|rpcode|romannumeral|rightskip|rightmarginkern|righthyphenmin|rightghost|right|relpenalty|relax|readline|read|randomseed|raise|radical|quitvmode|pxdimen|protrusionboundary|protrudechars|primitive|prevgraf|prevdepth|pretolerance|prerelpenalty|prehyphenchar|preexhyphenchar|predisplaysize|predisplaypenalty|predisplaygapfactor|predisplaydirection|prebinoppenalty|posthyphenchar|postexhyphenchar|postdisplaypenalty|penalty|pdfximage|pdfxformresources|pdfxformname|pdfxformmargin|pdfxformattr|pdfxform|pdfvorigin|pdfvariable|pdfuniqueresname|pdfuniformdeviate|pdftrailerid|pdftrailer|pdftracingfonts|pdfthreadmargin|pdfthread|pdftexversion|pdftexrevision|pdftexbanner|pdfsuppressptexinfo|pdfsuppressoptionalinfo|pdfstartthread|pdfstartlink|pdfsetrandomseed|pdfsetmatrix|pdfsavepos|pdfsave|pdfretval|pdfrestore|pdfreplacefont|pdfrefximage|pdfrefxform|pdfrefobj|pdfrecompress|pdfrandomseed|pdfpxdimen|pdfprotrudechars|pdfprimitive|pdfpkresolution|pdfpkmode|pdfpkfixeddpi|pdfpagewidth|pdfpagesattr|pdfpageresources|pdfpageref|pdfpageheight|pdfpagebox|pdfpageattr|pdfoutput|pdfoutline|pdfomitcidset|pdfomitcharset|pdfobjcompresslevel|pdfobj|pdfnormaldeviate|pdfnoligatures|pdfnames|pdfminorversion|pdfmapline|pdfmapfile|pdfmajorversion|pdfliteral|pdflinkmargin|pdflastypos|pdflastxpos|pdflastximagepages|pdflastximage|pdflastxform|pdflastobj|pdflastlink|pdflastlinedepth|pdflastannot|pdfinsertht|pdfinfoomitdate|pdfinfo|pdfinclusionerrorlevel|pdfinclusioncopyfonts|pdfincludechars|pdfimageresolution|pdfimagehicolor|pdfimagegamma|pdfimageapplygamma|pdfimageaddfilename|pdfignoreunknownimages|pdfignoreddimen|pdfhorigin|pdfglyphtounicode|pdfgentounicode|pdfgamma|pdffontsize|pdffontobjnum|pdffontname|pdffontexpand|pdffontattr|pdffirstlineheight|pdffeedback|pdfextension|pdfendthread|pdfendlink|pdfeachlineheight|pdfeachlinedepth|pdfdraftmode|pdfdestmargin|pdfdest|pdfdecimaldigits|pdfcreationdate|pdfcopyfont|pdfcompresslevel|pdfcolorstackinit|pdfcolorstack|pdfcatalog|pdfannot|pdfadjustspacing|pausing|patterns|parskip|parshapelength|parshapeindent|parshapedimen|parshape|parindent|parfillskip|pardirection|pardir|par|pagewidth|pagetotal|pagetopoffset|pagestretch|pageshrink|pagerightoffset|pageleftoffset|pageheight|pagegoal|pagefilstretch|pagefillstretch|pagefilllstretch|pagediscards|pagedirection|pagedir|pagedepth|pagebottomoffset|overwithdelims|overline|overfullrule|over|outputpenalty|outputmode|outputbox|output|outer|or|openout|openin|omit|numexpr|number|nullfont|nulldelimiterspace|novrule|nospaces|normalyear|normalxtokspre|normalxtoksapp|normalxspaceskip|normalxleaders|normalxdef|normalwrite|normalwordboundary|normalwidowpenalty|normalwidowpenalties|normalwd|normalvtop|normalvss|normalvsplit|normalvskip|normalvsize|normalvrule|normalvpack|normalvoffset|normalvfuzz|normalvfilneg|normalvfill|normalvfil|normalvcenter|normalvbox|normalvbadness|normalvalign|normalvadjust|normaluseimageresource|normaluseboxresource|normaluppercase|normalunvcopy|normalunvbox|normalunskip|normalunpenalty|normalunless|normalunkern|normaluniformdeviate|normalunhcopy|normalunhbox|normalunexpanded|normalunderline|normaluchyph|normaluccode|normaltracingstats|normaltracingscantokens|normaltracingrestores|normaltracingparagraphs|normaltracingpages|normaltracingoutput|normaltracingonline|normaltracingnesting|normaltracingmacros|normaltracinglostchars|normaltracingifs|normaltracinggroups|normaltracingfonts|normaltracingcommands|normaltracingassigns|normaltpack|normaltopskip|normaltopmarks|normaltopmark|normaltolerance|normaltokspre|normaltoksdef|normaltoksapp|normaltoks|normaltime|normalthinmuskip|normalthickmuskip|normalthe|normaltextstyle|normaltextfont|normaltextdirection|normaltextdir|normaltagcode|normaltabskip|normalsynctex|normalsuppressprimitiveerror|normalsuppressoutererror|normalsuppressmathparerror|normalsuppresslongerror|normalsuppressifcsnameerror|normalsuppressfontnotfounderror|normalstring|normalsplittopskip|normalsplitmaxdepth|normalsplitfirstmarks|normalsplitfirstmark|normalsplitdiscards|normalsplitbotmarks|normalsplitbotmark|normalspecial|normalspan|normalspaceskip|normalspacefactor|normalskipdef|normalskip|normalskewchar|normalshowtokens|normalshowthe|normalshowlists|normalshowifs|normalshowgroups|normalshowboxdepth|normalshowboxbreadth|normalshowbox|normalshow|normalshipout|normalshapemode|normalsfcode|normalsetrandomseed|normalsetlanguage|normalsetfontid|normalsetbox|normalscrollmode|normalscriptstyle|normalscriptspace|normalscriptscriptstyle|normalscriptscriptfont|normalscriptfont|normalscantokens|normalscantextokens|normalsavingvdiscards|normalsavinghyphcodes|normalsavepos|normalsaveimageresource|normalsavecatcodetable|normalsaveboxresource|normalrpcode|normalromannumeral|normalrightskip|normalrightmarginkern|normalrighthyphenmin|normalrightghost|normalright|normalrelpenalty|normalrelax|normalreadline|normalread|normalrandomseed|normalraise|normalradical|normalquitvmode|normalpxdimen|normalprotrusionboundary|normalprotrudechars|normalprotected|normalprimitive|normalprevgraf|normalprevdepth|normalpretolerance|normalprerelpenalty|normalprehyphenchar|normalpreexhyphenchar|normalpredisplaysize|normalpredisplaypenalty|normalpredisplaygapfactor|normalpredisplaydirection|normalprebinoppenalty|normalposthyphenchar|normalpostexhyphenchar|normalpostdisplaypenalty|normalpenalty|normalpdfximage|normalpdfxformresources|normalpdfxformname|normalpdfxformmargin|normalpdfxformattr|normalpdfxform|normalpdfvorigin|normalpdfvariable|normalpdfuniqueresname|normalpdfuniformdeviate|normalpdftrailerid|normalpdftrailer|normalpdftracingfonts|normalpdfthreadmargin|normalpdfthread|normalpdftexversion|normalpdftexrevision|normalpdftexbanner|normalpdfsuppressptexinfo|normalpdfsuppressoptionalinfo|normalpdfstartthread|normalpdfstartlink|normalpdfsetrandomseed|normalpdfsetmatrix|normalpdfsavepos|normalpdfsave|normalpdfretval|normalpdfrestore|normalpdfreplacefont|normalpdfrefximage|normalpdfrefxform|normalpdfrefobj|normalpdfrecompress|normalpdfrandomseed|normalpdfpxdimen|normalpdfprotrudechars|normalpdfprimitive|normalpdfpkresolution|normalpdfpkmode|normalpdfpkfixeddpi|normalpdfpagewidth|normalpdfpagesattr|normalpdfpageresources|normalpdfpageref|normalpdfpageheight|normalpdfpagebox|normalpdfpageattr|normalpdfoutput|normalpdfoutline|normalpdfomitcidset|normalpdfomitcharset|normalpdfobjcompresslevel|normalpdfobj|normalpdfnormaldeviate|normalpdfnoligatures|normalpdfnames|normalpdfminorversion|normalpdfmapline|normalpdfmapfile|normalpdfmajorversion|normalpdfliteral|normalpdflinkmargin|normalpdflastypos|normalpdflastxpos|normalpdflastximagepages|normalpdflastximage|normalpdflastxform|normalpdflastobj|normalpdflastlink|normalpdflastlinedepth|normalpdflastannot|normalpdfinsertht|normalpdfinfoomitdate|normalpdfinfo|normalpdfinclusionerrorlevel|normalpdfinclusioncopyfonts|normalpdfincludechars|normalpdfimageresolution|normalpdfimagehicolor|normalpdfimagegamma|normalpdfimageapplygamma|normalpdfimageaddfilename|normalpdfignoreunknownimages|normalpdfignoreddimen|normalpdfhorigin|normalpdfglyphtounicode|normalpdfgentounicode|normalpdfgamma|normalpdffontsize|normalpdffontobjnum|normalpdffontname|normalpdffontexpand|normalpdffontattr|normalpdffirstlineheight|normalpdffeedback|normalpdfextension|normalpdfendthread|normalpdfendlink|normalpdfeachlineheight|normalpdfeachlinedepth|normalpdfdraftmode|normalpdfdestmargin|normalpdfdest|normalpdfdecimaldigits|normalpdfcreationdate|normalpdfcopyfont|normalpdfcompresslevel|normalpdfcolorstackinit|normalpdfcolorstack|normalpdfcatalog|normalpdfannot|normalpdfadjustspacing|normalpausing|normalpatterns|normalparskip|normalparshapelength|normalparshapeindent|normalparshapedimen|normalparshape|normalparindent|normalparfillskip|normalpardirection|normalpardir|normalpar|normalpagewidth|normalpagetotal|normalpagetopoffset|normalpagestretch|normalpageshrink|normalpagerightoffset|normalpageleftoffset|normalpageheight|normalpagegoal|normalpagefilstretch|normalpagefillstretch|normalpagefilllstretch|normalpagediscards|normalpagedirection|normalpagedir|normalpagedepth|normalpagebottomoffset|normaloverwithdelims|normaloverline|normaloverfullrule|normalover|normaloutputpenalty|normaloutputmode|normaloutputbox|normaloutput|normalouter|normalor|normalopenout|normalopenin|normalomit|normalnumexpr|normalnumber|normalnullfont|normalnulldelimiterspace|normalnovrule|normalnospaces|normalnormaldeviate|normalnonstopmode|normalnonscript|normalnolimits|normalnoligs|normalnokerns|normalnoindent|normalnohrule|normalnoexpand|normalnoboundary|normalnoalign|normalnewlinechar|normalmutoglue|normalmuskipdef|normalmuskip|normalmultiply|normalmuexpr|normalmskip|normalmoveright|normalmoveleft|normalmonth|normalmkern|normalmiddle|normalmessage|normalmedmuskip|normalmeaning|normalmaxdepth|normalmaxdeadcycles|normalmathsurroundskip|normalmathsurroundmode|normalmathsurround|normalmathstyle|normalmathscriptsmode|normalmathscriptcharmode|normalmathscriptboxmode|normalmathrulethicknessmode|normalmathrulesmode|normalmathrulesfam|normalmathrel|normalmathpunct|normalmathpenaltiesmode|normalmathord|normalmathoption|normalmathopen|normalmathop|normalmathnolimitsmode|normalmathitalicsmode|normalmathinner|normalmathflattenmode|normalmatheqnogapstep|normalmathdisplayskipmode|normalmathdirection|normalmathdir|normalmathdelimitersmode|normalmathcode|normalmathclose|normalmathchoice|normalmathchardef|normalmathchar|normalmathbin|normalmathaccent|normalmarks|normalmark|normalmag|normalluatexversion|normalluatexrevision|normalluatexbanner|normalluafunctioncall|normalluafunction|normalluaescapestring|normalluadef|normalluacopyinputnodes|normalluabytecodecall|normalluabytecode|normallpcode|normallowercase|normallower|normallooseness|normallong|normallocalrightbox|normallocalleftbox|normallocalinterlinepenalty|normallocalbrokenpenalty|normallinepenalty|normallinedirection|normallinedir|normallimits|normalletterspacefont|normalletcharcode|normallet|normalleqno|normalleftskip|normalleftmarginkern|normallefthyphenmin|normalleftghost|normalleft|normalleaders|normallccode|normallateluafunction|normallatelua|normallastypos|normallastxpos|normallastskip|normallastsavedimageresourcepages|normallastsavedimageresourceindex|normallastsavedboxresourceindex|normallastpenalty|normallastnodetype|normallastnamedcs|normallastlinefit|normallastkern|normallastbox|normallanguage|normalkern|normaljobname|normalinterlinepenalty|normalinterlinepenalties|normalinteractionmode|normalinsertpenalties|normalinsertht|normalinsert|normalinputlineno|normalinput|normalinitcatcodetable|normalindent|normalimmediateassignment|normalimmediateassigned|normalimmediate|normalignorespaces|normalignoreligaturesinfont|normalifx|normalifvoid|normalifvmode|normalifvbox|normaliftrue|normalifprimitive|normalifpdfprimitive|normalifpdfabsnum|normalifpdfabsdim|normalifodd|normalifnum|normalifmmode|normalifinner|normalifincsname|normalifhmode|normalifhbox|normaliffontchar|normaliffalse|normalifeof|normalifdim|normalifdefined|normalifcsname|normalifcondition|normalifcat|normalifcase|normalifabsnum|normalifabsdim|normalif|normalhyphenpenaltymode|normalhyphenpenalty|normalhyphenchar|normalhyphenationmin|normalhyphenationbounds|normalhyphenation|normalht|normalhss|normalhskip|normalhsize|normalhrule|normalhpack|normalholdinginserts|normalhoffset|normalhjcode|normalhfuzz|normalhfilneg|normalhfill|normalhfil|normalhbox|normalhbadness|normalhangindent|normalhangafter|normalhalign|normalgtokspre|normalgtoksapp|normalgluetomu|normalgluestretchorder|normalgluestretch|normalglueshrinkorder|normalglueshrink|normalglueexpr|normalglobaldefs|normalglobal|normalglet|normalgleaders|normalgdef|normalfuturelet|normalfutureexpandis|normalfutureexpand|normalformatname|normalfontname|normalfontid|normalfontdimen|normalfontcharwd|normalfontcharic|normalfontcharht|normalfontchardp|normalfont|normalfloatingpenalty|normalfixupboxesmode|normalfirstvalidlanguage|normalfirstmarks|normalfirstmark|normalfinalhyphendemerits|normalfi|normalfam|normalexplicithyphenpenalty|normalexplicitdiscretionary|normalexpandglyphsinfont|normalexpanded|normalexpandafter|normalexhyphenpenalty|normalexhyphenchar|normalexceptionpenalty|normaleveryvbox|normaleverypar|normaleverymath|normaleveryjob|normaleveryhbox|normaleveryeof|normaleverydisplay|normaleverycr|normaletokspre|normaletoksapp|normalescapechar|normalerrorstopmode|normalerrorcontextlines|normalerrmessage|normalerrhelp|normaleqno|normalendlocalcontrol|normalendlinechar|normalendinput|normalendgroup|normalendcsname|normalend|normalemergencystretch|normalelse|normalefcode|normaledef|normaleTeXversion|normaleTeXrevision|normaleTeXminorversion|normaleTeXVersion|normaldvivariable|normaldvifeedback|normaldviextension|normaldump|normaldraftmode|normaldp|normaldoublehyphendemerits|normaldivide|normaldisplaywidth|normaldisplaywidowpenalty|normaldisplaywidowpenalties|normaldisplaystyle|normaldisplaylimits|normaldisplayindent|normaldiscretionary|normaldirectlua|normaldimexpr|normaldimendef|normaldimen|normaldeviate|normaldetokenize|normaldelimitershortfall|normaldelimiterfactor|normaldelimiter|normaldelcode|normaldefaultskewchar|normaldefaulthyphenchar|normaldef|normaldeadcycles|normalday|normalcurrentiftype|normalcurrentiflevel|normalcurrentifbranch|normalcurrentgrouptype|normalcurrentgrouplevel|normalcsstring|normalcsname|normalcrcr|normalcrampedtextstyle|normalcrampedscriptstyle|normalcrampedscriptscriptstyle|normalcrampeddisplaystyle|normalcr|normalcountdef|normalcount|normalcopyfont|normalcopy|normalcompoundhyphenmode|normalclubpenalty|normalclubpenalties|normalcloseout|normalclosein|normalclearmarks|normalcleaders|normalchardef|normalchar|normalcatcodetable|normalcatcode|normalbrokenpenalty|normalbreakafterdirmode|normalboxmaxdepth|normalboxdirection|normalboxdir|normalbox|normalboundary|normalbotmarks|normalbotmark|normalbodydirection|normalbodydir|normalbinoppenalty|normalbelowdisplayskip|normalbelowdisplayshortskip|normalbegingroup|normalbegincsname|normalbatchmode|normalbadness|normalautomatichyphenpenalty|normalautomatichyphenmode|normalautomaticdiscretionary|normalattributedef|normalattribute|normalatopwithdelims|normalatop|normalaligntab|normalalignmark|normalaftergroup|normalafterassignment|normaladvance|normaladjustspacing|normaladjdemerits|normalaccent|normalabovewithdelims|normalabovedisplayskip|normalabovedisplayshortskip|normalabove|normalXeTeXversion|normalUvextensible|normalUunderdelimiter|normalUsuperscript|normalUsubscript|normalUstopmath|normalUstopdisplaymath|normalUstartmath|normalUstartdisplaymath|normalUstack|normalUskewedwithdelims|normalUskewed|normalUroot|normalUright|normalUradical|normalUoverdelimiter|normalUnosuperscript|normalUnosubscript|normalUmiddle|normalUmathunderdelimitervgap|normalUmathunderdelimiterbgap|normalUmathunderbarvgap|normalUmathunderbarrule|normalUmathunderbarkern|normalUmathsupsubbottommax|normalUmathsupshiftup|normalUmathsupshiftdrop|normalUmathsupbottommin|normalUmathsubtopmax|normalUmathsubsupvgap|normalUmathsubsupshiftdown|normalUmathsubshiftdrop|normalUmathsubshiftdown|normalUmathstackvgap|normalUmathstacknumup|normalUmathstackdenomdown|normalUmathspaceafterscript|normalUmathskewedfractionvgap|normalUmathskewedfractionhgap|normalUmathrelrelspacing|normalUmathrelpunctspacing|normalUmathrelordspacing|normalUmathrelopspacing|normalUmathrelopenspacing|normalUmathrelinnerspacing|normalUmathrelclosespacing|normalUmathrelbinspacing|normalUmathradicalvgap|normalUmathradicalrule|normalUmathradicalkern|normalUmathradicaldegreeraise|normalUmathradicaldegreebefore|normalUmathradicaldegreeafter|normalUmathquad|normalUmathpunctrelspacing|normalUmathpunctpunctspacing|normalUmathpunctordspacing|normalUmathpunctopspacing|normalUmathpunctopenspacing|normalUmathpunctinnerspacing|normalUmathpunctclosespacing|normalUmathpunctbinspacing|normalUmathoverdelimitervgap|normalUmathoverdelimiterbgap|normalUmathoverbarvgap|normalUmathoverbarrule|normalUmathoverbarkern|normalUmathordrelspacing|normalUmathordpunctspacing|normalUmathordordspacing|normalUmathordopspacing|normalUmathordopenspacing|normalUmathordinnerspacing|normalUmathordclosespacing|normalUmathordbinspacing|normalUmathoprelspacing|normalUmathoppunctspacing|normalUmathopordspacing|normalUmathopopspacing|normalUmathopopenspacing|normalUmathopinnerspacing|normalUmathoperatorsize|normalUmathopenrelspacing|normalUmathopenpunctspacing|normalUmathopenordspacing|normalUmathopenopspacing|normalUmathopenopenspacing|normalUmathopeninnerspacing|normalUmathopenclosespacing|normalUmathopenbinspacing|normalUmathopclosespacing|normalUmathopbinspacing|normalUmathnolimitsupfactor|normalUmathnolimitsubfactor|normalUmathlimitbelowvgap|normalUmathlimitbelowkern|normalUmathlimitbelowbgap|normalUmathlimitabovevgap|normalUmathlimitabovekern|normalUmathlimitabovebgap|normalUmathinnerrelspacing|normalUmathinnerpunctspacing|normalUmathinnerordspacing|normalUmathinneropspacing|normalUmathinneropenspacing|normalUmathinnerinnerspacing|normalUmathinnerclosespacing|normalUmathinnerbinspacing|normalUmathfractionrule|normalUmathfractionnumvgap|normalUmathfractionnumup|normalUmathfractiondenomvgap|normalUmathfractiondenomdown|normalUmathfractiondelsize|normalUmathconnectoroverlapmin|normalUmathcodenum|normalUmathcode|normalUmathcloserelspacing|normalUmathclosepunctspacing|normalUmathcloseordspacing|normalUmathcloseopspacing|normalUmathcloseopenspacing|normalUmathcloseinnerspacing|normalUmathcloseclosespacing|normalUmathclosebinspacing|normalUmathcharslot|normalUmathcharnumdef|normalUmathcharnum|normalUmathcharfam|normalUmathchardef|normalUmathcharclass|normalUmathchar|normalUmathbinrelspacing|normalUmathbinpunctspacing|normalUmathbinordspacing|normalUmathbinopspacing|normalUmathbinopenspacing|normalUmathbininnerspacing|normalUmathbinclosespacing|normalUmathbinbinspacing|normalUmathaxis|normalUmathaccent|normalUleft|normalUhextensible|normalUdelimiterunder|normalUdelimiterover|normalUdelimiter|normalUdelcodenum|normalUdelcode|normalUchar|normalOmegaversion|normalOmegarevision|normalOmegaminorversion|normalAlephversion|normalAlephrevision|normalAlephminorversion|normal |nonstopmode|nonscript|nolimits|noligs|nokerns|noindent|nohrule|noexpand|noboundary|noalign|newlinechar|mutoglue|muskipdef|muskip|multiply|muexpr|mskip|moveright|moveleft|month|mkern|middle|message|medmuskip|meaning|maxdepth|maxdeadcycles|mathsurroundskip|mathsurroundmode|mathsurround|mathstyle|mathscriptsmode|mathscriptcharmode|mathscriptboxmode|mathrulethicknessmode|mathrulesmode|mathrulesfam|mathrel|mathpunct|mathpenaltiesmode|mathord|mathoption|mathopen|mathop|mathnolimitsmode|mathitalicsmode|mathinner|mathflattenmode|matheqnogapstep|mathdisplayskipmode|mathdirection|mathdir|mathdelimitersmode|mathcode|mathclose|mathchoice|mathchardef|mathchar|mathbin|mathaccent|marks|mark|mag|luatexversion|luatexrevision|luatexbanner|luafunctioncall|luafunction|luaescapestring|luadef|luacopyinputnodes|luabytecodecall|luabytecode|lpcode|lowercase|lower|looseness|long|localrightbox|localleftbox|localinterlinepenalty|localbrokenpenalty|lineskiplimit|lineskip|linepenalty|linedirection|linedir|limits|letterspacefont|letcharcode|let|leqno|leftskip|leftmarginkern|lefthyphenmin|leftghost|left|leaders|lccode|lateluafunction|latelua|lastypos|lastxpos|lastskip|lastsavedimageresourcepages|lastsavedimageresourceindex|lastsavedboxresourceindex|lastpenalty|lastnodetype|lastnamedcs|lastlinefit|lastkern|lastbox|language|kern|jobname|interlinepenalty|interlinepenalties|interactionmode|insertpenalties|insertht|insert|inputlineno|input|initcatcodetable|indent|immediateassignment|immediateassigned|immediate|ignorespaces|ignoreligaturesinfont|ifx|ifvoid|ifvmode|ifvbox|iftrue|ifprimitive|ifpdfprimitive|ifpdfabsnum|ifpdfabsdim|ifodd|ifnum|ifmmode|ifinner|ifincsname|ifhmode|ifhbox|iffontchar|iffalse|ifeof|ifdim|ifdefined|ifcsname|ifcondition|ifcat|ifcase|ifabsnum|ifabsdim|if|hyphenpenaltymode|hyphenpenalty|hyphenchar|hyphenationmin|hyphenationbounds|hyphenation|ht|hss|hskip|hsize|hrule|hpack|holdinginserts|hoffset|hjcode|hfuzz|hfilneg|hfill|hfil|hbox|hbadness|hangindent|hangafter|halign|gtokspre|gtoksapp|gluetomu|gluestretchorder|gluestretch|glueshrinkorder|glueshrink|glueexpr|globaldefs|global|gleaders|gdef|futurelet|futureexpandis|futureexpand|formatname|fontname|fontid|fontdimen|fontcharwd|fontcharic|fontcharht|fontchardp|font|floatingpenalty|fixupboxesmode|firstvalidlanguage|firstmarks|firstmark|finalhyphendemerits|fi|fam|explicithyphenpenalty|explicitdiscretionary|expandglyphsinfont|expandafter|exhyphenpenalty|exhyphenchar|exceptionpenalty|everyvbox|everypar|everymath|everyjob|everyhbox|everyeof|everydisplay|everycr|etokspre|etoksapp|escapechar|errorstopmode|errorcontextlines|errmessage|errhelp|eqno|endlocalcontrol|endlinechar|endinput|endgroup|endcsname|end|emergencystretch|else|efcode|edef|eTeXversion|eTeXrevision|eTeXminorversion|eTeXVersion|dvivariable|dvifeedback|dviextension|dump|draftmode|dp|doublehyphendemerits|divide|displaywidth|displaywidowpenalty|displaywidowpenalties|displaystyle|displaylimits|displayindent|discretionary|directlua|dimexpr|dimendef|dimen|detokenize|delimitershortfall|delimiterfactor|delimiter|delcode|defaultskewchar|defaulthyphenchar|def|deadcycles|day|currentiftype|currentiflevel|currentifbranch|currentgrouptype|currentgrouplevel|csstring|csname|crcr|crampedtextstyle|crampedscriptstyle|crampedscriptscriptstyle|crampeddisplaystyle|cr|countdef|count|copyfont|copy|compoundhyphenmode|clubpenalty|clubpenalties|closeout|closein|clearmarks|cleaders|chardef|char|catcodetable|catcode|brokenpenalty|breakafterdirmode|boxmaxdepth|boxdirection|boxdir|box|boundary|botmarks|botmark|bodydirection|bodydir|binoppenalty|belowdisplayskip|belowdisplayshortskip|begingroup|begincsname|batchmode|baselineskip|badness|automatichyphenpenalty|automatichyphenmode|automaticdiscretionary|attributedef|attribute|atopwithdelims|atop|aligntab|alignmark|aftergroup|afterassignment|advance|adjustspacing|adjdemerits|accent|abovewithdelims|abovedisplayskip|abovedisplayshortskip|above|XeTeXversion|Uvextensible|Uunderdelimiter|Usuperscript|Usubscript|Ustopmath|Ustopdisplaymath|Ustartmath|Ustartdisplaymath|Ustack|Uskewedwithdelims|Uskewed|Uroot|Uright|Uradical|Uoverdelimiter|Unosuperscript|Unosubscript|Umiddle|Umathunderdelimitervgap|Umathunderdelimiterbgap|Umathunderbarvgap|Umathunderbarrule|Umathunderbarkern|Umathsupsubbottommax|Umathsupshiftup|Umathsupshiftdrop|Umathsupbottommin|Umathsubtopmax|Umathsubsupvgap|Umathsubsupshiftdown|Umathsubshiftdrop|Umathsubshiftdown|Umathstackvgap|Umathstacknumup|Umathstackdenomdown|Umathspaceafterscript|Umathskewedfractionvgap|Umathskewedfractionhgap|Umathrelrelspacing|Umathrelpunctspacing|Umathrelordspacing|Umathrelopspacing|Umathrelopenspacing|Umathrelinnerspacing|Umathrelclosespacing|Umathrelbinspacing|Umathradicalvgap|Umathradicalrule|Umathradicalkern|Umathradicaldegreeraise|Umathradicaldegreebefore|Umathradicaldegreeafter|Umathquad|Umathpunctrelspacing|Umathpunctpunctspacing|Umathpunctordspacing|Umathpunctopspacing|Umathpunctopenspacing|Umathpunctinnerspacing|Umathpunctclosespacing|Umathpunctbinspacing|Umathoverdelimitervgap|Umathoverdelimiterbgap|Umathoverbarvgap|Umathoverbarrule|Umathoverbarkern|Umathordrelspacing|Umathordpunctspacing|Umathordordspacing|Umathordopspacing|Umathordopenspacing|Umathordinnerspacing|Umathordclosespacing|Umathordbinspacing|Umathoprelspacing|Umathoppunctspacing|Umathopordspacing|Umathopopspacing|Umathopopenspacing|Umathopinnerspacing|Umathoperatorsize|Umathopenrelspacing|Umathopenpunctspacing|Umathopenordspacing|Umathopenopspacing|Umathopenopenspacing|Umathopeninnerspacing|Umathopenclosespacing|Umathopenbinspacing|Umathopclosespacing|Umathopbinspacing|Umathnolimitsupfactor|Umathnolimitsubfactor|Umathlimitbelowvgap|Umathlimitbelowkern|Umathlimitbelowbgap|Umathlimitabovevgap|Umathlimitabovekern|Umathlimitabovebgap|Umathinnerrelspacing|Umathinnerpunctspacing|Umathinnerordspacing|Umathinneropspacing|Umathinneropenspacing|Umathinnerinnerspacing|Umathinnerclosespacing|Umathinnerbinspacing|Umathfractionrule|Umathfractionnumvgap|Umathfractionnumup|Umathfractiondenomvgap|Umathfractiondenomdown|Umathfractiondelsize|Umathconnectoroverlapmin|Umathcodenum|Umathcode|Umathcloserelspacing|Umathclosepunctspacing|Umathcloseordspacing|Umathcloseopspacing|Umathcloseopenspacing|Umathcloseinnerspacing|Umathcloseclosespacing|Umathclosebinspacing|Umathcharslot|Umathcharnumdef|Umathcharnum|Umathcharfam|Umathchardef|Umathcharclass|Umathchar|Umathbinrelspacing|Umathbinpunctspacing|Umathbinordspacing|Umathbinopspacing|Umathbinopenspacing|Umathbininnerspacing|Umathbinclosespacing|Umathbinbinspacing|Umathaxis|Umathaccent|Uleft|Uhextensible|Udelimiterunder|Udelimiterover|Udelimiter|Udelcodenum|Udelcode|Uchar|Omegaversion|Omegarevision|Omegaminorversion|Alephversion|Alephrevision|Alephminorversion| )(?=[^a-zA-Z])",
+ "name" : "context.primitive.commands.primitive.tex"
+ },
+ "reserved" : {
+ "match" : "\u005C\u005C(\u005C?\u005C?|[a-z]\u005C!)[a-zA-Z\u005C_@!?-ÿ]+",
+ "name" : "context.reserved.commands.reserved.tex"
+ },
+ "special" : {
+ "match" : "\u005C]|\u005C[|>|=|<|\u005C)|\u005C(|#|\u005C\u0022",
+ "name" : "context.special.symbols.special.tex"
+ },
+ "subsystem_prefix" : {
+ "match" : "\u005C\u005C(btx|xml)[a-z]+",
+ "name" : "context.embedded.subsystem.prefix.tex"
+ },
+ "subsystem_suffix" : {
+ "match" : "\u005C\u005C[a-z]+(btx|xml)[a-z]*",
+ "name" : "context.embedded.subsystem.suffix.tex"
+ }
+ },
+ "scopeName" : "source.context.tex",
+ "version" : "1.0.0"
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-xml.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-xml.json
new file mode 100644
index 000000000..945647169
--- /dev/null
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-xml.json
@@ -0,0 +1,222 @@
+{
+ "name" : "context.xml",
+ "patterns" : [
+ {
+ "include" : "#comment"
+ },
+ {
+ "include" : "#cdata"
+ },
+ {
+ "include" : "#instruction_xml"
+ },
+ {
+ "include" : "#instruction_lua"
+ },
+ {
+ "include" : "#instruction"
+ },
+ {
+ "include" : "#close"
+ },
+ {
+ "include" : "#open"
+ },
+ {
+ "include" : "#element_error"
+ },
+ {
+ "include" : "#entity"
+ }
+ ],
+ "repository" : {
+ "attribute_double" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.plain.attribute.double.namespace.xml"
+ },
+ "2" : {
+ "name" : "context.constant.attribute.double.name.xml"
+ },
+ "3" : {
+ "name" : "context.special.attribute.double.open.xml"
+ },
+ "4" : {
+ "name" : "context.string.attribute.double.text.xml"
+ },
+ "5" : {
+ "name" : "context.special.attribute.double.close.xml"
+ }
+ },
+ "match" : "((?:[-\u005Cw.]+:)?)([-\u005Cw.:]+)\u005Cs*=\u005Cs*(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)"
+ },
+ "attribute_single" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.plain.attribute.single.namespace.xml"
+ },
+ "2" : {
+ "name" : "context.constant.attribute.single.name.xml"
+ },
+ "3" : {
+ "name" : "context.special.attribute.single.open.xml"
+ },
+ "4" : {
+ "name" : "context.string.attribute.single.text.xml"
+ },
+ "5" : {
+ "name" : "context.special.attribute.single.close.xml"
+ }
+ },
+ "match" : "((?:[-\u005Cw.]+:)?)([-\u005Cw.:]+)\u005Cs*=\u005Cs*(')((?:\u005C\u005C'|[^'])*)(')"
+ },
+ "attributes" : {
+ "patterns" : [
+ {
+ "include" : "#attribute_double"
+ },
+ {
+ "include" : "#attribute_single"
+ }
+ ]
+ },
+ "cdata" : {
+ "begin" : "<!\u005C[CDATA\u005C[",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.command.cdata.open.xml"
+ }
+ },
+ "end" : "]]>",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.command.cdata.close.xml"
+ }
+ },
+ "name" : "context.default.cdata.text.xml"
+ },
+ "close" : {
+ "captures" : {
+ "1" : {
+ "name" : "context.keyword.close.open.xml"
+ },
+ "2" : {
+ "name" : "context.plain.close.namespace.xml"
+ },
+ "3" : {
+ "name" : "context.keyword.close.name.xml"
+ },
+ "4" : {
+ "name" : "context.keyword.close.close.xml"
+ }
+ },
+ "match" : "(</)((?:[-\u005Cw.]+:)?)([-\u005Cw.:]+)\u005Cs*(>)"
+ },
+ "comment" : {
+ "begin" : "<!--",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.command.comment.open.xml"
+ }
+ },
+ "end" : "-->",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.command.comment.close.xml"
+ }
+ },
+ "name" : "context.comment.comment.text.xml"
+ },
+ "element_error" : {
+ "match" : "<?:([^>]*)>",
+ "name" : "context.error.error.xml"
+ },
+ "entity" : {
+ "match" : "&.*?;",
+ "name" : "context.constant.entity.xml"
+ },
+ "instruction" : {
+ "begin" : "<\u005C?[-\u005Cw.:]+",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.command.instruction.open.xml"
+ }
+ },
+ "end" : "\u005C?>",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.command.instruction.close.xml"
+ }
+ },
+ "name" : "context.default.instruction.text.xml"
+ },
+ "instruction_lua" : {
+ "begin" : "<\u005C?lua",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.command.instruction.lua.open.xml"
+ }
+ },
+ "end" : "\u005C?>",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.command.instruction.lua.close.xml"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "source.context.cld"
+ }
+ ]
+ },
+ "instruction_xml" : {
+ "begin" : "<\u005C?xml",
+ "beginCaptures" : {
+ "0" : {
+ "name" : "context.command.instruction.xml.open.xml"
+ }
+ },
+ "end" : "\u005C?>",
+ "endCaptures" : {
+ "0" : {
+ "name" : "context.command.instruction.xml.close.xml"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "#attributes"
+ }
+ ]
+ },
+ "open" : {
+ "begin" : "(<)((?:[-\u005Cw.]+:)?)([-\u005Cw.:]+)",
+ "beginCaptures" : {
+ "1" : {
+ "name" : "context.keyword.open.open.xml"
+ },
+ "2" : {
+ "name" : "context.plain.open.namespace.xml"
+ },
+ "3" : {
+ "name" : "context.keyword.open.name.xml"
+ }
+ },
+ "end" : "(/?)(>)",
+ "endCaptures" : {
+ "1" : {
+ "name" : "context.keyword.open.empty.xml"
+ },
+ "2" : {
+ "name" : "context.keyword.open.close.xml"
+ }
+ },
+ "patterns" : [
+ {
+ "include" : "#attributes"
+ }
+ ]
+ }
+ },
+ "scopeName" : "source.context.xml",
+ "version" : "1.0.0"
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/tasks/context.json b/context/data/vscode/extensions/context/tasks/context.json
new file mode 100644
index 000000000..13f75c188
--- /dev/null
+++ b/context/data/vscode/extensions/context/tasks/context.json
@@ -0,0 +1,73 @@
+{
+ "name" : "context",
+ "tasks" : [
+ {
+ "command" : "context --autogenerate --autopdf ${file}",
+ "group" : "build",
+ "label" : "process tex file",
+ "presentation" : {
+ "clear" : true,
+ "echo" : true,
+ "focus" : false,
+ "panel" : "shared",
+ "reveal" : "always",
+ "showReuseMessage" : false
+ },
+ "type" : "shell",
+ "windows" : {
+ "command" : "chcp 65001 ; context.exe --autogenerate --autopdf ${file}"
+ }
+ },
+ {
+ "command" : "mtxrun --autogenerate --script check ${file}",
+ "group" : "build",
+ "label" : "check tex file",
+ "presentation" : {
+ "clear" : true,
+ "echo" : true,
+ "focus" : false,
+ "panel" : "shared",
+ "reveal" : "always",
+ "showReuseMessage" : false
+ },
+ "type" : "shell",
+ "windows" : {
+ "command" : "chcp 65001 ; mtxrun.exe --autogenerate --script check ${file}"
+ }
+ },
+ {
+ "command" : "mtxrun --script fonts --reload --force",
+ "group" : "build",
+ "label" : "identify fonts",
+ "presentation" : {
+ "clear" : true,
+ "echo" : true,
+ "focus" : false,
+ "panel" : "shared",
+ "reveal" : "always",
+ "showReuseMessage" : false
+ },
+ "type" : "shell",
+ "windows" : {
+ "command" : "chcp 65001 ; mtxrun.exe --script fonts --reload --force"
+ }
+ },
+ {
+ "command" : "mtxrun --script ${file}",
+ "group" : "build",
+ "label" : "process lua file",
+ "presentation" : {
+ "clear" : true,
+ "echo" : true,
+ "focus" : false,
+ "panel" : "shared",
+ "reveal" : "always",
+ "showReuseMessage" : false
+ },
+ "type" : "shell",
+ "windows" : {
+ "command" : "chcp 65001 ; mtxrun.exe --script ${file}"
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/themes/context.json b/context/data/vscode/extensions/context/themes/context.json
new file mode 100644
index 000000000..3bdd52fe6
--- /dev/null
+++ b/context/data/vscode/extensions/context/themes/context.json
@@ -0,0 +1,356 @@
+{
+ "$schema" : "vscode://schemas/color-theme",
+ "colors" : {
+ "activityBar.background" : "#000000",
+ "editor.background" : "#CFCFCF",
+ "editor.foreground" : "#000000",
+ "editor.lineHighlightBackground" : "#CFCFCF",
+ "editorBracketMatch.background" : "#CFCFCF",
+ "editorBracketMatch.border" : "#B07F00",
+ "editorIndentGuide.background" : "#CFCFCF",
+ "editorLineNumber.foreground" : "#000000",
+ "focusBorder" : "#000000",
+ "notification.background" : "#000000",
+ "sideBar.background" : "#A7A7A7",
+ "sideBar.border" : "#FFFFFF",
+ "sideBar.foreground" : "#000000",
+ "sideBarSectionHeader.background" : "#A7A7A7",
+ "sideBarSectionHeader.foreground" : "#000000",
+ "sideBarTitle.foreground" : "#000000",
+ "statusBar.background" : "#A7A7A7",
+ "statusBar.border" : "#FFFFFF",
+ "statusBar.debuggingBackground" : "#A7A7A7",
+ "statusBar.debuggingForeground" : "#000000",
+ "statusBar.foreground" : "#000000",
+ "statusBar.noFolderBackground" : "#A7A7A7",
+ "statusBar.noFolderForeground" : "#000000"
+ },
+ "name" : "context",
+ "tokenColors" : [
+ {
+ "scope" : "context.whitespace",
+ },
+ {
+ "scope" : "context.default",
+ "settings" : {
+ "foreground" : "#000000"
+ }
+ },
+ {
+ "scope" : "context.number",
+ "settings" : {
+ "foreground" : "#007F7F"
+ }
+ },
+ {
+ "scope" : "context.comment",
+ "settings" : {
+ "foreground" : "#7F7F00"
+ }
+ },
+ {
+ "scope" : "context.keyword",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#00007F"
+ }
+ },
+ {
+ "scope" : "context.string",
+ "settings" : {
+ "foreground" : "#7F007F"
+ }
+ },
+ {
+ "scope" : "context.error",
+ "settings" : {
+ "foreground" : "#7F0000"
+ }
+ },
+ {
+ "scope" : "context.label",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#7F0000"
+ }
+ },
+ {
+ "scope" : "context.nothing",
+ },
+ {
+ "scope" : "context.class",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#000000"
+ }
+ },
+ {
+ "scope" : "context.function",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#000000"
+ }
+ },
+ {
+ "scope" : "context.constant",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#007F7F"
+ }
+ },
+ {
+ "scope" : "context.operator",
+ "settings" : {
+ "foreground" : "#00007F"
+ }
+ },
+ {
+ "scope" : "context.regex",
+ "settings" : {
+ "foreground" : "#7F007F"
+ }
+ },
+ {
+ "scope" : "context.preprocessor",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#7F7F00"
+ }
+ },
+ {
+ "scope" : "context.tag",
+ "settings" : {
+ "foreground" : "#007F7F"
+ }
+ },
+ {
+ "scope" : "context.type",
+ "settings" : {
+ "foreground" : "#00007F"
+ }
+ },
+ {
+ "scope" : "context.variable",
+ "settings" : {
+ "foreground" : "#000000"
+ }
+ },
+ {
+ "scope" : "context.identifier",
+ },
+ {
+ "scope" : "context.linenumber",
+ "settings" : {
+ "background" : "#A7A7A7"
+ }
+ },
+ {
+ "scope" : "context.bracelight",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#B07F00"
+ }
+ },
+ {
+ "scope" : "context.bracebad",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#B07F00"
+ }
+ },
+ {
+ "scope" : "context.controlchar",
+ },
+ {
+ "scope" : "context.indentguide",
+ "settings" : {
+ "foreground" : "#A7A7A7"
+ }
+ },
+ {
+ "scope" : "context.calltip",
+ "settings" : {
+ "foreground" : "#FFFFFF"
+ }
+ },
+ {
+ "scope" : "context.invisible",
+ "settings" : {
+ "background" : "#B07F00"
+ }
+ },
+ {
+ "scope" : "context.quote",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#00007F"
+ }
+ },
+ {
+ "scope" : "context.special",
+ "settings" : {
+ "foreground" : "#00007F"
+ }
+ },
+ {
+ "scope" : "context.extra",
+ "settings" : {
+ "foreground" : "#7F7F00"
+ }
+ },
+ {
+ "scope" : "context.embedded",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#000000"
+ }
+ },
+ {
+ "scope" : "context.char",
+ "settings" : {
+ "foreground" : "#7F007F"
+ }
+ },
+ {
+ "scope" : "context.reserved",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#7F007F"
+ }
+ },
+ {
+ "scope" : "context.definition",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#000000"
+ }
+ },
+ {
+ "scope" : "context.okay",
+ "settings" : {
+ "foreground" : "#4F4F4F"
+ }
+ },
+ {
+ "scope" : "context.warning",
+ "settings" : {
+ "foreground" : "#B07F00"
+ }
+ },
+ {
+ "scope" : "context.standout",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#B07F00"
+ }
+ },
+ {
+ "scope" : "context.command",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#007F00"
+ }
+ },
+ {
+ "scope" : "context.internal",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#B07F00"
+ }
+ },
+ {
+ "scope" : "context.preamble",
+ "settings" : {
+ "foreground" : "#7F7F00"
+ }
+ },
+ {
+ "scope" : "context.grouping",
+ "settings" : {
+ "foreground" : "#7F0000"
+ }
+ },
+ {
+ "scope" : "context.primitive",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#00007F"
+ }
+ },
+ {
+ "scope" : "context.plain",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#4F4F4F"
+ }
+ },
+ {
+ "scope" : "context.user",
+ "settings" : {
+ "foreground" : "#007F00"
+ }
+ },
+ {
+ "scope" : "context.data",
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#007F7F"
+ }
+ },
+ {
+ "scope" : "context.text",
+ "settings" : {
+ "foreground" : "#000000"
+ }
+ },
+ {
+ "scope" : [ "emphasis" ],
+ "settings" : {
+ "fontStyle" : "italic"
+ }
+ },
+ {
+ "scope" : [ "strong" ],
+ "settings" : {
+ "fontStyle" : "bold"
+ }
+ },
+ {
+ "scope" : [ "comment" ],
+ "settings" : {
+ "foreground" : "#000000"
+ }
+ },
+ {
+ "scope" : [ "string" ],
+ "settings" : {
+ "foreground" : "#7F007F"
+ }
+ },
+ {
+ "scope" : [ "constant.numeric", "constant.language.null", "variable.language.this", "support.type.primitive", "support.function", "support.variable.dom", "support.variable.property", "support.variable.property", "meta.property-name", "meta.property-value", "support.constant.handlebars" ],
+ "settings" : {
+ "foreground" : "#007F7F"
+ }
+ },
+ {
+ "scope" : [ "keyword", "storage.modifier", "storage.type", "variable.parameter" ],
+ "settings" : {
+ "fontStyle" : "bold",
+ "foreground" : "#00007F"
+ }
+ },
+ {
+ "scope" : [ "entity.name.type", "entity.other.inherited-class", "meta.function-call", "entity.other.attribute-name", "entity.name.function.shell" ],
+ "settings" : {
+ "foreground" : "#000000"
+ }
+ },
+ {
+ "scope" : [ "entity.name.tag" ],
+ "settings" : {
+ "foreground" : "#000000"
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/vscode-context.readme b/context/data/vscode/extensions/context/vscode-context.readme
new file mode 100644
index 000000000..dd7d37c87
--- /dev/null
+++ b/context/data/vscode/extensions/context/vscode-context.readme
@@ -0,0 +1,5 @@
+These files are generated. You can use these extensions with for instance:
+
+ code.exe --extensions-dir <someplace>/tex/texmf-context/context/data/vscode/extensions --install-extension context
+
+There are examples of scripts and keybindings too.
diff --git a/context/data/vscode/settings.json b/context/data/vscode/settings.json
new file mode 100644
index 000000000..f2c9ddf32
--- /dev/null
+++ b/context/data/vscode/settings.json
@@ -0,0 +1,45 @@
+{
+ "window.zoomLevel": 2,
+ "editor.renderWhitespace": "all",
+ "telemetry.enableCrashReporter": false,
+ "telemetry.enableTelemetry": false,
+ "editor.fontFamily": "Dejavu Sans Mono, Consolas, 'Courier New', monospace",
+ "window.autoDetectHighContrast": false,
+ "zenMode.hideLineNumbers": false,
+ "zenMode.centerLayout": false,
+ "zenMode.fullScreen": false,
+ "zenMode.hideTabs": false,
+ "workbench.editor.showIcons": false,
+ "workbench.settings.enableNaturalLanguageSearch": false,
+ "window.enableMenuBarMnemonics": false,
+ "search.location": "panel",
+ "breadcrumbs.enabled": false,
+ "workbench.activityBar.visible": false,
+ "editor.minimap.enabled": false,
+ "workbench.iconTheme": null,
+ "extensions.ignoreRecommendations": true,
+ "editor.renderControlCharacters": true,
+ "terminal.integrated.scrollback": 5000,
+ "workbench.colorTheme": "ConTeXt",
+ // "[context.pdf]": { "files.encoding": "cp1252"},
+ "terminal.integrated.fontSize": 10,
+ "terminal.integrated.rendererType": "dom",
+ "workbench.colorCustomizations": {
+ "terminal.ansiBlack": "#000000",
+ "terminal.ansiWhite": "#FFFFFF",
+ "terminal.ansiRed": "#7F0000",
+ "terminal.ansiGreen": "#007F00",
+ "terminal.ansiBlue": "#00007F",
+ "terminal.ansiMagenta": "#7F007F",
+ "terminal.ansiCyan": "#007F7F",
+ "terminal.ansiYellow": "#7F7F00",
+ "terminal.ansiBrightBlack": "#000000",
+ "terminal.ansiBrightWhite": "#FFFFFF",
+ "terminal.ansiBrightRed": "#7F0000",
+ "terminal.ansiBrightGreen": "#007F00",
+ "terminal.ansiBrightBlue": "#00007F",
+ "terminal.ansiBrightMagenta": "#7F007F",
+ "terminal.ansiBrightCyan": "#007F7F",
+ "terminal.ansiBrightYellow": "#7F7F00",
+ }
+}
diff --git a/context/data/vscode/vscode-context.cmd b/context/data/vscode/vscode-context.cmd
new file mode 100644
index 000000000..205d98af6
--- /dev/null
+++ b/context/data/vscode/vscode-context.cmd
@@ -0,0 +1,7 @@
+@echo off
+
+rem chcp 65001
+
+rem I need to figure ou thow to detach the instance
+
+start "vs code context" code --ignore-gpu-blacklist --reuse-window --extensions-dir %~dp0\extensions --install-extension context %* 2>&1 nul
diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf
index e9b94bb43..61e0cf7b5 100644
--- a/doc/context/documents/general/qrcs/setup-cs.pdf
+++ b/doc/context/documents/general/qrcs/setup-cs.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf
index 4ba3b0a32..0edc934d1 100644
--- a/doc/context/documents/general/qrcs/setup-de.pdf
+++ b/doc/context/documents/general/qrcs/setup-de.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf
index 04e0e44ae..ef4f960e6 100644
--- a/doc/context/documents/general/qrcs/setup-en.pdf
+++ b/doc/context/documents/general/qrcs/setup-en.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf
index d46684a10..edb05cdfa 100644
--- a/doc/context/documents/general/qrcs/setup-fr.pdf
+++ b/doc/context/documents/general/qrcs/setup-fr.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf
index 375e8d01f..739c973f3 100644
--- a/doc/context/documents/general/qrcs/setup-it.pdf
+++ b/doc/context/documents/general/qrcs/setup-it.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf
index eb8fa505c..1d52df51f 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-de.pdf b/doc/context/documents/general/qrcs/setup-mapping-de.pdf
index bf501cd33..efe344462 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-de.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-de.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-en.pdf b/doc/context/documents/general/qrcs/setup-mapping-en.pdf
index 09d3f9f31..75474f431 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-en.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-en.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf
index aee4ba76e..10ccf5725 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-it.pdf b/doc/context/documents/general/qrcs/setup-mapping-it.pdf
index 79b873b1d..8a59b1476 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-it.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-it.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf
index 0c7ee821e..ba41f79c7 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf
index 618bb2025..213394b22 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf
index d5d371ec8..06fc8f12e 100644
--- a/doc/context/documents/general/qrcs/setup-nl.pdf
+++ b/doc/context/documents/general/qrcs/setup-nl.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf
index 25a54cbfb..4d7712f17 100644
--- a/doc/context/documents/general/qrcs/setup-ro.pdf
+++ b/doc/context/documents/general/qrcs/setup-ro.pdf
Binary files differ
diff --git a/doc/context/scripts/mkiv/mtx-vscode.html b/doc/context/scripts/mkiv/mtx-vscode.html
new file mode 100644
index 000000000..32a6d5e74
--- /dev/null
+++ b/doc/context/scripts/mkiv/mtx-vscode.html
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<!-- compare with lmx framework variant -->
+
+<!--
+ filename : context-base.xml
+ comment : companion to mtx-server-ctx-startup.tex
+ author : Hans Hagen, PRAGMA-ADE, Hasselt NL
+ copyright: PRAGMA ADE / ConTeXt Development Team
+ license : see context related readme files
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+ <head>
+ <title>vscode extension generator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <style type="text/css">
+ body { color: #FFFFFF; background-color: #808080; font-family: optima, verdana, futura, "lucida sans", arial, geneva, helvetica, sans; font-size: 12px; line-height: 18px; } a:link, a:active, a:visited { color: #FFFFFF; } a.dir-view:link, a.dir-view:active, a.dir-view:visited { color: #FFFFFF; text-decoration: underline; } .valid { color: #00FF00; } .invalid { color: #FF0000; } .invisible { visibility: hidden; } button, .commonlink, .smallbutton { font-weight: bold; font-size: 12px; text-decoration: none; color: #000000; border-color: #7F7F7F; border-style: solid; border-width: .125ex; background-color: #FFFFFF; padding: .5ex; } .smallbutton { width: 1em; } a.commonlink:link, a.commonlink:active, a.commonlink:visited, a.smalllink:link, a.smalllink:active, a.smalllink:visited { font-weight: bold; font-size: 12px; text-decoration: none; color: #000000; } h1, .title { font-style: normal; font-weight: normal; font-size: 18px; line-height: 18px; margin-bottom: 20px; } h2, .subtitle { font-style: normal; font-weight: normal; font-size: 12px; margin-top: 18px; margin-bottom: 18px; } table { line-height: 18px; font-size: 12px; margin: 0; } th { font-weight: bold; text-align: left; padding-bottom: 6px; } .tc { font-weight: bold; text-align: left; } p, li { max-width: 60em; } .empty-line { margin-top: 4px; } .more-room { margin-right: 1.5em; } .much-more-room { margin-right: 3em; } #main { position: absolute; left: 10%; top: 10%; right: 10%; bottom: 10%; z-index: 2; width: 80%; height: 80%; padding: 0%; margin: 0%; overflow: auto; border-style: none; border-width: 0; background-color: #3F3F3F; } #main-settings { margin: 12px; x_max-width: 60em; line-height: 18px; font-size: 12px; } #left { position: absolute; top : 10%; left: 0%; bottom: 0%; right: 90%; z-index: 1; width: 10%; height: 90%; padding: 0%; margin: 0%; font-size: 16px; border-style: none; border-width: 0; background-color: #4F6F6F; } #right { position: absolute; top : 0%; left: 90%; bottom: 10%; right: 0%; z-index: 1; width: 10%; height: 90%; padding: 0%; margin: 0%; font-size: 16px; border-style: none; border-width: 0; background-color: #4F6F6F; _margin-left: -15px; } #bottom { position: absolute; left: 10%; right: 0%; top: 90%; bottom: 0%; z-index: 1; width: 90%; height: 10%; padding: 0%; margin: 0%; font-size: 16px; border-style: none; border-width: 0; background-color: #6F6F8F; } #top { position: absolute; left: 0%; right: 10%; top: 0%; bottom: 90%; z-index: 1; width: 90%; height: 10%; padding: 0%; margin: 0%; font-size: 16px; border-style: none; border-width: 0; background-color: #6F6F8F; } #top-one { position: absolute; bottom: 50%; width: 100%; buggedheight: 100%; } #top-two { position: relative; margin-bottom: -9px; margin-left: 12px; margin-right: 12px; line-height: 18px; text-align: right; vertical-align: middle; } #bottom-one { position: absolute; bottom: 50%; width: 100%; buggedheight: 100%; } #bottom-two { position: relative; margin-bottom: -9px; margin-left: 12px; margin-right: 12px; line-height: 18px; text-align: left; vertical-align: middle; } #left-one { position: absolute; width: 100%; buggedheight: 100%; } #left-two { position: relative; margin-top: 12px; line-height: 18px; text-align: center; vertical-align: top; } #right-one { display: table; height: 100%; width: 100%; } #right-two { display: table-row; height: 100%; width: 100%; } #right-three { display: table-cell; width: 100%; vertical-align: bottom; _position: absolute; _top: 100%; } #right-four { text-align: center; margin-bottom: 2ex; _position: relative; _top: -100%; } #more-top { position: absolute; top: 0%; left: 90%; bottom: 90%; right: 0%; z-index: 3; width: 10%; height: 10%; padding: 0%; margin: 0%; border-style: none; border-width: 0; } #more-top-settings { text-align: center; } #more-right-settings { margin-right: 12px; margin-left: 12px; line-height: 18px; font-size: 10px; text-align: center; } #right-safari { _display: table; width: 100%; height: 100%; }
+ </style>
+ <style type="text/css">
+ </style>
+ </head>
+ <body>
+ <div id="top"> <div id="top-one">
+ <div id="top-two">vscode extension generator </div>
+ </div>
+ </div>
+ <div id="bottom"> <div id="bottom-one">
+ <div id="bottom-two">wiki: http://contextgarden.net | mail: ntg-context@ntg.nl | website: http://www.pragma-ade.nl</div>
+ </div>
+ </div>
+ <div id="left"></div>
+ <div id="right"></div>
+ <div id="main">
+ <div id='main-settings'>
+ <h1>Command line options</h1>
+<table>
+ <tr><th style="width: 10em">flag</th><th style="width: 8em">value</th><th>description</th></tr>
+ <tr><th/><td/><td/></tr>
+ <tr><th>--generate</th><td></td><td>generate extension in sync with current version</td></tr>
+ <tr><th>--start</th><td></td><td>start vscode with extension context</td></tr>
+ </table>
+<br/>
+<h1>Example</h1>
+<tt>mtxrun --script vscode --generate e:/vscode/extensions</tt>
+<br/><tt>mtxrun --script vscode --generate</tt>
+<br/><tt>mtxrun --script vscode --start</tt>
+<br/><br/> </div>
+ </div>
+ </body>
+</html>
diff --git a/doc/context/scripts/mkiv/mtx-vscode.man b/doc/context/scripts/mkiv/mtx-vscode.man
new file mode 100644
index 000000000..6c1a0cd11
--- /dev/null
+++ b/doc/context/scripts/mkiv/mtx-vscode.man
@@ -0,0 +1,30 @@
+.TH "mtx-vscode" "1" "01-01-2019" "version 1.00" "vscode extension generator"
+.SH NAME
+ mtx-vscode - vscode extension generator
+.SH SYNOPSIS
+.B mtxrun --script vscode [
+.I OPTIONS ...
+.B ] [
+.I FILENAMES
+.B ]
+.SH DESCRIPTION
+.B vscode extension generator
+.SH OPTIONS
+.TP
+.B --generate
+generate extension in sync with current version
+.TP
+.B --start
+start vscode with extension context
+.SH AUTHOR
+More information about ConTeXt and the tools that come with it can be found at:
+
+
+.B "maillist:"
+ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
+
+.B "webpage:"
+http://www.pragma-ade.nl / http://tex.aanhet.net
+
+.B "wiki:"
+http://contextgarden.net
diff --git a/doc/context/scripts/mkiv/mtx-vscode.xml b/doc/context/scripts/mkiv/mtx-vscode.xml
new file mode 100644
index 000000000..c4cf3167e
--- /dev/null
+++ b/doc/context/scripts/mkiv/mtx-vscode.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<application>
+ <metadata>
+ <entry name="name">mtx-vscode</entry>
+ <entry name="detail">vscode extension generator</entry>
+ <entry name="version">1.00</entry>
+ </metadata>
+ <flags>
+ <category name="basic">
+ <subcategory>
+ <flag name="generate"><short>generate extension in sync with current version</short></flag>
+ <flag name="start"><short>start vscode with extension context</short></flag>
+ </subcategory>
+ </category>
+ </flags>
+ <examples>
+ <category>
+ <title>Example</title>
+ <subcategory>
+ <example><command>mtxrun --script vscode --generate e:/vscode/extensions</command></example>
+ <example><command>mtxrun --script vscode --generate</command></example>
+ <example><command>mtxrun --script vscode --start</command></example>
+ </subcategory>
+ </category>
+ </examples>
+</application>
diff --git a/scripts/context/lua/mtx-vscode.lua b/scripts/context/lua/mtx-vscode.lua
new file mode 100644
index 000000000..22a821dec
--- /dev/null
+++ b/scripts/context/lua/mtx-vscode.lua
@@ -0,0 +1,3181 @@
+if not modules then modules = { } end modules ['mtx-vscode'] = {
+ version = 1.000,
+ comment = "this script is experimental",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE",
+ license = "see context related readme files"
+}
+
+-- todo: folding and comments
+-- todo: runners (awaiting global script setup)
+-- todo: dark theme
+
+-- Already for quite a while lexing in ConTeXt is kind of standardized and the way
+-- the format evolved also relates to how I see the source. We started with lexing
+-- beginning of 1990 with texedit/wdt in Modula2 and went via perltk (texwork),
+-- Scite (native), Scite (lpeg) as well as different stages in verbatim. So, as
+-- github uses VSCODE I decided to convert the couple of base lexers to the format
+-- that this editor likes. It's all about habits and consistency, not about tons of
+-- fancy features that I don't need and would not use anyway.
+--
+-- I use a lua script to generate the lexer definitions simply because that way the
+-- update will be in sync with the updates in the context distribution.
+--
+-- code.exe --extensions-dir e:\vscode\extensions --install-extension context
+--
+-- In the end all these systems look alike so again we we have these token onto
+-- styling mappings. We even have embedded lexers. Actually, when reading the
+-- explanations it has become internally more close to what scintilla does with
+-- tokens and numbers related to it but then mapped back onto css.
+--
+-- Multiline lexing is a pain here, so I just assume that stuff belonging together is
+-- on one line (like keys to simple values). I'm not in the mood for ugly multistep
+-- parsing now. Here the lpeg lexers win.
+--
+-- We can optimize these expressions if needed but it all looks fast enough. Anyway,
+-- we do start from the already old lexers that we use in SciTe. The lexing as well
+-- as use of colors is kind of consistent and standardized in context and I don't
+-- want to change it. The number of colors is not that large and (at least to me) it
+-- looks less extreme. We also use a gray background because over time we figured
+-- out that this works best (1) for long sessions, and (2) for colors. We have quite
+-- some embedding so that is another reason for consistency.
+--
+-- I do remember generating plist files many years ago but stopped doing that
+-- because I never could check them in practice. We're now kind of back to that. The
+-- reason for using a lua script to generate the json file is that it is easier to
+-- keep in sync with context and also because then a user can just generate the
+-- extension her/himself.
+--
+-- There are nice examples of lexer definitions in the vc extensions path. My regexp
+-- experiences are somewhat rusted and I don't really have intentions to spend too
+-- much time on them. Compared to the lpeg lexers the regexp based ones are often
+-- more compact. It's just a different concept. Anyway, I might improve things after
+-- I've read more of the specs (it seems like the regexp engine is the one from ruby).
+
+-- We normally use a light gray background with rather dark colors which at least
+-- for us is less tiresome. The problem with dark backgrounds is that one needs to
+-- use light colors from pastel palettes. I need to figure out a mapping that works
+-- for a dark background so that optionally one can install without color theme.
+
+-- It is possible to define tasks and even relate them to languages but for some reason
+-- it can not be done global but per workspace which makes using vscode no option for
+-- me (too many different folders with source code, documentation etc). It's kind of
+-- strange because simple runners are provided by many editors. I don't want to program
+-- a lot to get such simple things done so, awaiting global tasks I stick to using the
+-- terminal. But we're prepared.
+
+-- Another showstopper is the fact that we cannot disable utf8 for languages (like pdf,
+-- which is just bytes). I couldn't figure out how to set it in the extension.
+
+-- {
+-- "window.zoomLevel": 2,
+-- "editor.renderWhitespace": "all",
+-- "telemetry.enableCrashReporter": false,
+-- "telemetry.enableTelemetry": false,
+-- "editor.fontFamily": "Dejavu Sans Mono, Consolas, 'Courier New', monospace",
+-- "window.autoDetectHighContrast": false,
+-- "zenMode.hideLineNumbers": false,
+-- "zenMode.centerLayout": false,
+-- "zenMode.fullScreen": false,
+-- "zenMode.hideTabs": false,
+-- "workbench.editor.showIcons": false,
+-- "workbench.settings.enableNaturalLanguageSearch": false,
+-- "window.enableMenuBarMnemonics": false,
+-- "search.location": "panel",
+-- "breadcrumbs.enabled": false,
+-- "workbench.activityBar.visible": false,
+-- "editor.minimap.enabled": false,
+-- "workbench.iconTheme": null,
+-- "extensions.ignoreRecommendations": true,
+-- "editor.renderControlCharacters": true,
+-- "terminal.integrated.scrollback": 5000,
+-- "workbench.colorTheme": "ConTeXt",
+-- "[context.cld]": {},
+-- "terminal.integrated.fontSize": 10,
+-- "terminal.integrated.rendererType": "dom",
+-- "workbench.colorCustomizations": {
+-- "terminal.ansiBlack": "#000000",
+-- "terminal.ansiWhite": "#FFFFFF",
+-- "terminal.ansiRed": "#7F0000",
+-- "terminal.ansiGreen": "#007F00",
+-- "terminal.ansiBlue": "#00007F",
+-- "terminal.ansiMagenta": "#7F007F",
+-- "terminal.ansiCyan": "#007F7F",
+-- "terminal.ansiYellow": "#7F7F00",
+-- "terminal.ansiBrightBlack": "#000000",
+-- "terminal.ansiBrightWhite": "#FFFFFF",
+-- "terminal.ansiBrightRed": "#7F0000",
+-- "terminal.ansiBrightGreen": "#007F00",
+-- "terminal.ansiBrightBlue": "#00007F",
+-- "terminal.ansiBrightMagenta": "#7F007F",
+-- "terminal.ansiBrightCyan": "#007F7F",
+-- "terminal.ansiBrightYellow": "#7F7F00",
+-- }
+-- }
+
+-- kind of done:
+--
+-- tex mps lua cld bibtex sql bnf(untested) pdf xml json c(pp)(simplified)
+--
+-- unlikely to be done (ok, i'm not interested in all this ide stuff anyway):
+--
+-- cpp-web tex-web web web-snippets txt
+--
+-- still todo:
+--
+-- xml: preamble and dtd
+-- pdf: nested string (..(..)..)
+
+local helpinfo = [[
+<?xml version="1.0"?>
+<application>
+ <metadata>
+ <entry name="name">mtx-vscode</entry>
+ <entry name="detail">vscode extension generator</entry>
+ <entry name="version">1.00</entry>
+ </metadata>
+ <flags>
+ <category name="basic">
+ <subcategory>
+ <flag name="generate"><short>generate extension in sync with current version</short></flag>
+ <flag name="start"><short>start vscode with extension context</short></flag>
+ </subcategory>
+ </category>
+ </flags>
+ <examples>
+ <category>
+ <title>Example</title>
+ <subcategory>
+ <example><command>mtxrun --script vscode --generate e:/vscode/extensions</command></example>
+ <example><command>mtxrun --script vscode --generate</command></example>
+ <example><command>mtxrun --script vscode --start</command></example>
+ </subcategory>
+ </category>
+ </examples>
+</application>
+]]
+
+local application = logs.application {
+ name = "mtx-vscode",
+ banner = "vscode extension generator",
+ helpinfo = helpinfo,
+}
+
+local report = application.report
+
+require("util-jsn")
+
+scripts = scripts or { }
+scripts.vscode = scripts.vscode or { }
+
+local readmedata = [[
+These files are generated. You can use these extensions with for instance:
+
+ code.exe --extensions-dir <someplace>/tex/texmf-context/context/data/vscode/extensions --install-extension context
+
+There are examples of scripts and keybindings too.
+]]
+
+local function locate()
+ local name = resolvers.findfile("vscode-context.readme")
+ if name and name ~= "" then
+ local path = file.dirname(file.dirname(name))
+ if lfs.isdir(path) then
+ return path
+ end
+ end
+end
+
+function scripts.vscode.generate(targetpath)
+
+ local targetpath = targetpath or environment.files[1] or locate()
+
+ if not targetpath or targetpath == "" or not lfs.isdir(targetpath) then
+ report("invalid targetpath %a",targetpath)
+ return
+ end
+
+ local contextpath = string.gsub(targetpath,"\\","/") .. "/context"
+
+ dir.makedirs(contextpath)
+
+ if not lfs.chdir(contextpath) then
+ return
+ end
+
+ local syntaxpath = contextpath .. "/syntaxes"
+ local themepath = contextpath .. "/themes"
+ local taskpath = contextpath .. "/tasks"
+ local keybindingpath = contextpath .. "/keybindings"
+ local settingspath = contextpath .. "/settings"
+
+ dir.makedirs(syntaxpath)
+ dir.makedirs(themepath)
+ dir.makedirs(taskpath)
+ dir.makedirs(keybindingpath)
+ dir.makedirs(settingspath)
+
+ if not lfs.isdir(syntaxpath) then return end
+ if not lfs.isdir(themepath) then return end
+ if not lfs.isdir(taskpath) then return end
+ if not lfs.isdir(keybindingpath) then return end
+ if not lfs.isdir(settingspath) then return end
+
+ -- The package.
+
+ local languages = { }
+ local grammars = { }
+ local themes = { }
+ local tasks = { }
+ local keybindings = { }
+
+ local function registerlexer(lexer)
+
+ local category = lexer.category
+ local contextid = "context." .. category
+ local scope = "source." .. contextid
+
+ local setupfile = "./settings/context-settings-" .. category .. ".json"
+ local grammarfile = "./syntaxes/context-syntax-" .. category .. ".json"
+
+ local grammar = utilities.json.tojson {
+ name = contextid,
+ scopeName = scope,
+ version = lexer.version,
+ repository = lexer.repository,
+ patterns = lexer.patterns,
+ }
+
+ local setup = utilities.json.tojson(lexer.setup)
+
+ local suffixes = lexer.suffixes or { }
+ local extensions = { }
+
+ for i=1,#suffixes do
+ extensions[i] = "." .. string.gsub(suffixes[i],"%.","")
+ end
+
+ table.sort(extensions)
+
+ languages[#languages+1] = {
+ id = contextid,
+ extensions = #extensions > 0 and extensions or nil,
+ aliases = { lexer.description },
+ configuration = setupfile,
+ }
+
+ grammars[#grammars+1] = {
+ language = contextid,
+ scopeName = "source." .. contextid,
+ path = grammarfile,
+ }
+
+ report("saving grammar for %a in %a",category,grammarfile)
+ report("saving setup for %a in %a",category,setupfile)
+
+ io.savedata(grammarfile, grammar)
+ io.savedata(setupfile, setup)
+
+ end
+
+ local function registertheme(theme)
+
+ local category = theme.category
+ local filename = "./themes/" .. category .. ".json"
+
+ themes[#themes+1] = {
+ label = theme.description,
+ uiTheme = "vs",
+ path = filename,
+ }
+
+ local data = utilities.json.tojson {
+ ["$schema"] = "vscode://schemas/color-theme",
+ ["name"] = category,
+ ["colors"] = theme.colors,
+ ["tokenColors"] = theme.styles,
+ }
+
+ report("saving theme %a in %a",category,filename)
+
+ io.savedata(filename,data)
+
+ end
+
+ local function registertask(task)
+
+ local category = task.category
+ local filename = "./tasks/" .. category .. ".json"
+
+ tasks[#tasks+1] = {
+ label = task.description,
+ path = filename,
+ }
+
+ local data = utilities.json.tojson {
+ ["name"] = category,
+ ["tasks"] = task.tasks,
+ }
+
+ report("saving task %a in %a",category,filename)
+
+ io.savedata(filename,data)
+
+ end
+
+ local function registerkeybinding(keybinding)
+
+ local bindings = keybinding.keybindings
+
+ if bindings then
+
+ local category = keybinding.category
+ local filename = "./keybindings/" .. category .. ".json"
+
+ report("saving keybinding %a in %a",category,filename)
+
+ io.savedata(filename,utilities.json.tojson(bindings))
+
+ for i=1,#bindings do
+ keybindings[#keybindings+1] = bindings[i]
+ end
+
+ end
+ end
+
+ local function savepackage()
+
+ local packagefile = "package.json"
+ local whateverfile = "package.nls.json"
+ local readmefile = "vscode-context.readme"
+
+ local specification = utilities.json.tojson {
+ name = "context",
+ displayName = "ConTeXt",
+ description = "ConTeXt Syntax Highlighting",
+ publisher = "ConTeXt Development Team",
+ version = "1.0.0",
+ engines = {
+ vscode = "*"
+ },
+ categories = {
+ "Lexers",
+ "Syntaxes"
+ },
+ contributes = {
+ languages = languages,
+ grammars = grammars,
+ themes = themes,
+ tasks = tasks,
+ keybindings = keybindings,
+ },
+
+ }
+
+ report("saving package in %a",packagefile)
+
+ io.savedata(packagefile,specification)
+
+ local whatever = utilities.json.tojson {
+ displayName = "ConTeXt",
+ description = "Provides syntax highlighting and bracket matching in ConTeXt files.",
+ }
+
+ report("saving whatever in %a",whateverfile)
+
+ io.savedata(whateverfile,whatever)
+
+ report("saving readme in %a",readmefile)
+
+ io.savedata(readmefile,readmedata)
+
+ end
+
+ -- themes
+
+ do
+
+ local mycolors = {
+ red = "#7F0000",
+ green = "#007F00",
+ blue = "#00007F",
+ cyan = "#007F7F",
+ magenta = "#7F007F",
+ yellow = "#7F7F00",
+ orange = "#B07F00",
+ white = "#FFFFFF",
+ light = "#CFCFCF",
+ grey = "#808080",
+ dark = "#4F4F4F",
+ black = "#000000",
+ selection = "#F7F7F7",
+ logpanel = "#E7E7E7",
+ textpanel = "#CFCFCF",
+ linepanel = "#A7A7A7",
+ tippanel = "#444444",
+ right = "#0000FF",
+ wrong = "#FF0000",
+ }
+
+ local colors = {
+ ["editor.background"] = mycolors.textpanel,
+ ["editor.foreground"] = mycolors.black,
+ ["editorLineNumber.foreground"] = mycolors.black,
+ ["editorIndentGuide.background"] = mycolors.textpanel,
+ ["editorBracketMatch.background"] = mycolors.textpanel,
+ ["editorBracketMatch.border"] = mycolors.orange,
+ ["editor.lineHighlightBackground"] = mycolors.textpanel,
+ ["focusBorder"] = mycolors.black,
+
+ ["activityBar.background"] = mycolors.black,
+
+ ["sideBar.background"] = mycolors.linepanel,
+ ["sideBar.foreground"] = mycolors.black,
+ ["sideBar.border"] = mycolors.white,
+ ["sideBarTitle.foreground"] = mycolors.black,
+ ["sideBarSectionHeader.background"] = mycolors.linepanel,
+ ["sideBarSectionHeader.foreground"] = mycolors.black,
+
+ ["statusBar.foreground"] = mycolors.black,
+ ["statusBar.background"] = mycolors.linepanel,
+ ["statusBar.border"] = mycolors.white,
+ ["statusBar.noFolderForeground"] = mycolors.black,
+ ["statusBar.noFolderBackground"] = mycolors.linepanel,
+ ["statusBar.debuggingForeground"] = mycolors.black,
+ ["statusBar.debuggingBackground"] = mycolors.linepanel,
+
+ ["notification.background"] = mycolors.black,
+ }
+
+ local styles = {
+
+ { scope = "context.whitespace", settings = { } },
+ { scope = "context.default", settings = { foreground = mycolors.black } },
+ { scope = "context.number", settings = { foreground = mycolors.cyan } },
+ { scope = "context.comment", settings = { foreground = mycolors.yellow } },
+ { scope = "context.keyword", settings = { foreground = mycolors.blue, fontStyle = "bold" } },
+ { scope = "context.string", settings = { foreground = mycolors.magenta } },
+ { scope = "context.error", settings = { foreground = mycolors.red } },
+ { scope = "context.label", settings = { foreground = mycolors.red, fontStyle = "bold" } },
+ { scope = "context.nothing", settings = { } },
+ { scope = "context.class", settings = { foreground = mycolors.black, fontStyle = "bold" } },
+ { scope = "context.function", settings = { foreground = mycolors.black, fontStyle = "bold" } },
+ { scope = "context.constant", settings = { foreground = mycolors.cyan, fontStyle = "bold" } },
+ { scope = "context.operator", settings = { foreground = mycolors.blue } },
+ { scope = "context.regex", settings = { foreground = mycolors.magenta } },
+ { scope = "context.preprocessor", settings = { foreground = mycolors.yellow, fontStyle = "bold" } },
+ { scope = "context.tag", settings = { foreground = mycolors.cyan } },
+ { scope = "context.type", settings = { foreground = mycolors.blue } },
+ { scope = "context.variable", settings = { foreground = mycolors.black } },
+ { scope = "context.identifier", settings = { } },
+ { scope = "context.linenumber", settings = { background = mycolors.linepanel } },
+ { scope = "context.bracelight", settings = { foreground = mycolors.orange, fontStyle = "bold" } },
+ { scope = "context.bracebad", settings = { foreground = mycolors.orange, fontStyle = "bold" } },
+ { scope = "context.controlchar", settings = { } },
+ { scope = "context.indentguide", settings = { foreground = mycolors.linepanel, back = colors.white } },
+ { scope = "context.calltip", settings = { foreground = mycolors.white, back = colors.tippanel } },
+ { scope = "context.invisible", settings = { background = mycolors.orange } },
+ { scope = "context.quote", settings = { foreground = mycolors.blue, fontStyle = "bold" } },
+ { scope = "context.special", settings = { foreground = mycolors.blue } },
+ { scope = "context.extra", settings = { foreground = mycolors.yellow } },
+ { scope = "context.embedded", settings = { foreground = mycolors.black, fontStyle = "bold" } },
+ { scope = "context.char", settings = { foreground = mycolors.magenta } },
+ { scope = "context.reserved", settings = { foreground = mycolors.magenta, fontStyle = "bold" } },
+ { scope = "context.definition", settings = { foreground = mycolors.black, fontStyle = "bold" } },
+ { scope = "context.okay", settings = { foreground = mycolors.dark } },
+ { scope = "context.warning", settings = { foreground = mycolors.orange } },
+ { scope = "context.standout", settings = { foreground = mycolors.orange, fontStyle = "bold" } },
+ { scope = "context.command", settings = { foreground = mycolors.green, fontStyle = "bold" } },
+ { scope = "context.internal", settings = { foreground = mycolors.orange, fontStyle = "bold" } },
+ { scope = "context.preamble", settings = { foreground = mycolors.yellow } },
+ { scope = "context.grouping", settings = { foreground = mycolors.red } },
+ { scope = "context.primitive", settings = { foreground = mycolors.blue, fontStyle = "bold" } },
+ { scope = "context.plain", settings = { foreground = mycolors.dark, fontStyle = "bold" } },
+ { scope = "context.user", settings = { foreground = mycolors.green } },
+ { scope = "context.data", settings = { foreground = mycolors.cyan, fontStyle = "bold" } },
+ { scope = "context.text", settings = { foreground = mycolors.black } },
+
+ { scope = { "emphasis" }, settings = { fontStyle = "italic" } },
+ { scope = { "strong" }, settings = { fontStyle = "bold" } },
+
+ { scope = { "comment" }, settings = { foreground = mycolors.black } },
+ { scope = { "string" }, settings = { foreground = mycolors.magenta } },
+
+ {
+ scope = {
+ "constant.numeric",
+ "constant.language.null",
+ "variable.language.this",
+ "support.type.primitive",
+ "support.function",
+ "support.variable.dom",
+ "support.variable.property",
+ "support.variable.property",
+ "meta.property-name",
+ "meta.property-value",
+ "support.constant.handlebars"
+ },
+ settings = {
+ foreground = mycolors.cyan,
+ }
+ },
+
+ {
+ scope = {
+ "keyword",
+ "storage.modifier",
+ "storage.type",
+ "variable.parameter"
+ },
+ settings = {
+ foreground = mycolors.blue,
+ fontStyle = "bold",
+ }
+ },
+
+ {
+ scope = {
+ "entity.name.type",
+ "entity.other.inherited-class",
+ "meta.function-call",
+ "entity.other.attribute-name",
+ "entity.name.function.shell"
+ },
+ settings = {
+ foreground = mycolors.black,
+ }
+ },
+
+ {
+ scope = {
+ "entity.name.tag",
+ },
+ settings = {
+ foreground = mycolors.black,
+ }
+ },
+
+ }
+
+ registertheme {
+ category = "context",
+ description = "ConTeXt",
+ colors = colors,
+ styles = styles,
+ }
+
+ end
+
+ do
+
+ local presentation = {
+ echo = true,
+ reveal = "always",
+ focus = false,
+ panel = "shared",
+ showReuseMessage = false,
+ clear = true,
+ }
+
+ local tasks = {
+ {
+ group = "build",
+ label = "process tex file",
+ type = "shell",
+ command = "context --autogenerate --autopdf ${file}",
+ windows = { command = "chcp 65001 ; context.exe --autogenerate --autopdf ${file}" },
+ },
+ {
+ group = "build",
+ label = "check tex file",
+ type = "shell",
+ command = "mtxrun --autogenerate --script check ${file}",
+ windows = { command = "chcp 65001 ; mtxrun.exe --autogenerate --script check ${file}" },
+ },
+ {
+ group = "build",
+ label = "identify fonts",
+ type = "shell",
+ command = "mtxrun --script fonts --reload --force",
+ windows = { command = "chcp 65001 ; mtxrun.exe --script fonts --reload --force" },
+ },
+ {
+ group = "build",
+ label = "process lua file",
+ type = "shell",
+ command = "mtxrun --script ${file}",
+ windows = { command = "chcp 65001 ; mtxrun.exe --script ${file}" },
+ },
+ }
+
+ for i=1,#tasks do
+ local task = tasks[i]
+ if not task.windows then
+ task.windows = { command = "chcp 65001 ; " .. task.command }
+ end
+ if not task.presentation then
+ task.presentation = presentation
+ end
+ end
+
+ registertask {
+ category = "context",
+ description = "ConTeXt Tasks",
+ tasks = tasks,
+ }
+
+ end
+
+ do
+
+ local keybindings = {
+ {
+ -- runner = "context --autogenerate --autopdf ${file}",
+ key = "ctrl-F12",
+ command = "workbench.action.tasks.runTask",
+ args = "process tex file",
+ when = "editorTextFocus && editorLangId == context.tex",
+ },
+ {
+ -- runner = "mtxrun --autogenerate --script check ${file}",
+ key = "F12",
+ command = "workbench.action.tasks.runTask",
+ args = "check tex file",
+ when = "editorTextFocus && editorLangId == context.tex",
+ },
+ {
+ -- runner = "mtxrun --script ${file}",
+ key = "ctrl-F12",
+ command = "workbench.action.tasks.runTask",
+ args = "process lua file",
+ when = "editorTextFocus && editorLangId == context.cld",
+ }
+ }
+
+ registerkeybinding {
+ category = "context",
+ description = "ConTeXt Keybindings",
+ keybindings = keybindings,
+ }
+
+ end
+
+ -- helpers
+
+ local function loaddefinitions(name)
+ return table.load(resolvers.findfile(name))
+ end
+
+ local escapes = {
+ ["."] = "\\.",
+ ["-"] = "\\-",
+ ["+"] = "\\+",
+ ["*"] = "\\*",
+ ['"'] = '\\"',
+ ["'"] = "\\'",
+ ['^'] = '\\^',
+ ['$'] = '\\$',
+ ["|"] = "\\|",
+ ["\\"] = "\\\\",
+ ["["] = "\\[",
+ ["]"] = "\\]",
+ ["("] = "\\(",
+ [")"] = "\\)",
+ ["%"] = "\\%",
+ ["!"] = "\\!",
+ ["&"] = "\\&",
+ ["?"] = "\\?",
+ ["~"] = "\\~",
+ }
+
+ local function sorter(a,b)
+ return a > b
+ end
+
+ local function oneof(t)
+ local result = { }
+ table.sort(t,sorter)
+ for i=1,#t do
+ result[i] = string.gsub(t[i],".",escapes)
+ end
+ return table.concat(result,"|")
+ end
+
+ local function capture(str)
+ return "(" .. str .. ")"
+ end
+
+ local function captures(str)
+ return "\\*(" .. str .. ")\\*"
+ end
+
+ local function include(str)
+ return { include = str }
+ end
+
+ local function configuration(s)
+ if s then
+ local pairs = s.pairs
+ local comments = s.comments
+ return {
+ brackets = pairs,
+ autoClosingPairs = pairs,
+ surroundingPairs = pairs,
+ comments = {
+ lineComment = comments and comments.inline or nil,
+ blockComment = comments and comments.display or nil,
+ },
+ }
+ else
+ return { }
+ end
+ end
+
+ -- I need to figure out a decent mapping for dark as the defaults are just
+ -- not to my taste and we also have a different categorization.
+
+ local mapping = {
+ ["context.default"] = "text source",
+ ["context.number"] = "constant.numeric",
+ ["context.comment"] = "comment",
+ ["context.keyword"] = "keyword",
+ ["context.string"] = "string source",
+ ["context.label"] = "meta.tag",
+ ["context.constant"] = "support.constant",
+ ["context.operator"] = "keyword.operator.js",
+ ["context.identifier"] = "support.variable",
+ ["context.quote"] = "string",
+ ["context.special"] = "unset",
+ ["context.extra"] = "unset",
+ ["context.embedded"] = "meta.embedded",
+ ["context.reserved"] = "unset",
+ ["context.definition"] = "keyword",
+ ["context.warning"] = "invalid",
+ ["context.command"] = "unset",
+ ["context.grouping"] = "unset",
+ ["context.primitive"] = "keyword",
+ ["context.plain"] = "unset",
+ ["context.user"] = "unset",
+ ["context.data"] = "text source",
+ ["context.text"] = "text source",
+ }
+
+ local function styler(namespace)
+ local done = { }
+ local style = function(what,where)
+ if not what or not where then
+ report()
+ report("? %-5s %-20s %s",namespace,what or "?",where or "?")
+ report()
+ os.exit()
+ end
+-- if mapping then
+-- what = mapping[what] or what
+-- end
+ local hash = what .. "." .. where
+ if done[hash] then
+ report("- %-5s %-20s %s",namespace,what,where)
+ else
+ -- report("+ %-5s %-20s %s",namespace,what,where)
+ done[hash] = true
+ end
+ return hash .. "." .. namespace
+ end
+ return style, function(what,where) return { name = style(what, where) } end
+ end
+
+ local function embedded(name)
+ return { { include = "source.context." .. name } }
+ end
+
+ -- The tex lexer.
+
+ do
+
+ local interface_lowlevel = loaddefinitions("scite-context-data-context.lua")
+ local interface_interfaces = loaddefinitions("scite-context-data-interfaces.lua")
+ local interface_tex = loaddefinitions("scite-context-data-tex.lua")
+
+ local constants = interface_lowlevel.constants
+ local helpers = interface_lowlevel.helpers
+ local interfaces = interface_interfaces.common
+ local primitives = { }
+ local overloaded = { }
+
+ for i=1,#helpers do
+ overloaded[helpers[i]] = true
+ end
+ for i=1,#constants do
+ overloaded[constants[i]] = true
+ end
+
+ local function add(data)
+ for k, v in next, data do
+ if v ~= "/" and v ~= "-" then
+ if not overloaded[v] then
+ primitives[#primitives+1] = v
+ end
+ v = "normal" .. v
+ if not overloaded[v] then
+ primitives[#primitives+1] = v
+ end
+ end
+ end
+ end
+
+ add(interface_tex.tex)
+ add(interface_tex.etex)
+ add(interface_tex.pdftex)
+ add(interface_tex.aleph)
+ add(interface_tex.omega)
+ add(interface_tex.luatex)
+ add(interface_tex.xetex)
+
+ local luacommands = {
+ "ctxlua", "ctxcommand", "ctxfunction",
+ "ctxlatelua", "ctxlatecommand",
+ "cldcommand", "cldcontext",
+ "luaexpr", "luascript", "luathread",
+ "directlua", "latelua",
+ }
+
+ local luaenvironments = {
+ "luacode",
+ "luasetups", "luaparameterset",
+ "ctxfunction", "ctxfunctiondefinition",
+ }
+
+ local mpscommands = {
+ "reusableMPgraphic", "usableMPgraphic",
+ "uniqueMPgraphic", "uniqueMPpagegraphic",
+ "useMPgraphic", "reuseMPgraphic",
+ "MPpositiongraphic",
+ }
+
+ local mpsenvironments_o = {
+ "MPpage"
+ }
+
+ local mpsenvironments_a = {
+ "MPcode", "useMPgraphic", "reuseMPgraphic",
+ "MPinclusions", "MPinitializations", "MPdefinitions", "MPextensions",
+ "MPgraphic", "MPcalculation",
+ }
+
+ -- clf_a-zA-z_
+
+ -- btx|xml a-z
+ -- a-z btx|xml a-z
+
+ -- mp argument {...text}
+ local function words(list)
+ table.sort(list,sorter)
+ return "\\\\(" .. table.concat(list,"|") .. ")" .. "(?=[^a-zA-Z])"
+ end
+
+ local function bwords(list)
+ table.sort(list,sorter)
+ return "(\\\\(" .. table.concat(list,"|") .. "))\\s*(\\{)"
+ end
+
+ local function ewords()
+ return "(\\})"
+ end
+
+ local function environments(list)
+ table.sort(list,sorter)
+ last = table.concat(list,"|")
+ if #list > 1 then
+ last = "(?:" .. last .. ")"
+ end
+ return capture("\\\\start" .. last), capture("\\\\stop" .. last)
+ end
+
+ local capturedconstants = words(constants)
+ local capturedprimitives = words(primitives)
+ local capturedhelpers = words(helpers)
+ local capturedcommands = words(interfaces)
+ local capturedmpscommands = words(mpscommands)
+
+ local spaces = "\\s*"
+ local identifier = "[a-zA-Z\\_@!?\127-\255]+"
+
+ local comment = "%.*$\\n?"
+ local ifprimitive = "\\\\if[a-zA-Z\\_@!?\127-\255]*"
+ local csname = "\\\\[a-zA-Z\\_@!?\127-\255]+"
+ local csprefix = "\\\\(btx|xml)[a-z]+"
+ local cssuffix = "\\\\[a-z]+(btx|xml)[a-z]*"
+ local csreserved = "\\\\(\\?\\?|[a-z]\\!)[a-zA-Z\\_@!?\127-\255]+"
+
+ local luaenvironmentopen,
+ luaenvironmentclose = environments(luaenvironments)
+ local luacommandopen,
+ luacommandclose = environments(luacommands)
+
+ local mpsenvironmentopen_o,
+ mpsenvironmentclose_o = environments(mpsenvironments_o)
+ local mpsenvironmentopen_a,
+ mpsenvironmentclose_a = environments(mpsenvironments_a)
+
+ local argumentopen = capture("\\{")
+ local argumentclose = capture("\\}")
+ local argumentcontent = capture("[^\\}]*")
+
+ local optionopen = capture("\\[")
+ local optionclose = capture("\\]")
+ local optioncontent = capture("[^\\]]*")
+
+ -- not ok yet, todo: equal in settings .. but it would become quite ugly, lpeg wins here
+ -- so instead we color differently
+
+ local option = "(?:" .. optionopen .. optioncontent .. optionclose .. ")?"
+ local argument = "(?:" .. argumentopen .. argumentcontent .. argumentclose .. ")?"
+
+ local mpsenvironmentopen_o = mpsenvironmentopen_o .. spaces .. option .. spaces .. option
+ local mpsenvironmentopen_a = mpsenvironmentopen_a .. spaces .. argument .. spaces .. argument
+
+ local style, styled = styler("tex")
+
+ local capturedgroupings = oneof {
+ "{", "}", "$"
+ }
+
+ local capturedextras = oneof {
+ "~", "%", "^", "&", "_",
+ "-", "+", "/",
+ "'", "`",
+ "\\", "|",
+ }
+
+ local capturedspecials = oneof {
+ "(", ")", "[", "]", "<", ">",
+ "#", "=", '"',
+ }
+
+ local capturedescaped = "\\\\."
+
+ registerlexer {
+
+ category = "tex",
+ description = "ConTeXt TEX",
+ suffixes = { "tex", "mkiv", "mkvi", "mkix", "mkxi", "mkil", "mkli", "mkii" },
+ version = "1.0.0",
+
+ setup = configuration {
+ pairs = {
+ { "{", "}" },
+ { "[", "]" },
+ { "(", ")" },
+ },
+ comments = {
+ inline = "%",
+ },
+ },
+
+ repository = {
+
+ comment = {
+ name = style("context.comment", "comment"),
+ match = texcomment,
+ },
+
+ constant = {
+ name = style("context.constant", "commands.constant"),
+ match = capturedconstants,
+ },
+
+ ifprimitive = {
+ name = style("context.primitive", "commands.if"),
+ match = ifprimitive,
+ },
+
+ primitive = {
+ name = style("context.primitive", "commands.primitive"),
+ match = capturedprimitives,
+ },
+
+ helper = {
+ name = style("context.plain", "commands.plain"),
+ match = capturedhelpers,
+ },
+
+ command = {
+ name = style("context.command", "commands.context"),
+ match = capturedcommands,
+ },
+
+ csname = {
+ name = style("context.user", "commands.user"),
+ match = csname,
+ },
+
+ escaped = {
+ name = style("context.command", "commands.escaped"),
+ match = capturedescaped,
+ },
+
+ subsystem_prefix = {
+ name = style("context.embedded", "subsystem.prefix"),
+ match = csprefix,
+ },
+
+ subsystem_suffix = {
+ name = style("context.embedded", "subsystem.suffix"),
+ match = cssuffix,
+ },
+
+ grouping = {
+ name = style("context.grouping", "symbols.groups"),
+ match = capturedgroupings,
+ },
+
+ extra = {
+ name = style("context.extra", "symbols.extras"),
+ match = capturedextras,
+ },
+
+ special = {
+ name = style("context.special", "symbols.special"),
+ match = capturedspecials,
+ },
+
+ reserved = {
+ name = style("context.reserved", "commands.reserved"),
+ match = csreserved,
+ },
+
+ lua_environment = {
+ ["begin"] = luaenvironmentopen,
+ ["end"] = luaenvironmentclose,
+ patterns = embedded("cld"),
+ beginCaptures = { ["0"] = styled("context.embedded", "lua.environment.open") },
+ endCaptures = { ["0"] = styled("context.embedded", "lua.environment.close") },
+ },
+
+ lua_command = {
+ ["begin"] = luacommandopen,
+ ["end"] = luacommandclose,
+ patterns = embedded("cld"),
+ beginCaptures = {
+ ["1"] = styled("context.embedded", "lua.command.open"),
+ ["2"] = styled("context.grouping", "lua.command.open"),
+ },
+ endCaptures = {
+ ["1"] = styled("context.grouping", "lua.command.close"),
+ },
+
+ },
+
+ metafun_environment_o = {
+ ["begin"] = mpsenvironmentopen_o,
+ ["end"] = mpsenvironmentclose_o,
+ patterns = embedded("mps"),
+ beginCaptures = {
+ ["1"] = styled("context.embedded", "metafun.environment.start.o"),
+ ["2"] = styled("context.embedded", "metafun.environment.open.o.1"),
+ ["3"] = styled("context.warning", "metafun.environment.content.o.1"),
+ ["4"] = styled("context.embedded", "metafun.environment.close.o.1"),
+ ["5"] = styled("context.embedded", "metafun.environment.open.o.2"),
+ ["6"] = styled("context.warning", "metafun.environment.content.o.2"),
+ ["7"] = styled("context.embedded", "metafun.environment.close.o.2"),
+ },
+ endCaptures = {
+ ["0"] = styled("context.embedded", "metafun.environment.stop.o")
+ },
+ },
+
+ metafun_environment_a = {
+ ["begin"] = mpsenvironmentopen_a,
+ ["end"] = mpsenvironmentclose_a,
+ patterns = embedded("mps"),
+ beginCaptures = {
+ ["1"] = styled("context.embedded", "metafun.environment.start.a"),
+ ["2"] = styled("context.embedded", "metafun.environment.open.a.1"),
+ ["3"] = styled("context.warning", "metafun.environment.content.a.1"),
+ ["4"] = styled("context.embedded", "metafun.environment.close.a.1"),
+ ["5"] = styled("context.embedded", "metafun.environment.open.a.2"),
+ ["6"] = styled("context.warning", "metafun.environment.content.a.2"),
+ ["7"] = styled("context.embedded", "metafun.environment.close.a.2"),
+ },
+ endCaptures = {
+ ["0"] = styled("context.embedded", "metafun.environment.stop.a")
+ },
+ },
+
+ metafun_command = {
+ name = style("context.embedded", "metafun.command"),
+ match = capturedmpscommands,
+ },
+
+ },
+
+ patterns = {
+ include("#comment"),
+ include("#constant"),
+ include("#lua_environment"),
+ include("#lua_command"),
+ include("#metafun_environment_o"),
+ include("#metafun_environment_a"),
+ include("#metafun_command"),
+ include("#subsystem_prefix"),
+ include("#subsystem_suffix"),
+ include("#ifprimitive"),
+ include("#helper"),
+ include("#command"),
+ include("#primitive"),
+ include("#reserved"),
+ include("#csname"),
+ include("#escaped"),
+ include("#grouping"),
+ include("#special"),
+ include("#extra"),
+ },
+
+ }
+
+ end
+
+ -- The metafun lexer.
+
+ do
+
+ local metapostprimitives = { }
+ local metapostinternals = { }
+ local metapostshortcuts = { }
+ local metapostcommands = { }
+
+ local metafuninternals = { }
+ local metafunshortcuts = { }
+ local metafuncommands = { }
+
+ local mergedshortcuts = { }
+ local mergedinternals = { }
+
+ do
+
+ local definitions = loaddefinitions("scite-context-data-metapost.lua")
+
+ if definitions then
+ metapostprimitives = definitions.primitives or { }
+ metapostinternals = definitions.internals or { }
+ metapostshortcuts = definitions.shortcuts or { }
+ metapostcommands = definitions.commands or { }
+ end
+
+ local definitions = loaddefinitions("scite-context-data-metafun.lua")
+
+ if definitions then
+ metafuninternals = definitions.internals or { }
+ metafunshortcuts = definitions.shortcuts or { }
+ metafuncommands = definitions.commands or { }
+ end
+
+ for i=1,#metapostshortcuts do
+ mergedshortcuts[#mergedshortcuts+1] = metapostshortcuts[i]
+ end
+ for i=1,#metafunshortcuts do
+ mergedshortcuts[#mergedshortcuts+1] = metafunshortcuts[i]
+ end
+
+ for i=1,#metapostinternals do
+ mergedinternals[#mergedinternals+1] = metapostinternals[i]
+ end
+ for i=1,#metafuninternals do
+ mergedinternals[#mergedinternals+1] = metafuninternals[i]
+ end
+
+
+ end
+
+ local function words(list)
+ table.sort(list,sorter)
+ return "(" .. table.concat(list,"|") .. ")" .. "(?=[^a-zA-Z\\_@!?\127-\255])"
+ end
+
+ local capturedshortcuts = oneof(mergedshortcuts)
+ local capturedinternals = words(mergedinternals)
+ local capturedmetapostcommands = words(metapostcommands)
+ local capturedmetafuncommands = words(metafuncommands)
+ local capturedmetapostprimitives = words(metapostprimitives)
+
+ local capturedsuffixes = oneof {
+ "#@", "@#", "#"
+ }
+ local capturedspecials = oneof {
+ "#@", "@#", "#",
+ "(", ")", "[", "]", "{", "}",
+ "<", ">", "=", ":",
+ '"',
+ }
+ local capturedexatras = oneof {
+ "+-+", "++",
+ "~", "%", "^", "&",
+ "_", "-", "+", "*", "/",
+ "`", "'", "|", "\\",
+ }
+
+ local spaces = "\\s*"
+ local mandatespaces = "\\s+"
+
+ local identifier = "[a-zA-Z\\_@!?\127-\255]+"
+
+ local decnumber = "[\\-]?[0-9]+(\\.[0-9]+)?([eE]\\-?[0-9]+)?"
+
+ local comment = "%.*$\\n?"
+
+ local stringopen = "\""
+ local stringclose = stringopen
+
+ local qualifier = "[\\.]"
+ local optionalqualifier = spaces .. qualifier .. spaces
+
+ local capturedstringopen = capture(stringopen)
+ local capturedstringclose = capture(stringclose)
+
+ local capturedlua = capture("lua")
+
+ local capturedopen = capture("\\(")
+ local capturedclose = capture("\\)")
+
+ local capturedtexopen = capture("(?:b|verbatim)tex") .. mandatespaces
+ local capturedtexclose = mandatespaces .. capture("etex")
+
+ local texcommand = "\\[a-zA-Z\\_@!?\127-\255]+"
+
+ local style, styled = styler("mps")
+
+ registerlexer {
+
+ category = "mps",
+ description = "ConTeXt MetaFun",
+ suffixes = { "mp", "mpii", "mpiv", "mpvi" },
+ version = "1.0.0",
+
+ setup = configuration {
+ pairs = {
+ { "{", "}" },
+ { "[", "]" },
+ { "(", ")" },
+ },
+ comments = {
+ inline = "%",
+ },
+ },
+
+ repository = {
+
+ comment = {
+ name = style("context.comment", "comment"),
+ match = comment,
+ },
+
+ internal = {
+ name = style("context.reserved", "internal"),
+ match = capturedshortcuts,
+ },
+
+ shortcut = {
+ name = style("context.data", "shortcut"),
+ match = capturedinternals,
+ },
+
+ helper = {
+ name = style("context.command.metafun", "helper"),
+ match = capturedmetafuncommands,
+ },
+
+ plain = {
+ name = style("context.plain", "plain"),
+ match = capturedmetapostcommands,
+ },
+
+ primitive = {
+ name = style("context.primitive", "primitive"),
+ match = capturedmetapostprimitives,
+ },
+
+ quoted = {
+ name = style("context.string", "string.text"),
+ ["begin"] = stringopen,
+ ["end"] = stringclose,
+ beginCaptures = { ["0"] = styled("context.special", "string.open") },
+ endCaptures = { ["0"] = styled("context.special", "string.close") },
+ },
+
+ identifier = {
+ name = style("context.default", "identifier"),
+ match = identifier,
+ },
+
+ suffix = {
+ name = style("context.number", "suffix"),
+ match = capturedsuffixes,
+ },
+
+ special = {
+ name = style("context.special", "special"),
+ match = capturedspecials,
+ },
+
+ number = {
+ name = style("context.number", "number"),
+ match = decnumber,
+ },
+
+ extra = {
+ name = "context.extra",
+ match = capturedexatras,
+ },
+
+ luacall = {
+ ["begin"] = capturedlua .. spaces .. capturedopen .. spaces .. capturedstringopen,
+ ["end"] = capturedstringclose .. spaces .. capturedclose,
+ patterns = embedded("cld"),
+ beginCaptures = {
+ ["1"] = styled("context.embedded", "lua.command"),
+ ["2"] = styled("context.special", "lua.open"),
+ ["3"] = styled("context.special", "lua.text.open"),
+ },
+ endCaptures = {
+ ["1"] = styled("context.special", "lua.text.close"),
+ ["2"] = styled("context.special", "lua.close"),
+ },
+ },
+
+ -- default and embedded have the same color but differ in boldness
+
+ luacall_suffixed = {
+ name = style("context.embedded", "luacall"),
+ ["begin"] = capturedlua,
+ ["end"] = "(?!(" .. optionalqualifier .. identifier .. "))",
+ patterns = {
+ {
+ match = qualifier,
+ -- name = style("context.operator", "luacall.qualifier"),
+ name = style("context.default", "luacall.qualifier"),
+ },
+ }
+ },
+
+ texlike = { -- simplified variant
+ name = style("context.warning","unexpected.tex"),
+ match = texcommand,
+ },
+
+ texstuff = {
+ name = style("context.string", "tex"),
+ ["begin"] = capturedtexopen,
+ ["end"] = capturedtexclose,
+ patterns = embedded("tex"),
+ beginCaptures = { ["1"] = styled("context.primitive", "tex.open") },
+ endCaptures = { ["1"] = styled("context.primitive", "tex.close") },
+ },
+
+ },
+
+ patterns = {
+ include("#comment"),
+ include("#internal"),
+ include("#shortcut"),
+ include("#luacall_suffixed"),
+ include("#luacall"),
+ include("#helper"),
+ include("#plain"),
+ include("#primitive"),
+ include("#texstuff"),
+ include("#suffix"),
+ include("#identifier"),
+ include("#number"),
+ include("#quoted"),
+ include("#special"),
+ include("#texlike"),
+ include("#extra"),
+ },
+
+ }
+
+ end
+
+ -- The lua lexer.
+
+ do
+
+ local function words(list)
+ table.sort(list,sorter)
+ return "(" .. table.concat(list,"|") .. ")" .. "(?=[^a-zA-Z])"
+ end
+
+ local capturedkeywords = words {
+ "and", "break", "do", "else", "elseif", "end", "false", "for", "function", -- "goto",
+ "if", "in", "local", "nil", "not", "or", "repeat", "return", "then", "true",
+ "until", "while",
+ }
+
+ local capturedbuiltin = words {
+ "assert", "collectgarbage", "dofile", "error", "getmetatable",
+ "ipairs", "load", "loadfile", "module", "next", "pairs",
+ "pcall", "print", "rawequal", "rawget", "rawset", "require",
+ "setmetatable", "tonumber", "tostring", "type", "unpack", "xpcall", "select",
+ "string", "table", "coroutine", "debug", "file", "io", "lpeg", "math", "os", "package", "bit32", "utf8",
+ -- todo: also extra luametatex ones
+ }
+
+ local capturedconstants = words {
+ "_G", "_VERSION", "_M", "\\.\\.\\.", "_ENV",
+ "__add", "__call", "__concat", "__div", "__idiv", "__eq", "__gc", "__index",
+ "__le", "__lt", "__metatable", "__mode", "__mul", "__newindex",
+ "__pow", "__sub", "__tostring", "__unm", "__len",
+ "__pairs", "__ipairs",
+ "__close",
+ "NaN",
+ "<const>", "<toclose>",
+ }
+
+ local capturedcsnames = words { -- todo: option
+ "commands",
+ "context",
+ -- "ctxcmd",
+ -- "ctx",
+ "metafun",
+ "metapost",
+ "ctx[A-Za-z_]*",
+ }
+
+ local capturedoperators = oneof {
+ "+", "-", "*", "/", "%", "^",
+ "#", "=", "<", ">",
+ ";", ":", ",", ".",
+ "{", "}", "[", "]", "(", ")",
+ "|", "~", "'"
+ }
+
+ local spaces = "\\s*"
+
+ local identifier = "[_\\w][_\\w0-9]*"
+ local qualifier = "[\\.\\:]"
+ local optionalqualifier = spaces .. "[\\.\\:]*" .. spaces
+
+ local doublequote = "\""
+ local singlequote = "\'"
+
+ local doublecontent = "(?:\\\\\"|[^\"])*"
+ local singlecontent = "(?:\\\\\'|[^\'])*"
+
+ local captureddouble = capture(doublequote) .. capture(doublecontent) .. capture(doublequote)
+ local capturedsingle = capture(singlequote) .. capture(singlecontent) .. capture(singlequote)
+
+ local longcommentopen = "--\\[\\["
+ local longcommentclose = "\\]\\]"
+
+ local longstringopen = "\\[(=*)\\["
+ local longstringclose = "\\](\\2)\\]"
+
+ local shortcomment = "--.*$\\n?"
+
+ local hexnumber = "[\\-]?0[xX][A-Fa-f0-9]+(\\.[A-Fa-f0-9]+)?([eEpP]\\-?[A-Fa-f0-9]+)?"
+ local decnumber = "[\\-]?[0-9]+(\\.[0-9]+)?([eEpP]\\-?[0-9]+)?"
+
+ local capturedidentifier = capture(identifier)
+ local capturedgotodelimiter = capture("::")
+ local capturedqualifier = capture(qualifier)
+ local capturedgoto = capture("goto")
+
+ local style, styled = styler("lua")
+
+ local lualexer = {
+
+ category = "lua",
+ description = "ConTeXt Lua",
+ -- suffixes = { "lua", "luc", "cld", "tuc", "luj", "lum", "tma", "lfg", "luv", "lui" },
+ version = "1.0.0",
+
+ setup = configuration {
+ pairs = {
+ { "(", ")" },
+ { "{", "}" },
+ { "[", "]" },
+ },
+ comments = {
+ inline = "--",
+ display = { "--[[", "]]" },
+ },
+ },
+
+ repository = {
+
+ shortcomment = {
+ name = style("context.comment", "comment.short"),
+ match = shortcomment,
+ },
+
+ longcomment = {
+ name = style("context.comment", "comment.long"),
+ ["begin"] = longcommentopen,
+ ["end"] = longcommentclose,
+ },
+
+ keyword = {
+ name = style("context.keyword", "reserved.keyword"),
+ match = capturedkeywords,
+ },
+
+ builtin = {
+ name = style("context.plain", "reserved.builtin"),
+ match = capturedbuiltin,
+ },
+
+ constant = {
+ name = style("context.data", "reserved.constants"),
+ match = capturedconstants,
+ },
+
+ csname = {
+ name = style("context.user", "csname"),
+ ["begin"] = capturedcsnames,
+ ["end"] = "(?!(" .. optionalqualifier .. identifier .. "))",
+ patterns = {
+ {
+ match = qualifier,
+ name = style("context.operator", "csname.qualifier")
+ },
+ }
+ },
+
+ identifier_keyword = {
+ match = spaces .. capturedqualifier .. spaces .. capturedkeywords,
+ captures = {
+ ["1"] = styled("context.operator", "identifier.keyword"),
+ ["2"] = styled("context.warning", "identifier.keyword"),
+ },
+ },
+
+ identifier_valid = {
+ name = style("context.default", "identifier.valid"),
+ match = identifier,
+ },
+
+ ["goto"] = {
+ match = capturedgoto .. spaces .. capturedidentifier,
+ captures = {
+ ["1"] = styled("context.keyword", "goto.keyword"),
+ ["2"] = styled("context.grouping", "goto.target"),
+ }
+ },
+
+ label = {
+ match = capturedgotodelimiter .. capturedidentifier .. capturedgotodelimiter,
+ captures = {
+ ["1"] = styled("context.keyword", "label.open"),
+ ["2"] = styled("context.grouping", "label.target"),
+ ["3"] = styled("context.keyword", "label.close"),
+ }
+ },
+
+ operator = {
+ name = style("context.special", "operator"),
+ match = capturedoperators,
+ },
+
+ string_double = {
+ match = captureddouble,
+ captures = {
+ ["1"] = styled("context.special", "doublequoted.open"),
+ ["2"] = styled("context.string", "doublequoted.text"),
+ ["3"] = styled("context.special", "doublequoted.close"),
+ },
+ },
+
+ string_single = {
+ match = capturedsingle,
+ captures = {
+ ["1"] = styled("context.special", "singlequoted.open"),
+ ["2"] = styled("context.string", "singlequoted.text"),
+ ["3"] = styled("context.special", "singlequoted.close"),
+ },
+ },
+
+ string_long = {
+ name = style("context.string", "long.text"),
+ ["begin"] = longstringopen,
+ ["end"] = longstringclose,
+ beginCaptures = { ["0"] = styled("context.special", "string.long.open") },
+ endCaptures = { ["0"] = styled("context.special", "string.long.close") },
+ },
+
+ number_hex = {
+ name = style("context.number", "hexnumber"),
+ match = hexnumber,
+ },
+
+ number = {
+ name = style("context.number", "decnumber"),
+ match = decnumber,
+ },
+
+ },
+
+ patterns = {
+ include("#keyword"),
+ include("#buildin"),
+ include("#constant"),
+ include("#csname"),
+ include("#goto"),
+ include("#number_hex"),
+ include("#number"),
+ include("#identifier_keyword"),
+ include("#identifier_valid"),
+ include("#longcomment"),
+ include("#string_long"),
+ include("#string_double"),
+ include("#string_single"),
+ include("#shortcomment"),
+ include("#label"),
+ include("#operator"),
+ },
+
+ }
+
+ local texstringopen = "\\\\!!bs"
+ local texstringclose = "\\\\!!es"
+ local texcommand = "\\\\[A-Za-z\127-\255@\\!\\?_]*"
+
+ local cldlexer = {
+
+ category = "cld",
+ description = "ConTeXt CLD",
+ suffixes = { "lua", "luc", "cld", "tuc", "luj", "lum", "tma", "lfg", "luv", "lui" },
+ version = lualexer.version,
+ setup = lualexer.setup,
+
+ repository = {
+
+ texstring = {
+ name = style("context.string", "texstring.text"),
+ ["begin"] = texstringopen,
+ ["end"] = texstringclose,
+ beginCaptures = { ["0"] = styled("context.special", "texstring.open") },
+ endCaptures = { ["0"] = styled("context.special", "texstring.close") },
+ },
+
+ -- texcomment = {
+ -- -- maybe some day
+ -- },
+
+ texcommand = {
+ name = style("context.warning", "texcommand"),
+ match = texcommand
+ },
+
+ },
+
+ patterns = {
+ include("#texstring"),
+ -- include("#texcomment"),
+ include("#texcommand"),
+ },
+
+ }
+
+ table.merge (cldlexer.repository,lualexer.repository)
+ table.imerge(cldlexer.patterns, lualexer.patterns)
+
+ registerlexer(lualexer)
+ registerlexer(cldlexer)
+
+ end
+
+ -- The xml lexer.
+
+ local xmllexer, xmlconfiguration do
+
+ local spaces = "\\s*"
+
+ local namespace = "(?:[-\\w.]+:)?"
+ local name = "[-\\w.:]+"
+
+ local equal = "="
+
+ local elementopen = "<"
+ local elementclose = ">"
+ local elementopenend = "</"
+ local elementempty = "/?"
+ local elementnoclose = "?:([^>]*)"
+
+ local entity = "&.*?;"
+
+ local doublequote = "\""
+ local singlequote = "\'"
+
+ local doublecontent = "(?:\\\\\"|[^\"])*"
+ local singlecontent = "(?:\\\\\'|[^\'])*"
+
+ local captureddouble = capture(doublequote) .. capture(doublecontent) .. capture(doublequote)
+ local capturedsingle = capture(singlequote) .. capture(singlecontent) .. capture(singlequote)
+
+ local capturednamespace = capture(namespace)
+ local capturedname = capture(name)
+ local capturedopen = capture(elementopen)
+ local capturedclose = capture(elementclose)
+ local capturedempty = capture(elementempty)
+ local capturedopenend = capture(elementopenend)
+
+ local cdataopen = "<!\\[CDATA\\["
+ local cdataclose = "]]>"
+
+ local commentopen = "<!--"
+ local commentclose = "-->"
+
+ local processingopen = "<\\?"
+ local processingclose = "\\?>"
+
+ local instructionopen = processingopen .. name
+ local instructionclose = processingclose
+
+ local xmlopen = processingopen .. "xml"
+ local xmlclose = processingclose
+
+ local luaopen = processingopen .. "lua"
+ local luaclose = processingclose
+
+ local style, styled = styler("xml")
+
+ registerlexer {
+
+ category = "xml",
+ description = "ConTeXt XML",
+ suffixes = {
+ "xml", "xsl", "xsd", "fo", "exa", "rlb", "rlg", "rlv", "rng",
+ "xfdf", "xslt", "dtd", "lmx", "htm", "html", "xhtml", "ctx",
+ "export", "svg", "xul",
+ },
+ version = "1.0.0",
+
+ setup = configuration {
+ comments = {
+ display = { "<!--", "-->" },
+ },
+ },
+
+ repository = {
+
+ attribute_double = {
+ match = capturednamespace .. capturedname .. spaces .. equal .. spaces .. captureddouble,
+ captures = {
+ ["1"] = styled("context.plain", "attribute.double.namespace"),
+ ["2"] = styled("context.constant", "attribute.double.name"),
+ ["3"] = styled("context.special", "attribute.double.open"),
+ ["4"] = styled("context.string", "attribute.double.text"),
+ ["5"] = styled("context.special", "attribute.double.close"),
+ },
+ },
+
+ attribute_single = {
+ match = capturednamespace .. capturedname .. spaces .. equal .. spaces .. capturedsingle,
+ captures = {
+ ["1"] = styled("context.plain", "attribute.single.namespace"),
+ ["2"] = styled("context.constant", "attribute.single.name"),
+ ["3"] = styled("context.special", "attribute.single.open"),
+ ["4"] = styled("context.string", "attribute.single.text"),
+ ["5"] = styled("context.special", "attribute.single.close"),
+ },
+ },
+
+ attributes = {
+ patterns = {
+ include("#attribute_double"),
+ include("#attribute_single"),
+ }
+ },
+
+ entity = {
+ name = style("context.constant", "entity"),
+ match = entity,
+ },
+
+ instruction = {
+ name = style("context.default", "instruction.text"),
+ ["begin"] = instructionopen,
+ ["end"] = instructionclose,
+ beginCaptures = { ["0"] = styled("context.command", "instruction.open") },
+ endCaptures = { ["0"] = styled("context.command", "instruction.close") },
+ },
+
+ instruction_xml = {
+ ["begin"] = xmlopen,
+ ["end"] = xmlclose,
+ beginCaptures = { ["0"] = styled("context.command", "instruction.xml.open") },
+ endCaptures = { ["0"] = styled("context.command", "instruction.xml.close") },
+ patterns = { include("#attributes") }
+ },
+
+ instruction_lua = {
+ ["begin"] = luaopen,
+ ["end"] = luaclose,
+ patterns = embedded("cld"),
+ beginCaptures = { ["0"] = styled("context.command", "instruction.lua.open") },
+ endCaptures = { ["0"] = styled("context.command", "instruction.lua.close") },
+ },
+
+ cdata = {
+ name = style("context.default", "cdata.text"),
+ ["begin"] = cdataopen,
+ ["end"] = cdataclose,
+ beginCaptures = { ["0"] = styled("context.command", "cdata.open") },
+ endCaptures = { ["0"] = styled("context.command", "cdata.close") },
+ },
+
+ comment = {
+ name = style("context.comment", "comment.text"),
+ ["begin"] = commentopen,
+ ["end"] = commentclose,
+ beginCaptures = { ["0"] = styled("context.command", "comment.open") },
+ endCaptures = { ["0"] = styled("context.command", "comment.close") },
+ },
+
+ open = {
+ ["begin"] = capturedopen .. capturednamespace .. capturedname,
+ ["end"] = capturedempty .. capturedclose,
+ patterns = { include("#attributes") },
+ beginCaptures = {
+ ["1"] = styled("context.keyword", "open.open"),
+ ["2"] = styled("context.plain", "open.namespace"),
+ ["3"] = styled("context.keyword", "open.name"),
+ },
+ endCaptures = {
+ ["1"] = styled("context.keyword", "open.empty"),
+ ["2"] = styled("context.keyword", "open.close"),
+ },
+ },
+
+ close = {
+ match = capturedopenend .. capturednamespace .. capturedname .. spaces .. capturedclose,
+ captures = {
+ ["1"] = styled("context.keyword", "close.open"),
+ ["2"] = styled("context.plain", "close.namespace"),
+ ["3"] = styled("context.keyword", "close.name"),
+ ["4"] = styled("context.keyword", "close.close"),
+ },
+ },
+
+ element_error = {
+ name = style("context.error","error"),
+ match = elementopen .. elementnoclose .. elementclose,
+ },
+
+ },
+
+ patterns = {
+ -- include("#preamble"),
+ include("#comment"),
+ include("#cdata"),
+ -- include("#doctype"),
+ include("#instruction_xml"),
+ include("#instruction_lua"),
+ include("#instruction"),
+ include("#close"),
+ include("#open"),
+ include("#element_error"),
+ include("#entity"),
+ },
+
+ }
+
+ end
+
+ -- The bibtex lexer. Again we assume the keys to be on the same line as the
+ -- first snippet of the value.
+
+ do
+
+ local spaces = "\\s*"
+ local open = "{"
+ local close = "}"
+ local hash = "#"
+ local equal = "="
+ local comma = ","
+
+ local doublequote = "\""
+ local doublecontent = "(?:\\\\\"|[^\"])*"
+
+ local singlequote = "\'"
+ local singlecontent = "(?:\\\\\'|[^\'])*"
+
+ local groupopen = "{"
+ local groupclose = "}"
+ local groupcontent = "(?:\\\\{|\\\\}|[^\\{\\}])*"
+
+ local shortcut = "@(?:string|String|STRING)" -- enforce consistency
+ local comment = "@(?:comment|Comment|COMMENT)" -- enforce consistency
+
+ local keyword = "[a-zA-Z0-9\\_@:\\-]+"
+
+ local capturedcomment = spaces .. capture(comment) .. spaces
+ local capturedshortcut = spaces .. capture(shortcut) .. spaces
+ local capturedkeyword = spaces .. capture(keyword) .. spaces
+ local capturedopen = spaces .. capture(open) .. spaces
+ local capturedclose = spaces .. capture(close) .. spaces
+ local capturedequal = spaces .. capture(equal) .. spaces
+ local capturedcomma = spaces .. capture(comma) .. spaces
+ local capturedhash = spaces .. capture(hash) .. spaces
+
+ local captureddouble = spaces .. capture(doublequote) .. capture(doublecontent) .. capture(doublequote) .. spaces
+ local capturedsingle = spaces .. capture(singlequote) .. capture(singlecontent) .. capture(singlequote) .. spaces
+ local capturedgroup = spaces .. capture(groupopen) .. capture(groupcontent) .. capture(groupclose) .. spaces
+
+ local forget = "%.*$\\n?"
+
+ local style, styled = styler("bibtex")
+
+ registerlexer {
+
+ category = "bibtex",
+ description = "ConTeXt bibTeX",
+ suffixes = { "bib", "btx" },
+ version = "1.0.0",
+
+ setup = configuration {
+ pairs = {
+ { "{", "}" },
+ },
+ comments = {
+ inline = "%",
+ },
+ },
+
+ repository = {
+
+ forget = {
+ name = style("context.comment", "comment.comment.inline"),
+ match = forget,
+ },
+
+ comment = {
+ name = style("context.comment", "comment.comment.content"),
+ ["begin"] = capturedcomment .. capturedopen,
+ ["end"] = capturedclose,
+ beginCaptures = {
+ ["1"] = styled("context.keyword", "comment.name"),
+ ["2"] = styled("context.grouping", "comment.open"),
+ },
+ endCaptures = {
+ ["1"] = styled("context.grouping", "comment.close"),
+ },
+ },
+
+ -- a bit inefficient but good enough
+
+ string_double = {
+ match = capturedkeyword .. capturedequal .. captureddouble,
+ captures = {
+ ["1"] = styled("context.command","doublequoted.key"),
+ ["2"] = styled("context.operator","doublequoted.equal"),
+ ["3"] = styled("context.special", "doublequoted.open"),
+ ["4"] = styled("context.text", "doublequoted.text"),
+ ["5"] = styled("context.special", "doublequoted.close"),
+ },
+ },
+
+ string_single = {
+ match = capturedkeyword .. capturedequal .. capturedsingle,
+ captures = {
+ ["1"] = styled("context.command","singlequoted.key"),
+ ["2"] = styled("context.operator","singlequoted.equal"),
+ ["3"] = styled("context.special", "singlequoted.open"),
+ ["4"] = styled("context.text", "singlequoted.text"),
+ ["5"] = styled("context.special", "singlequoted.close"),
+ },
+ },
+
+ string_grouped = {
+ match = capturedkeyword .. capturedequal .. capturedgroup,
+ captures = {
+ ["1"] = styled("context.command","grouped.key"),
+ ["2"] = styled("context.operator","grouped.equal"),
+ ["3"] = styled("context.operator", "grouped.open"),
+ ["4"] = styled("context.text", "grouped.text"),
+ ["5"] = styled("context.operator", "grouped.close"),
+ },
+ },
+
+ string_value = {
+ match = capturedkeyword .. capturedequal .. capturedkeyword,
+ captures = {
+ ["1"] = styled("context.command", "value.key"),
+ ["2"] = styled("context.operator", "value.equal"),
+ ["3"] = styled("context.text", "value.text"),
+ },
+ },
+
+ string_concat = {
+ patterns = {
+ {
+ match = capturedhash .. captureddouble,
+ captures = {
+ ["1"] = styled("context.operator","concat.doublequoted.concatinator"),
+ ["2"] = styled("context.special", "concat.doublequoted.open"),
+ ["3"] = styled("context.text", "concat.doublequoted.text"),
+ ["4"] = styled("context.special", "concat.doublequoted.close"),
+ }
+ },
+ {
+ match = capturedhash .. capturedsingle,
+ captures = {
+ ["1"] = styled("context.operator","concat.singlequoted.concatinator"),
+ ["2"] = styled("context.special", "concat.singlequoted.open"),
+ ["3"] = styled("context.text", "concat.singlequoted.text"),
+ ["4"] = styled("context.special", "concat.singlequoted.close"),
+ },
+ },
+ {
+ match = capturedhash .. capturedgroup,
+ captures = {
+ ["1"] = styled("context.operator","concat.grouped.concatinator"),
+ ["2"] = styled("context.operator", "concat.grouped.open"),
+ ["3"] = styled("context.text", "concat.grouped.text"),
+ ["4"] = styled("context.operator", "concat.grouped.close"),
+ },
+ },
+ {
+ match = capturedhash .. capturedkeyword,
+ captured = {
+ ["1"] = styled("context.operator","concat.value.concatinator"),
+ ["2"] = styled("context.text", "concat.value.text"),
+ },
+ },
+ },
+ },
+
+ separator = {
+ match = capturedcomma,
+ name = style("context.operator","definition.separator"),
+ },
+
+ definition = {
+ name = style("context.warning","definition.error"),
+ ["begin"] = capturedkeyword .. capturedopen .. capturedkeyword .. capturedcomma,
+ ["end"] = capturedclose,
+ beginCaptures = {
+ ["1"] = styled("context.keyword", "definition.category"),
+ ["2"] = styled("context.grouping", "definition.open"),
+ ["3"] = styled("context.warning", "definition.label.text"),
+ ["3"] = styled("context.operator", "definition.label.separator"),
+ },
+ endCaptures = {
+ ["1"] = styled("context.grouping", "definition.close"),
+ },
+ patterns = {
+ include("#string_double"),
+ include("#string_single"),
+ include("#string_grouped"),
+ include("#string_value"),
+ include("#string_concat"),
+ include("#separator"),
+ },
+ },
+
+ concatinator = {
+ match = capturedhash,
+ name = style("context.operator","definition.concatinator"),
+ },
+
+ shortcut = {
+ name = style("context.warning","shortcut.error"),
+ ["begin"] = capturedshortcut .. capturedopen,
+ ["end"] = capturedclose,
+ beginCaptures = {
+ ["1"] = styled("context.keyword", "shortcut.name"),
+ ["2"] = styled("context.grouping", "shortcut.open"),
+ },
+ endCaptures = {
+ ["1"] = styled("context.grouping", "shortcut.close"),
+ },
+ patterns = {
+ include("#string_double"),
+ include("#string_single"),
+ include("#string_grouped"),
+ include("#string_value"),
+ include("#string_concat"),
+ },
+ },
+
+ },
+
+ patterns = {
+ include("#forget"),
+ include("#comment"),
+ include("#shortcut"),
+ include("#definition"),
+ },
+
+ }
+
+ end
+
+ -- The sql lexer (only needed occasionally in documentation and so).
+
+ do
+
+ -- ANSI SQL 92 | 99 | 2003
+
+ local function words(list)
+ table.sort(list,sorter)
+ local str = table.concat(list,"|")
+ return "(" .. str .. "|" .. string.upper(str) .. ")" .. "(?=[^a-zA-Z])"
+ end
+
+ local capturedkeywords = words {
+ "absolute", "action", "add", "after", "all", "allocate", "alter", "and", "any",
+ "are", "array", "as", "asc", "asensitive", "assertion", "asymmetric", "at",
+ "atomic", "authorization", "avg", "before", "begin", "between", "bigint",
+ "binary", "bit", "bit_length", "blob", "boolean", "both", "breadth", "by",
+ "call", "called", "cascade", "cascaded", "case", "cast", "catalog", "char",
+ "char_length", "character", "character_length", "check", "clob", "close",
+ "coalesce", "collate", "collation", "column", "commit", "condition", "connect",
+ "connection", "constraint", "constraints", "constructor", "contains", "continue",
+ "convert", "corresponding", "count", "create", "cross", "cube", "current",
+ "current_date", "current_default_transform_group", "current_path",
+ "current_role", "current_time", "current_timestamp",
+ "current_transform_group_for_type", "current_user", "cursor", "cycle", "data",
+ "date", "day", "deallocate", "dec", "decimal", "declare", "default",
+ "deferrable", "deferred", "delete", "depth", "deref", "desc", "describe",
+ "descriptor", "deterministic", "diagnostics", "disconnect", "distinct", "do",
+ "domain", "double", "drop", "dynamic", "each", "element", "else", "elseif",
+ "end", "equals", "escape", "except", "exception", "exec", "execute", "exists",
+ "exit", "external", "extract", "false", "fetch", "filter", "first", "float",
+ "for", "foreign", "found", "free", "from", "full", "function", "general", "get",
+ "global", "go", "goto", "grant", "group", "grouping", "handler", "having",
+ "hold", "hour", "identity", "if", "immediate", "in", "indicator", "initially",
+ "inner", "inout", "input", "insensitive", "insert", "int", "integer",
+ "intersect", "interval", "into", "is", "isolation", "iterate", "join", "key",
+ "language", "large", "last", "lateral", "leading", "leave", "left", "level",
+ "like", "local", "localtime", "localtimestamp", "locator", "loop", "lower",
+ "map", "match", "max", "member", "merge", "method", "min", "minute", "modifies",
+ "module", "month", "multiset", "names", "national", "natural", "nchar", "nclob",
+ "new", "next", "no", "none", "not", "null", "nullif", "numeric", "object",
+ "octet_length", "of", "old", "on", "only", "open", "option", "or", "order",
+ "ordinality", "out", "outer", "output", "over", "overlaps", "pad", "parameter",
+ "partial", "partition", "path", "position", "precision", "prepare", "preserve",
+ "primary", "prior", "privileges", "procedure", "public", "range", "read",
+ "reads", "real", "recursive", "ref", "references", "referencing", "relative",
+ "release", "repeat", "resignal", "restrict", "result", "return", "returns",
+ "revoke", "right", "role", "rollback", "rollup", "routine", "row", "rows",
+ "savepoint", "schema", "scope", "scroll", "search", "second", "section",
+ "select", "sensitive", "session", "session_user", "set", "sets", "signal",
+ "similar", "size", "smallint", "some", "space", "specific", "specifictype",
+ "sql", "sqlcode", "sqlerror", "sqlexception", "sqlstate", "sqlwarning", "start",
+ "state", "static", "submultiset", "substring", "sum", "symmetric", "system",
+ "system_user", "table", "tablesample", "temporary", "then", "time", "timestamp",
+ "timezone_hour", "timezone_minute", "to", "trailing", "transaction", "translate",
+ "translation", "treat", "trigger", "trim", "true", "under", "undo", "union",
+ "unique", "unknown", "unnest", "until", "update", "upper", "usage", "user",
+ "using", "value", "values", "varchar", "varying", "view", "when", "whenever",
+ "where", "while", "window", "with", "within", "without", "work", "write", "year",
+ "zone",
+ }
+
+ -- The dialects list is taken from drupal.org with standard subtracted.
+ --
+ -- MySQL 3.23.x | 4.x | 5.x
+ -- PostGreSQL 8.1
+ -- MS SQL Server 2000
+ -- MS ODBC
+ -- Oracle 10.2
+
+ local captureddialects = words {
+ "a", "abort", "abs", "access", "ada", "admin", "aggregate", "alias", "also",
+ "always", "analyse", "analyze", "assignment", "attribute", "attributes", "audit",
+ "auto_increment", "avg_row_length", "backup", "backward", "bernoulli", "bitvar",
+ "bool", "break", "browse", "bulk", "c", "cache", "cardinality", "catalog_name",
+ "ceil", "ceiling", "chain", "change", "character_set_catalog",
+ "character_set_name", "character_set_schema", "characteristics", "characters",
+ "checked", "checkpoint", "checksum", "class", "class_origin", "cluster",
+ "clustered", "cobol", "collation_catalog", "collation_name", "collation_schema",
+ "collect", "column_name", "columns", "command_function", "command_function_code",
+ "comment", "committed", "completion", "compress", "compute", "condition_number",
+ "connection_name", "constraint_catalog", "constraint_name", "constraint_schema",
+ "containstable", "conversion", "copy", "corr", "covar_pop", "covar_samp",
+ "createdb", "createrole", "createuser", "csv", "cume_dist", "cursor_name",
+ "database", "databases", "datetime", "datetime_interval_code",
+ "datetime_interval_precision", "day_hour", "day_microsecond", "day_minute",
+ "day_second", "dayofmonth", "dayofweek", "dayofyear", "dbcc", "defaults",
+ "defined", "definer", "degree", "delay_key_write", "delayed", "delimiter",
+ "delimiters", "dense_rank", "deny", "derived", "destroy", "destructor",
+ "dictionary", "disable", "disk", "dispatch", "distinctrow", "distributed", "div",
+ "dual", "dummy", "dump", "dynamic_function", "dynamic_function_code", "enable",
+ "enclosed", "encoding", "encrypted", "end-exec", "enum", "errlvl", "escaped",
+ "every", "exclude", "excluding", "exclusive", "existing", "exp", "explain",
+ "fields", "file", "fillfactor", "final", "float4", "float8", "floor", "flush",
+ "following", "force", "fortran", "forward", "freetext", "freetexttable",
+ "freeze", "fulltext", "fusion", "g", "generated", "granted", "grants",
+ "greatest", "header", "heap", "hierarchy", "high_priority", "holdlock", "host",
+ "hosts", "hour_microsecond", "hour_minute", "hour_second", "identified",
+ "identity_insert", "identitycol", "ignore", "ilike", "immutable",
+ "implementation", "implicit", "include", "including", "increment", "index",
+ "infile", "infix", "inherit", "inherits", "initial", "initialize", "insert_id",
+ "instance", "instantiable", "instead", "int1", "int2", "int3", "int4", "int8",
+ "intersection", "invoker", "isam", "isnull", "k", "key_member", "key_type",
+ "keys", "kill", "lancompiler", "last_insert_id", "least", "length", "less",
+ "limit", "lineno", "lines", "listen", "ln", "load", "location", "lock", "login",
+ "logs", "long", "longblob", "longtext", "low_priority", "m", "matched",
+ "max_rows", "maxextents", "maxvalue", "mediumblob", "mediumint", "mediumtext",
+ "message_length", "message_octet_length", "message_text", "middleint",
+ "min_rows", "minus", "minute_microsecond", "minute_second", "minvalue",
+ "mlslabel", "mod", "mode", "modify", "monthname", "more", "move", "mumps",
+ "myisam", "name", "nesting", "no_write_to_binlog", "noaudit", "nocheck",
+ "nocompress", "nocreatedb", "nocreaterole", "nocreateuser", "noinherit",
+ "nologin", "nonclustered", "normalize", "normalized", "nosuperuser", "nothing",
+ "notify", "notnull", "nowait", "nullable", "nulls", "number", "octets", "off",
+ "offline", "offset", "offsets", "oids", "online", "opendatasource", "openquery",
+ "openrowset", "openxml", "operation", "operator", "optimize", "optionally",
+ "options", "ordering", "others", "outfile", "overlay", "overriding", "owner",
+ "pack_keys", "parameter_mode", "parameter_name", "parameter_ordinal_position",
+ "parameter_specific_catalog", "parameter_specific_name",
+ "parameter_specific_schema", "parameters", "pascal", "password", "pctfree",
+ "percent", "percent_rank", "percentile_cont", "percentile_disc", "placing",
+ "plan", "pli", "postfix", "power", "preceding", "prefix", "preorder", "prepared",
+ "print", "proc", "procedural", "process", "processlist", "purge", "quote",
+ "raid0", "raiserror", "rank", "raw", "readtext", "recheck", "reconfigure",
+ "regexp", "regr_avgx", "regr_avgy", "regr_count", "regr_intercept", "regr_r2",
+ "regr_slope", "regr_sxx", "regr_sxy", "regr_syy", "reindex", "reload", "rename",
+ "repeatable", "replace", "replication", "require", "reset", "resource",
+ "restart", "restore", "returned_cardinality", "returned_length",
+ "returned_octet_length", "returned_sqlstate", "rlike", "routine_catalog",
+ "routine_name", "routine_schema", "row_count", "row_number", "rowcount",
+ "rowguidcol", "rowid", "rownum", "rule", "save", "scale", "schema_name",
+ "schemas", "scope_catalog", "scope_name", "scope_schema", "second_microsecond",
+ "security", "self", "separator", "sequence", "serializable", "server_name",
+ "setof", "setuser", "share", "show", "shutdown", "simple", "soname", "source",
+ "spatial", "specific_name", "sql_big_result", "sql_big_selects",
+ "sql_big_tables", "sql_calc_found_rows", "sql_log_off", "sql_log_update",
+ "sql_low_priority_updates", "sql_select_limit", "sql_small_result",
+ "sql_warnings", "sqlca", "sqrt", "ssl", "stable", "starting", "statement",
+ "statistics", "status", "stddev_pop", "stddev_samp", "stdin", "stdout",
+ "storage", "straight_join", "strict", "string", "structure", "style",
+ "subclass_origin", "sublist", "successful", "superuser", "synonym", "sysdate",
+ "sysid", "table_name", "tables", "tablespace", "temp", "template", "terminate",
+ "terminated", "text", "textsize", "than", "ties", "tinyblob", "tinyint",
+ "tinytext", "toast", "top", "top_level_count", "tran", "transaction_active",
+ "transactions_committed", "transactions_rolled_back", "transform", "transforms",
+ "trigger_catalog", "trigger_name", "trigger_schema", "truncate", "trusted",
+ "tsequal", "type", "uescape", "uid", "unbounded", "uncommitted", "unencrypted",
+ "unlisten", "unlock", "unnamed", "unsigned", "updatetext", "use",
+ "user_defined_type_catalog", "user_defined_type_code", "user_defined_type_name",
+ "user_defined_type_schema", "utc_date", "utc_time", "utc_timestamp", "vacuum",
+ "valid", "validate", "validator", "var_pop", "var_samp", "varbinary", "varchar2",
+ "varcharacter", "variable", "variables", "verbose", "volatile", "waitfor",
+ "width_bucket", "writetext", "x509", "xor", "year_month", "zerofill",
+ }
+
+ local capturedoperators = oneof {
+ "+", "-", "*", "/",
+ "%", "^", "!", "&", "|", "?", "~",
+ "=", "<", ">",
+ ";", ":", ".",
+ "{", "}", "[", "]", "(", ")",
+ }
+
+ local spaces = "\\s*"
+ local identifier = "[a-zA-Z\\_][a-zA-Z0-9\\_]*"
+
+ local comment = "%.*$\\n?"
+ local commentopen = "/\\*"
+ local commentclose = "\\*/"
+
+ local doublequote = "\""
+ local singlequote = "\'"
+ local reversequote = "`"
+
+ local doublecontent = "(?:\\\\\"|[^\"])*"
+ local singlecontent = "(?:\\\\\'|[^\'])*"
+ local reversecontent = "(?:\\\\`|[^`])*"
+
+ local decnumber = "[\\-]?[0-9]+(\\.[0-9]+)?([eEpP]\\-?[0-9]+)?"
+
+ local captureddouble = capture(doublequote) .. capture(doublecontent) .. capture(doublequote)
+ local capturedsingle = capture(singlequote) .. capture(singlecontent) .. capture(singlequote)
+ local capturedreverse = capture(reversequote) .. capture(reversecontent) .. capture(reversequote)
+
+ local style, styled = styler("sql")
+
+ registerlexer {
+
+ category = "sql",
+ description = "ConTeXt SQL",
+ suffixes = { "sql" },
+ version = "1.0.0",
+
+ setup = configuration {
+-- comments = {
+-- inline = "...",
+-- display = { "...", "..." },
+-- },
+ },
+
+ repository = {
+
+ comment_short = {
+ name = style("context.comment", "comment.comment"),
+ match = comment,
+ },
+
+ comment_long = {
+ name = style("context.comment", "comment.text"),
+ ["begin"] = commentopen,
+ ["end"] = commentclose,
+ beginCaptures = { ["0"] = styled("context.command", "comment.open") },
+ endCaptures = { ["0"] = styled("context.command", "comment.close") },
+ },
+
+ keyword_standard = {
+ name = style("context.keyword", "reserved.standard"),
+ match = capturedkeywords,
+ },
+
+ keyword_dialect = {
+ name = style("context.keyword", "reserved.dialect"),
+ match = captureddialects,
+ },
+
+ operator = {
+ name = style("context.special", "operator"),
+ match = capturedoperators,
+
+ },
+
+ identifier = {
+ name = style("context.text", "identifier"),
+ match = identifier,
+ },
+
+ string_double = {
+ match = captureddouble,
+ captures = {
+ ["1"] = styled("context.special", "doublequoted.open"),
+ ["2"] = styled("context.text", "doublequoted.text"),
+ ["3"] = styled("context.special", "doublequoted.close"),
+ },
+ },
+
+ string_single = {
+ match = capturedsingle,
+ captures = {
+ ["1"] = styled("context.special", "singlequoted.open"),
+ ["2"] = styled("context.text", "singlequoted.text"),
+ ["3"] = styled("context.special", "singlequoted.close"),
+ },
+ },
+
+ string_reverse = {
+ match = capturedreverse,
+ captures = {
+ ["1"] = styled("context.special", "reversequoted.open"),
+ ["2"] = styled("context.text", "reversequoted.text"),
+ ["3"] = styled("context.special", "reversequoted.close"),
+ },
+ },
+
+ number = {
+ name = style("context.number", "number"),
+ match = decnumber,
+ },
+
+ },
+
+ patterns = {
+ include("#keyword_standard"),
+ include("#keyword_dialect"),
+ include("#identifier"),
+ include("#string_double"),
+ include("#string_single"),
+ include("#string_reverse"),
+ include("#comment_long"),
+ include("#comment_short"),
+ include("#number"),
+ include("#operator"),
+ },
+
+ }
+
+ end
+
+ -- The bnf lexer (only used for documentation, untested).
+
+ do
+
+ local operators = oneof {
+ "*", "+", "-", "/",
+ ",", ".", ":", ";",
+ "(", ")", "<", ">", "{", "}", "[", "]",
+ "#", "=", "?", "@", "|", " ", "!","$", "%", "&", "\\", "^", "-", "_", "`", "~",
+ }
+
+ local spaces = "\\s*"
+
+ local text = "[a-zA-Z0-9]|" .. operators
+
+ local doublequote = "\""
+ local singlequote = "\'"
+
+ local termopen = "<"
+ local termclose = ">"
+ local termcontent = "([a-zA-Z][a-zA-Z0-9\\-]*)"
+
+ local becomes = "::="
+ local extra = "|"
+
+ local captureddouble = capture(doublequote) .. capture(text) .. capture(doublequote)
+ local capturedsingle = capture(singlequote) .. capture(text) .. capture(singlequote)
+ local capturedterm = capture(termopen) .. capture(termcontent) .. capture(termclose)
+
+ local style, styled = styler("bnf")
+
+ registerlexer {
+
+ category = "bnf",
+ description = "ConTeXt BNF",
+ suffixes = { "bnf" },
+ version = "1.0.0",
+
+ setup = configuration {
+ pairs = {
+ { "<", ">" },
+ },
+ },
+
+ repository = {
+
+ term = {
+ match = capturedterm,
+ captures = {
+ ["1"] = styled("context.command", "term.open"),
+ ["2"] = styled("context.text", "term.text"),
+ ["3"] = styled("context.command", "term.close"),
+ },
+ },
+
+ text_single = {
+ match = capturedsingle,
+ captures = {
+ ["1"] = styled("context.special", "singlequoted.open"),
+ ["2"] = styled("context.text", "singlequoted.text"),
+ ["3"] = styled("context.special", "singlequoted.close"),
+ },
+ },
+
+ text_double = {
+ match = captureddouble,
+ captures = {
+ ["1"] = styled("context.special", "doublequoted.open"),
+ ["2"] = styled("context.text", "doublequoted.text"),
+ ["3"] = styled("context.special", "doublequoted.close"),
+ },
+ },
+
+ becomes = {
+ name = style("context.operator", "symbol.becomes"),
+ match = becomes,
+ },
+
+ extra = {
+ name = style("context.extra", "symbol.extra"),
+ match = extra,
+ },
+
+ },
+
+ patterns = {
+ include("#term"),
+ include("#text_single"),
+ include("#text_reverse"),
+ include("#becomes"),
+ include("#extra"),
+ },
+
+ }
+
+ end
+
+ do
+
+ -- A rather simple one, but consistent with the rest. I don't use an IDE or fancy
+ -- features. No tricks for me.
+
+ local function words(list)
+ table.sort(list,sorter)
+ return "\\b(" .. table.concat(list,"|") .. ")\\b"
+ end
+
+ local capturedkeywords = words { -- copied from cpp.lua
+ -- c
+ "asm", "auto", "break", "case", "const", "continue", "default", "do", "else",
+ "extern", "false", "for", "goto", "if", "inline", "register", "return",
+ "sizeof", "static", "switch", "true", "typedef", "volatile", "while",
+ "restrict",
+ -- hm
+ "_Bool", "_Complex", "_Pragma", "_Imaginary",
+ -- c++.
+ "catch", "class", "const_cast", "delete", "dynamic_cast", "explicit",
+ "export", "friend", "mutable", "namespace", "new", "operator", "private",
+ "protected", "public", "signals", "slots", "reinterpret_cast",
+ "static_assert", "static_cast", "template", "this", "throw", "try", "typeid",
+ "typename", "using", "virtual"
+ }
+
+ local captureddatatypes = words { -- copied from cpp.lua
+ "bool", "char", "double", "enum", "float", "int", "long", "short", "signed",
+ "struct", "union", "unsigned", "void"
+ }
+
+ local capturedluatex = words { -- new
+ "halfword", "scaled", "pointer",
+ }
+
+ local capturedmacros = words { -- copied from cpp.lua
+ "define", "elif", "else", "endif", "error", "if", "ifdef", "ifndef", "import",
+ "include", "line", "pragma", "undef", "using", "warning"
+ }
+
+ local operators = oneof {
+ "*", "+", "-", "/",
+ "%", "^", "!", "&", "?", "~", "|",
+ "=", "<", ">",
+ ";", ":", ".",
+ "{", "}", "[", "]", "(", ")",
+ }
+
+ local spaces = "\\s*"
+
+ local identifier = "[A-Za-z_][A-Za-z_0-9]*"
+
+ local comment = "//.*$\\n?"
+ local commentopen = "/\\*"
+ local commentclose = "\\*/"
+
+ local doublequote = "\""
+ local singlequote = "\'"
+ local reversequote = "`"
+
+ local doublecontent = "(?:\\\\\"|[^\"])*"
+ local singlecontent = "(?:\\\\\'|[^\'])*"
+
+ local captureddouble = capture(doublequote) .. capture(doublecontent) .. capture(doublequote)
+ local capturedsingle = capture(singlequote) .. capture(singlecontent) .. capture(singlequote)
+
+ local texopen = "/\\*tex"
+ local texclose = "\\*/"
+
+ local hexnumber = "[\\-]?0[xX][A-Fa-f0-9]+(\\.[A-Fa-f0-9]+)?([eEpP]\\-?[A-Fa-f0-9]+)?"
+ local decnumber = "[\\-]?[0-9]+(\\.[0-9]+)?([eEpP]\\-?[0-9]+)?"
+
+ local capturedmacros = spaces .. capture("#") .. spaces .. capturedmacros
+
+ local style, styled = styler("c")
+
+ registerlexer {
+
+ category = "cpp",
+ description = "ConTeXt C",
+ suffixes = { "c", "h", "cpp", "hpp" },
+ version = "1.0.0",
+
+ setup = configuration {
+ pairs = {
+ { "{", "}" },
+ { "[", "]" },
+ { "(", ")" },
+ },
+ },
+
+ repository = {
+
+ keyword = {
+ match = capturedkeywords,
+ name = style("context.keyword","c"),
+ },
+
+ datatype = {
+ match = captureddatatypes,
+ name = style("context.keyword","datatype"),
+ },
+
+ luatex = {
+ match = capturedluatex,
+ name = style("context.command","luatex"),
+ },
+
+ macro = {
+ match = capturedmacros,
+ captures = {
+ ["1"] = styled("context.data","macro.tag"),
+ ["2"] = styled("context.data","macro.name"),
+ }
+ },
+
+ texcomment = {
+ ["begin"] = texopen,
+ ["end"] = texclose,
+ patterns = embedded("tex"),
+ beginCaptures = { ["0"] = styled("context.comment", "tex.open") },
+ endCaptures = { ["0"] = styled("context.comment", "tex.close") },
+ },
+
+ longcomment = {
+ name = style("context.comment","long"),
+ ["begin"] = commentopen,
+ ["end"] = commentclose,
+ },
+
+ shortcomment = {
+ name = style("context.comment","short"),
+ match = comment,
+ },
+
+ identifier = {
+ name = style("context.default","identifier"),
+ match = identifier,
+ },
+
+ operator = {
+ name = style("context.operator","any"),
+ match = operators,
+ },
+
+ string_double = {
+ match = captureddouble,
+ captures = {
+ ["1"] = styled("context.special", "doublequoted.open"),
+ ["2"] = styled("context.string", "doublequoted.text"),
+ ["3"] = styled("context.special", "doublequoted.close"),
+ },
+ },
+
+ string_single = {
+ match = capturedsingle,
+ captures = {
+ ["1"] = styled("context.special", "singlequoted.open"),
+ ["2"] = styled("context.string", "singlequoted.text"),
+ ["3"] = styled("context.special", "singlequoted.close"),
+ },
+ },
+
+ hexnumber = {
+ name = style("context.number","hex"),
+ match = hexnumber,
+ },
+
+ decnumber = {
+ name = style("context.number","dec"),
+ match = decnumber,
+ },
+
+ },
+
+ patterns = {
+ include("#keyword"),
+ include("#datatype"),
+ include("#luatex"),
+ include("#identifier"),
+ include("#macro"),
+ include("#string_double"),
+ include("#string_single"),
+ include("#texcomment"),
+ include("#longcomment"),
+ include("#shortcomment"),
+ include("#hexnumber"),
+ include("#decnumber"),
+ include("#operator"),
+ },
+
+ }
+
+ end
+
+ -- The pdf lexer.
+
+ do
+
+ -- we can assume no errors in the syntax
+
+ local spaces = "\\s*"
+
+ local reserved = oneof { "true" ,"false" , "null" }
+ local reference = "R"
+
+ local dictionaryopen = "<<"
+ local dictionaryclose = ">>"
+
+ local arrayopen = "\\["
+ local arrayclose = "\\]"
+
+ local stringopen = "\\("
+ local stringcontent = "(?:\\\\[\\(\\)]|[^\\(\\)])*"
+ local stringclose = "\\)"
+
+ local hexstringopen = "<"
+ local hexstringcontent = "[^>]*"
+ local hexstringclose = ">"
+
+ local unicodebomb = "feff"
+
+ local objectopen = "obj" -- maybe also ^ $
+ local objectclose = "endobj" -- maybe also ^ $
+
+ local streamopen = "^stream$"
+ local streamclose = "^endstream$"
+
+ local name = "/[^\\s<>/\\[\\]\\(\\)]+" -- no need to be more clever than this
+ local integer = "[\\-]?[0-9]+" -- no need to be more clever than this
+ local real = "[\\-]?[0-9]*[\\.]?[0-9]+" -- no need to be more clever than this
+
+ local capturedcardinal = "([0-9]+)"
+
+ local captureddictionaryopen = capture(dictionaryopen)
+ local captureddictionaryclose = capture(dictionaryclose)
+
+ local capturedarrayopen = capture(arrayopen)
+ local capturedarrayclose = capture(arrayclose)
+
+ local capturedobjectopen = capture(objectopen)
+ local capturedobjectclose = capture(objectclose)
+
+ local capturedname = capture(name)
+ local capturedinteger = capture(integer)
+ local capturedreal = capture(real)
+ local capturedreserved = capture(reserved)
+ local capturedreference = capture(reference)
+
+ local capturedunicode = capture(hexstringopen) .. capture(unicodebomb) .. capture(hexstringcontent) .. capture(hexstringclose)
+ local capturedunicode = capture(hexstringopen) .. capture(unicodebomb) .. capture(hexstringcontent) .. capture(hexstringclose)
+ local capturedwhatsit = capture(hexstringopen) .. capture(hexstringcontent) .. capture(hexstringclose)
+ local capturedstring = capture(stringopen) .. capture(stringcontent) .. capture(stringclose)
+
+ local style, styled = styler("pdf")
+
+ -- strings are not ok yet: there can be nested unescaped () but not critical now
+
+ registerlexer {
+
+ category = "pdf",
+ description = "ConTeXt PDF",
+ suffixes = { "pdf" },
+ version = "1.0.0",
+
+ setup = configuration {
+ pairs = {
+ { "<", ">" },
+ { "[", "]" },
+ { "(", ")" },
+ },
+ },
+
+ repository = {
+
+ comment = {
+ name = style("context.comment","comment"),
+ match = "%.*$\\n?",
+ },
+
+ content = {
+ patterns = {
+ { include = "#dictionary" },
+ { include = "#stream" },
+ { include = "#array" },
+ {
+ name = style("context.constant","object.content.name"),
+ match = capturedname,
+ },
+ {
+ match = capturedcardinal .. spaces .. capturedcardinal .. spaces .. capturedreference,
+ captures = {
+ ["1"] = styled("context.warning","content.reference.1"),
+ ["2"] = styled("context.warning","content.reference.2"),
+ ["3"] = styled("context.command","content.reference.3"),
+ }
+ },
+ {
+ name = style("context.number","content.real"),
+ match = capturedreal,
+ },
+ {
+ name = style("context.number","content.integer"),
+ match = capturedinteger,
+ },
+ {
+ match = capturedstring,
+ captures = {
+ ["1"] = styled("context.quote","content.string.open"),
+ ["2"] = styled("context.string","content.string.text"),
+ ["3"] = styled("context.quote","content.string.close"),
+ }
+ },
+ {
+ name = style("context.number","content.reserved"),
+ match = capturedreserved,
+ },
+ {
+ match = capturedunicode,
+ captures = {
+ ["1"] = styled("context.quote","content.unicode.open"),
+ ["2"] = styled("context.plain","content.unicode.bomb"),
+ ["3"] = styled("context.string","content.unicode.text"),
+ ["4"] = styled("context.quote","content.unicode.close"),
+ }
+ },
+ {
+ match = capturedwhatsit,
+ captures = {
+ ["1"] = styled("context.quote","content.whatsit.open"),
+ ["2"] = styled("context.string","content.whatsit.text"),
+ ["3"] = styled("context.quote","content.whatsit.close"),
+ }
+ },
+ },
+ },
+
+ object = {
+ ["begin"] = capturedcardinal .. spaces .. capturedcardinal .. spaces .. capturedobjectopen,
+ ["end"] = capturedobjectclose,
+ patterns = { { include = "#content" } },
+ beginCaptures = {
+ ["1"] = styled("context.warning","object.1"),
+ ["2"] = styled("context.warning","object.2"),
+ ["3"] = styled("context.keyword", "object.open")
+ },
+ endCaptures = {
+ ["1"] = styled("context.keyword", "object.close")
+ },
+ },
+
+ array = {
+ ["begin"] = capturedarrayopen,
+ ["end"] = capturedarrayclose,
+ patterns = { { include = "#content" } },
+ beginCaptures = { ["1"] = styled("context.grouping", "array.open") },
+ endCaptures = { ["1"] = styled("context.grouping", "array.close") },
+ },
+
+ dictionary = {
+ ["begin"] = captureddictionaryopen,
+ ["end"] = captureddictionaryclose,
+ beginCaptures = { ["1"] = styled("context.grouping", "dictionary.open") },
+ endCaptures = { ["1"] = styled("context.grouping", "dictionary.close") },
+ patterns = {
+ {
+ ["begin"] = capturedname .. spaces,
+ ["end"] = "(?=[>])",
+ beginCaptures = { ["1"] = styled("context.command", "dictionary.name") },
+ patterns = { { include = "#content" } },
+ },
+ },
+ },
+
+ xref = {
+ ["begin"] = "xref" .. spaces,
+ ["end"] = "(?=[^0-9])",
+ captures = {
+ ["0"] = styled("context.keyword", "xref.1"),
+ },
+ patterns = {
+ {
+ ["begin"] = capturedcardinal .. spaces .. capturedcardinal .. spaces,
+ ["end"] = "(?=[^0-9])",
+ captures = {
+ ["1"] = styled("context.number", "xref.2"),
+ ["2"] = styled("context.number", "xref.3"),
+ },
+ patterns = {
+ {
+ ["begin"] = capturedcardinal .. spaces .. capturedcardinal .. spaces .. "([fn])" .. spaces,
+ ["end"] = "(?=.)",
+ captures = {
+ ["1"] = styled("context.number", "xref.4"),
+ ["2"] = styled("context.number", "xref.5"),
+ ["3"] = styled("context.keyword", "xref.6"),
+ },
+ },
+ },
+ },
+ },
+ },
+
+ startxref = {
+ ["begin"] = "startxref" .. spaces,
+ ["end"] = "(?=[^0-9])",
+ captures = {
+ ["0"] = styled("context.keyword", "startxref.1"),
+ },
+ patterns = {
+ {
+ ["begin"] = capturedcardinal .. spaces,
+ ["end"] = "(?=.)",
+ captures = {
+ ["1"] = styled("context.number", "startxref.2"),
+ },
+ },
+ },
+ },
+
+ trailer = {
+ name = style("context.keyword", "trailer"),
+ match = "trailer",
+ },
+
+ stream = {
+ ["begin"] = streamopen,
+ ["end"] = streamclose,
+ beginCaptures = { ["0"] = styled("context.keyword", "stream.open") },
+ endCaptures = { ["0"] = styled("context.keyword", "stream.close") },
+ },
+
+ },
+
+ patterns = {
+ include("#object"),
+ include("#comment"),
+ include("#trailer"),
+ include("#dictionary"), -- cheat: trailer dict
+ include("#startxref"),
+ include("#xref"),
+ },
+
+ }
+
+ end
+
+ -- The JSON lexer. I don't want to spend time on (and mess up the lexer) with
+ -- some ugly multistage key/value parser so we just assume that the key is on
+ -- the same line as the colon and the value. It looks bad otherwise anyway.
+
+ do
+
+ local spaces = "\\s*"
+ local separator = "\\,"
+ local becomes = "\\:"
+
+ local arrayopen = "\\["
+ local arrayclose = "\\]"
+
+ local hashopen = "\\{"
+ local hashclose = "\\}"
+
+ local stringopen = "\""
+ local stringcontent = "(?:\\\\\"|[^\"])*"
+ local stringclose = stringopen
+
+ local reserved = oneof { "true", "false", "null" }
+
+ local hexnumber = "[\\-]?0[xX][A-Fa-f0-9]+(\\.[A-Fa-f0-9]+)?([eEpP]\\-?[A-Fa-f0-9]+)?"
+ local decnumber = "[\\-]?[0-9]+(\\.[0-9]+)?([eEpP]\\-?[0-9]+)?"
+
+ local capturedarrayopen = capture(arrayopen)
+ local capturedarrayclose = capture(arrayclose)
+ local capturedhashopen = capture(hashopen)
+ local capturedhashclose = capture(hashclose)
+
+ local capturedreserved = capture(reserved)
+ local capturedbecomes = capture(becomes)
+ local capturedseparator = capture(separator)
+ local capturedstring = capture(stringopen) .. capture(stringcontent) .. capture(stringclose)
+ local capturedhexnumber = capture(hexnumber)
+ local captureddecnumber = capture(decnumber)
+
+ local style, styled = styler("json")
+
+ registerlexer {
+
+ category = "json",
+ description = "ConTeXt JSON",
+ suffixes = { "json" },
+ version = "1.0.0",
+
+ setup = configuration {
+ pairs = {
+ { "{", "}" },
+ { "[", "]" },
+ },
+ },
+
+ repository = {
+
+ separator = {
+ name = style("context.operator","separator"),
+ match = spaces .. capturedseparator,
+ },
+
+ reserved = {
+ name = style("context.primitive","reserved"),
+ match = spaces .. capturedreserved,
+ },
+
+ hexnumber = {
+ name = style("context.number","hex"),
+ match = spaces .. capturedhexnumber,
+ },
+
+ decnumber = {
+ name = style("context.number","dec"),
+ match = spaces .. captureddecnumber,
+ },
+
+ string = {
+ match = spaces .. capturedstring,
+ captures = {
+ ["1"] = styled("context.quote","string.open"),
+ ["2"] = styled("context.string","string.text"),
+ ["3"] = styled("context.quote","string.close"),
+ },
+ },
+
+ kv_reserved = {
+ match = capturedstring .. spaces .. capturedbecomes .. spaces .. capturedreserved,
+ captures = {
+ ["1"] = styled("context.quote", "reserved.key.open"),
+ ["2"] = styled("context.text", "reserved.key.text"),
+ ["3"] = styled("context.quote", "reserved.key.close"),
+ ["4"] = styled("context.operator", "reserved.becomes"),
+ ["5"] = styled("context.primitive","reserved.value"),
+ }
+ },
+
+ kv_hexnumber = {
+ match = capturedstring .. spaces .. capturedbecomes .. spaces .. capturedhexnumber,
+ captures = {
+ ["1"] = styled("context.quote", "hex.key.open"),
+ ["2"] = styled("context.text", "hex.key.text"),
+ ["3"] = styled("context.quote", "hex.key.close"),
+ ["4"] = styled("context.operator","hex.becomes"),
+ ["5"] = styled("context.number", "hex.value"),
+ }
+ },
+
+ kv_decnumber = {
+ match = capturedstring .. spaces .. capturedbecomes .. spaces .. captureddecnumber,
+ captures = {
+ ["1"] = styled("context.quote", "dec.key.open"),
+ ["2"] = styled("context.text", "dec.key.text"),
+ ["3"] = styled("context.quote", "dec.key.close"),
+ ["4"] = styled("context.operator","dec.becomes"),
+ ["5"] = styled("context.number", "dec.value"),
+ }
+ },
+
+ kv_string = {
+ match = capturedstring .. spaces .. capturedbecomes .. spaces .. capturedstring,
+ captures = {
+ ["1"] = styled("context.quote", "string.key.open"),
+ ["2"] = styled("context.text", "string.key.text"),
+ ["3"] = styled("context.quote", "string.key.close"),
+ ["4"] = styled("context.operator","string.becomes"),
+ ["5"] = styled("context.quote", "string.value.open"),
+ ["6"] = styled("context.string", "string.value.text"),
+ ["7"] = styled("context.quote", "string.value.close"),
+ },
+ },
+
+ kv_array = {
+ ["begin"] = capturedstring .. spaces .. capturedbecomes .. spaces .. capturedarrayopen,
+ ["end"] = arrayclose,
+ beginCaptures = {
+ ["1"] = styled("context.quote", "array.key.open"),
+ ["2"] = styled("context.text", "array.key.text"),
+ ["3"] = styled("context.quote", "array.key.close"),
+ ["4"] = styled("context.operator","array.becomes"),
+ ["5"] = styled("context.grouping","array.value.open")
+ },
+ endCaptures = {
+ ["0"] = styled("context.grouping","array.value.close")
+ },
+ patterns = { include("#content") },
+ },
+
+ kv_hash = {
+ ["begin"] = capturedstring .. spaces .. capturedbecomes .. spaces .. capturedhashopen,
+ ["end"] = hashclose,
+ beginCaptures = {
+ ["1"] = styled("context.quote", "hash.key.open"),
+ ["2"] = styled("context.text", "hash.key.text"),
+ ["3"] = styled("context.quote", "hash.key.close"),
+ ["4"] = styled("context.operator","hash.becomes"),
+ ["5"] = styled("context.grouping","hash.value.open")
+ },
+ endCaptures = {
+ ["0"] = styled("context.grouping","hash.value.close")
+ },
+ patterns = { include("#kv_content") },
+ },
+
+ content = {
+ patterns = {
+ include("#string"),
+ include("#hexnumber"),
+ include("#decnumber"),
+ include("#reserved"),
+ include("#hash"),
+ include("#array"),
+ include("#separator"),
+ },
+ },
+
+ kv_content = {
+ patterns = {
+ include("#kv_string"),
+ include("#kv_hexnumber"),
+ include("#kv_decnumber"),
+ include("#kv_reserved"),
+ include("#kv_hash"),
+ include("#kv_array"),
+ include("#separator"),
+ },
+ },
+
+ array = {
+ ["begin"] = arrayopen,
+ ["end"] = arrayclose,
+ beginCaptures = { ["0"] = styled("context.grouping","array.open") },
+ endCaptures = { ["0"] = styled("context.grouping","array.close") },
+ patterns = { include("#content") },
+ },
+
+ hash = {
+ ["begin"] = hashopen,
+ ["end"] = hashclose,
+ beginCaptures = { ["0"] = styled("context.grouping","hash.open") },
+ endCaptures = { ["0"] = styled("context.grouping","hash.close") },
+ patterns = { include("#kv_content") },
+ },
+
+ },
+
+ patterns = {
+ include("#content"),
+ },
+
+ }
+
+ end
+
+ savepackage()
+
+end
+
+function scripts.vscode.start()
+ local path = locate()
+ if path then
+ local command = 'start "vs code context" code --reuse-window --ignore-gpu-blacklist --extensions-dir "' .. path .. '" --install-extension context'
+ report("running command: %s",command)
+ os.execute(command)
+ end
+end
+
+if environment.arguments.generate then
+ scripts.vscode.generate()
+elseif environment.arguments.start then
+ scripts.vscode.start()
+elseif environment.arguments.exporthelp then
+ application.export(environment.arguments.exporthelp,environment.files[1])
+else
+ application.help()
+end
+
+-- scripts.vscode.generate([[t:/vscode/data/extensions]])
+-- scripts.vscode.generate([[e:\tex-context\tex\texmf-context\context\data\vscode\extensions]])
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index d908f260a..4651ed0e7 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{2019.06.11 19:20}
+\newcontextversion{2019.06.14 17:49}
%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 ada3588ea..ea6f7becb 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{2019.06.11 19:20}
+\edef\contextversion{2019.06.14 17:49}
%D For those who want to use this:
diff --git a/tex/context/base/mkii/mult-cs.mkii b/tex/context/base/mkii/mult-cs.mkii
index 708c296cb..902bd5445 100644
--- a/tex/context/base/mkii/mult-cs.mkii
+++ b/tex/context/base/mkii/mult-cs.mkii
@@ -570,6 +570,7 @@
\setinterfacevariable{temporary}{docasne}
\setinterfacevariable{test}{test}
\setinterfacevariable{text}{text}
+\setinterfacevariable{textnote}{textnote}
\setinterfacevariable{three}{tri}
\setinterfacevariable{thursday}{ctvrtek}
\setinterfacevariable{tight}{tight}
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index a4c86506c..4fa009727 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{2019.06.11 19:20}
+\newcontextversion{2019.06.14 17:49}
%D This file is loaded at runtime, thereby providing an excellent place for
%D hacks, patches, extensions and new features.
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index d9fa164d7..8c501d4d5 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{2019.06.11 19:20}
+\edef\contextversion{2019.06.14 17:49}
\edef\contextkind {beta}
%D Kind of special:
diff --git a/tex/context/base/mkiv/math-tag.lua b/tex/context/base/mkiv/math-tag.lua
index 03f9e70bb..ee59e5f75 100644
--- a/tex/context/base/mkiv/math-tag.lua
+++ b/tex/context/base/mkiv/math-tag.lua
@@ -204,7 +204,8 @@ process = function(start) -- we cannot use the processor as we have no finalizer
local mtexttag = nil
while start do
local id = getid(start)
- -- showtag(start,id,true)
+-- print("!!!!!!!!!!",nodecodes[id])
+-- showtag(start,id,true)
if id == glyph_code or id == disc_code then
if not mtexttag then
mtexttag = start_tagged("mtext")
@@ -265,7 +266,7 @@ process = function(start) -- we cannot use the processor as we have no finalizer
elseif id == noad_code then
-- setattr(start,a_tagged,tags.current())
processsubsup(start)
- elseif id == dubbox_code or id == hlist_code or id == vlist_code then
+ elseif id == subbox_code or id == hlist_code or id == vlist_code then
-- keep an eye on subbox_code and see what ends up in there
local attr = getattr(start,a_tagged)
if not attr then
@@ -372,7 +373,7 @@ process = function(start) -- we cannot use the processor as we have no finalizer
end
end
end
- elseif id == submlistcode then -- normally a hbox
+ elseif id == submlist_code then -- normally a hbox
local list = getlist(start)
if list then
local attr = getattr(start,a_tagged)
diff --git a/tex/context/base/mkiv/mlib-lua.lua b/tex/context/base/mkiv/mlib-lua.lua
index 9b567da81..b205946f9 100644
--- a/tex/context/base/mkiv/mlib-lua.lua
+++ b/tex/context/base/mkiv/mlib-lua.lua
@@ -82,6 +82,11 @@ do
currentmpx = remove(stack,mpx)
end
+ function metapost.currentmpx()
+ return currentmpx
+ end
+
+
end
do
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 70635c11f..b3bdbce43 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 f857f29b5..26ce87818 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/interface/mkii/keys-cs.xml b/tex/context/interface/mkii/keys-cs.xml
index 37736a2d7..1b8ce2fa6 100644
--- a/tex/context/interface/mkii/keys-cs.xml
+++ b/tex/context/interface/mkii/keys-cs.xml
@@ -573,6 +573,7 @@
<cd:variable name='temporary' value='docasne'/>
<cd:variable name='test' value='test'/>
<cd:variable name='text' value='text'/>
+ <cd:variable name='textnote' value='textnote'/>
<cd:variable name='three' value='tri'/>
<cd:variable name='thursday' value='ctvrtek'/>
<cd:variable name='tight' value='tight'/>
diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf
index 04e0e44ae..ef4f960e6 100644
--- a/tex/context/interface/mkiv/i-context.pdf
+++ b/tex/context/interface/mkiv/i-context.pdf
Binary files differ
diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf
index 4b14223aa..8578ce383 100644
--- a/tex/context/interface/mkiv/i-readme.pdf
+++ b/tex/context/interface/mkiv/i-readme.pdf
Binary files differ
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index fae1b146f..252742e9f 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 : 06/11/19 19:20:27
+-- merge date : 06/14/19 17:49:06
do -- begin closure to overcome local limits and interference