diff options
-rw-r--r-- | manifest.json | 11 | ||||
-rw-r--r-- | plugins/language_typst.lua | 156 |
2 files changed, 166 insertions, 1 deletions
diff --git a/manifest.json b/manifest.json index fa4d74d..2d6762d 100644 --- a/manifest.json +++ b/manifest.json @@ -61,7 +61,7 @@ { "id": "meta_languages", "type": "meta", - "version": "0.1.5", + "version": "0.1.6", "mod_version": "3", "description": "A metapackage containing all publically accessible language syntaxes.", "dependencies": { @@ -148,6 +148,7 @@ "language_toml": {}, "language_ts": {}, "language_tsx": {}, + "language_typst": {}, "language_umka": {}, "language_v": {}, "language_wren": {}, @@ -1236,6 +1237,14 @@ "tags": ["language"] }, { + "description": "Syntax for [Typst](https://typst.app/) markup language", + "version": "0.1", + "path": "plugins/language_typst.lua", + "id": "language_typst", + "mod_version": "3", + "tags": ["language"] + }, + { "description": "Syntax for the [V](https://vlang.io/) programming language", "version": "0.1", "path": "plugins/language_v.lua", diff --git a/plugins/language_typst.lua b/plugins/language_typst.lua new file mode 100644 index 0000000..c5bd943 --- /dev/null +++ b/plugins/language_typst.lua @@ -0,0 +1,156 @@ +-- mod-version:3 +local syntax = require "core.syntax" + + +local typst_math = { + + patterns = { + + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = "//.*", type = "comment" }, + + { pattern = { '"', '"', '\\' }, type = "string" }, + + { pattern = "[%a_][%w_%-]*%f[(]", type = "function" }, + { pattern = "%a%a+", type = "function"}, + + + { pattern = "0x[%dabcdef]+", type = "number" }, + { pattern = "0b[01]+", type = "number" }, + { pattern = "0o[01234567]+", type = "number" }, + { pattern = "%d+[.e]%d+", type = "number" }, + { pattern = "%d", type = "number" }, + + {pattern = "&", type = "literal"}, + { pattern = "[%+%-=/%*%^%%<>~|#_^\\]", type = "operator" }, + + }, + + symbols = { + ["alpha"] = "keyword2", + ["beta"] = "keyword2", + ["gamma"] = "keyword2", + ["delta"] = "keyword2", + ["epsilon"] = "keyword2", + ["zeta"] = "keyword2", + ["eta"] = "keyword2", + ["theta"] = "keyword2", + ["iota"] = "keyword2", + ["kappa"] = "keyword2", + ["lambda"] = "keyword2", + ["mu"] = "keyword2", + ["nu"] = "keyword2", + ["xi"] = "keyword2", + ["omicron"] = "keyword2", + ["pi"] = "keyword2", + ["rho"] = "keyword2", + ["sigma"] = "keyword2", + ["tau"] = "keyword2", + ["upsilon"] = "keyword2", + ["phi"] = "keyword2", + ["chi"] = "keyword2", + ["psi"] = "keyword2", + ["omega"] = "keyword2", + + ["Alpha"] = "keyword2", + ["Beta"] = "keyword2", + ["Gamma"] = "keyword2", + ["Delta"] = "keyword2", + ["Epsilon"] = "keyword2", + ["Zeta"] = "keyword2", + ["Eta"] = "keyword2", + ["Theta"] = "keyword2", + ["Iota"] = "keyword2", + ["Kappa"] = "keyword2", + ["Lambda"] = "keyword2", + ["Mu"] = "keyword2", + ["Nu"] = "keyword2", + ["Xi"] = "keyword2", + ["Omicron"] = "keyword2", + ["Pi"] = "keyword2", + ["Rho"] = "keyword2", + ["Sigma"] = "keyword2", + ["Tau"] = "keyword2", + ["Upsilon"] = "keyword2", + ["Phi"] = "keyword2", + ["Chi"] = "keyword2", + ["Psi"] = "keyword2", + ["Omega"] = "keyword2", + } +} + + +local typst_script = { + + patterns = { + + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = "//.*", type = "comment" }, + + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = {"%[", "%]"}, type = "normal", syntax = ".typ" }, + + { pattern = "[%a_][%w_%-]*%f[(]", type = "function" }, + + { pattern = "0x[%dabcdef]+", type = "number" }, + { pattern = "0b[01]+", type = "number" }, + { pattern = "0o[01234567]+", type = "number" }, + { pattern = "%d+[.e]%d+()[%a%%]+", type = {"number", "keyword2"}}, + { pattern = "%d+[.e]%d+", type = "number" }, + { pattern = "%d+()[%a%%]+", type = {"number", "keyword2"}}, + { pattern = "%d", type = "number" }, + + + { pattern = "[%+%-=/%*%^%%<>~|&#_^\\]", type = "operator" }, + + }, + + + symbols = { + ["set"] = "keyword", + ["let"] = "keyword", + ["include"] = "keyword", + } +} + + +syntax.add { + name = "Typst", + files = { "%.typ$" }, + comment = "//", + block_comment = { "/*", "*/" }, + + patterns = { + + + { pattern = {"%$", "%$", "\\"}, type = "literal", syntax = typst_math }, + { pattern = {"```js", "```", "\\"}, type = "literal", syntax = ".js" }, + { pattern = {"#", "[^,%(%[{]\n"}, type = "literal", syntax = typst_script }, + { pattern = {"`", "`", "\\"}, type = "normal"}, + + { pattern = { '"', '"', '\\' }, type = "string" }, + + + { pattern = "//.*", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + + -- { pattern = {"link"}, type = "typst_underline"}, -- add underline text later + + { pattern = "^%s*=+ ().+%f[\n]", type ={"operator", "literal"}}, -- Supposed to be bold + + -- Finish later + { pattern = {"%*_", "_%*[%s,%.]"}, type = "keyword2"}, -- Bold Italic + { pattern = {"_%*", "%*_[%s,%.]"}, type = "keyword2"}, -- Bold Italic + { pattern = {"_", "_[%s,%.]"}, type = "keyword"}, -- Italic + { pattern = {"%*[^%/]", "%*[%s,%.]"}, type = "literal"}, -- Bold + + { pattern = "[%+%-\\]", type = "operator" }, + + }, + + + + symbols = { + + } +} |