aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/language_blueprint.lua90
1 files changed, 90 insertions, 0 deletions
diff --git a/plugins/language_blueprint.lua b/plugins/language_blueprint.lua
new file mode 100644
index 0000000..98d6b06
--- /dev/null
+++ b/plugins/language_blueprint.lua
@@ -0,0 +1,90 @@
+-- mod-version:3
+local syntax = require "core.syntax"
+
+syntax.add {
+ name = "Blueprint",
+ files = { "%.blp$", },
+ comment = "//",
+ block_comment = {"/*", "*/"},
+ patterns = {
+
+ -- Comments
+ { pattern = "//.*", type = "comment" },
+ { pattern = { "/%*", "%*/" }, type = "comment" },
+
+ -- Strings
+ { pattern = { "'", "'", "\\"}, type = "string" },
+ { pattern = { '"', '"', "\\" }, type = "string" },
+
+ -- Numbers
+ { pattern = "%.?%d+", type = "number" },
+
+ -- Child type
+ { pattern = "%[.*%]", type = "literal" },
+
+ -- Operators
+ { pattern = "%$", type = "operator" },
+ { pattern = "=>%s*%$().*()%(%)", type = { "operator", "function", "normal" } },
+
+ -- Properties
+ { pattern = "[%w-_]+()%s*:", type = { "keyword", "normal" } },
+
+ -- Classes
+ { pattern = "[%w_-%.]+%s*(){", type = { "keyword2", "normal"} },
+ { pattern = "[%w_-%.]+%s*()[%w_-]+%s*{", type = { "keyword2", "normal"} },
+
+ -- Symbols
+ { pattern = "[%w-_]+", type = "symbol" },
+
+ },
+ symbols = {
+ ["true"] = "literal",
+ ["false"] = "literal",
+ ["null"] = "literal",
+
+ -- Import statements
+ ["using"] = "keyword",
+
+ -- Keywords
+ ["after"] = "keyword",
+ ["bidirectional"] = "keyword",
+ ["bind-property"] = "keyword",
+ ["bind"] = "keyword",
+ ["default"] = "keyword",
+ ["destructive"] = "keyword",
+ ["disabled"] = "keyword",
+ ["inverted"] = "keyword",
+ ["no-sync-create"] = "keyword",
+ ["suggested"] = "keyword",
+ ["swapped"] = "keyword",
+ ["sync-create"] = "keyword",
+ ["template"] = "keyword",
+
+ -- Menus
+ ["menu"] = "keyword",
+ ["submenu"] = "keyword",
+ ["section"] = "keyword",
+
+ -- Nested blocks
+ ["responses"] = "keyword2",
+ ["items"] = "keyword2",
+ ["mime-types"] = "keyword2",
+ ["patterns"] = "keyword2",
+ ["suffixes"] = "keyword2",
+ ["marks"] = "keyword2",
+ ["widgets"] = "keyword2",
+ ["strings"] = "keyword2",
+ ["styles"] = "keyword2",
+ ["accessibility"] = "keyword2",
+ ["setters"] = "keyword2",
+ ["layout"] = "keyword2",
+ ["item"] = "keyword2",
+ ["condition"] = "keyword2",
+ ["mark"] = "keyword2",
+
+ -- Translated strings
+ ["_"] = "operator",
+ ["C_"] = "operator",
+ }
+}
+