aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThaCuber <70547062+ThaCuber@users.noreply.github.com>2022-09-10 20:13:02 -0400
committerGitHub <noreply@github.com>2022-09-10 20:13:02 -0400
commitfe3eecc3b8967b4b61b9cac9c028e07665a75cb0 (patch)
treeeac6a5a304a2a79f5e0a86f75306ae4a480d8701
parent30fb5f31f0daa7d2ac98989aad8529511ed69ff5 (diff)
downloadlite-xl-plugins-fe3eecc3b8967b4b61b9cac9c028e07665a75cb0.tar.gz
lite-xl-plugins-fe3eecc3b8967b4b61b9cac9c028e07665a75cb0.zip
Syntax highlighter for the MiniScript programming language (#124)
* Syntax highlighter for the Miniscript language * Update README.md
-rw-r--r--README.md1
-rw-r--r--plugins/language_miniscript.lua102
2 files changed, 103 insertions, 0 deletions
diff --git a/README.md b/README.md
index 2af2d2f..74b75f8 100644
--- a/README.md
+++ b/README.md
@@ -93,6 +93,7 @@ _Note: if you make a pull request, the table should be updated and kept in alpha
| [`language_lobster`](plugins/language_lobster.lua?raw=1) | Syntax for [Lobster](https://strlen.com/lobster/) programming language |
| [`language_make`](plugins/language_make.lua?raw=1) | Syntax for the Make build system language |
| [`language_meson`](plugins/language_meson.lua?raw=1) | Syntax for the [Meson](https://mesonbuild.com) build system language |
+| [`language_miniscript`](plugins/language_miniscript.lua?raw=1) | Syntax for the [MiniScript](https://miniscript.org) programming language |
| [`language_moon`](plugins/language_moon.lua?raw=1) | Syntax for the [MoonScript](https://moonscript.org) scripting language |
| [`language_nelua`](https://github.com/AKDev21/nelua-lite-xl)\* | Syntax for [Nelua](http://nelua.io/) programming |
| [`language_nginx`](plugins/language_nginx.lua?raw=1) | Syntax for [Nginx](https://www.nginx.com/) config files |
diff --git a/plugins/language_miniscript.lua b/plugins/language_miniscript.lua
new file mode 100644
index 0000000..afe0a2b
--- /dev/null
+++ b/plugins/language_miniscript.lua
@@ -0,0 +1,102 @@
+-- mod-version:3
+local syntax = require 'core.syntax'
+
+syntax.add {
+ name = "MiniScript",
+ files = { "%.ms$" },
+ comment = "//",
+ patterns = {
+ { pattern = "//.*", type = "comment" },
+ { pattern = { '"', '"' }, type = "string" },
+ { pattern = "[<>!=]=", type = "operator" },
+ { pattern = "[%+%-%*%/%^@<>:]", type = "operator" },
+ { pattern = "%d%.%d*[eE][-+]?%d+", type = "number" },
+ { pattern = "%d%.%d*", type = "number" },
+ { pattern = "%.?%d*[eE][-+]?%d+", type = "number" },
+ { pattern = "%.?%d+", type = "number" },
+ { pattern = "[%a_][%w_]*", type = "symbol" },
+ },
+ symbols = {
+ ["if"] = "keyword",
+ ["not"] = "keyword",
+ ["and"] = "keyword",
+ ["or"] = "keyword",
+ ["else"] = "keyword",
+ ["then"] = "keyword",
+ ["for"] = "keyword",
+ ["in"] = "keyword",
+ ["while"] = "keyword",
+ ["break"] = "keyword",
+ ["continue"] = "keyword",
+ ["function"] = "keyword",
+ ["end"] = "keyword",
+ ["return"] = "keyword",
+ ["new"] = "keyword",
+ ["isa"] = "keyword",
+ ["self"] = "keyword2",
+
+ ["true"] = "literal",
+ ["false"] = "literal",
+ ["null"] = "literal",
+ ["globals"] = "literal",
+ ["locals"] = "literal",
+ ["outer"] = "literal",
+
+ -- Built-in types's classes
+ ["number"] = "literal",
+ ["string"] = "literal",
+ ["list"] = "literal",
+ ["map"] = "literal",
+ ["funcRef"] = "literal",
+
+ -- Intrinsic functions
+ ["abs"] = "function",
+ ["acos"] = "function",
+ ["asin"] = "function",
+ ["atan"] = "function",
+ ["bitAnd"] = "function",
+ ["bitOr"] = "function",
+ ["bitXor"] = "function",
+ ["ceil"] = "function",
+ ["char"] = "function",
+ ["code"] = "function",
+ ["cos"] = "function",
+ ["floor"] = "function",
+ ["hash"] = "function",
+ ["hasIndex"] = "function",
+ ["indexes"] = "function",
+ ["indexOf"] = "function",
+ ["insert"] = "function",
+ ["join"] = "function",
+ ["len"] = "function",
+ ["log"] = "function",
+ ["lower"] = "function",
+ ["pi"] = "function",
+ ["pop"] = "function",
+ ["print"] = "function",
+ ["pull"] = "function",
+ ["push"] = "function",
+ ["range"] = "function",
+ ["remove"] = "function",
+ ["replace"] = "function",
+ ["rnd"] = "function",
+ ["round"] = "function",
+ ["shuffle"] = "function",
+ ["sign"] = "function",
+ ["sin"] = "function",
+ ["slice"] = "function",
+ ["sort"] = "function",
+ ["split"] = "function",
+ ["sqrt"] = "function",
+ ["str"] = "function",
+ ["sum"] = "function",
+ ["tan"] = "function",
+ ["time"] = "function",
+ ["upper"] = "function",
+ ["val"] = "function",
+ ["values"] = "function",
+ ["version"] = "function",
+ ["wait"] = "function",
+ ["yield"] = "function",
+ },
+}