aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/language_kdl.lua84
1 files changed, 84 insertions, 0 deletions
diff --git a/plugins/language_kdl.lua b/plugins/language_kdl.lua
new file mode 100644
index 0000000..a08a0bb
--- /dev/null
+++ b/plugins/language_kdl.lua
@@ -0,0 +1,84 @@
+-- mod-version:3
+local syntax = require "core.syntax"
+
+local identifier = "\"?[^%d%s\\/%(%){}<>;%[%]=,\"][^%s\\/%(%){}<>;%[%]=,\"]*\"?"
+
+syntax.add {
+ name = "KDL",
+ files = { "%.kdl" },
+ space_handling = false,
+ comment = "//",
+ block_comment = {"/*", "*/"},
+ patterns = {
+ {
+ pattern = "^%s*".. identifier .."%s*",
+ type = "keyword"
+ },--
+ { pattern = "%s+", type = "normal" },
+ {
+ pattern = "[{;]%s*()" .. identifier .. "%s*",
+ type = {"normal", "keyword"}
+ },--
+ { pattern = { "r#+\"", "\"#+" }, type = "string" },
+ { pattern = { '"', '"', '\\' }, type = "string" },
+ { pattern = "[%-+]?0x[%x_]+", type = "number" },
+ { pattern = "[%-+]?0b[01_]+", type = "number" },
+ { pattern = "[%-+]?0o[0-7_]+", type = "number" },
+ {
+ pattern = "[%-+]?[%d_]+%.[%d_]+e[%-+]?[%d_]+",
+ type = "number"
+ },
+ { pattern = "[%-+]?[%d_]+%.[%d_]+", type = "number" },
+ { pattern = "[%-+]?[%d_]+e[%-+]?[%d_]+", type = "number" },
+ { pattern = "[%-+]?[%d_]+", type = "number" },
+ { pattern = "/[%-/].-\n", type = "comment" },
+ { pattern = {"/%*", "%*/"}, type = "comment" },
+ { pattern = identifier, type = "keyword2" },
+ {
+ pattern = "%(()" .. identifier .. "()%)",
+ type = {"normal", "function", "normal"}
+ },
+ },
+ symbols = {
+ ["null"] = "literal",
+ ["true"] = "literal",
+ ["false"] = "literal",
+ ["i8"] = "function",
+ ["i32"] = "function",
+ ["i16"] = "function",
+ ["i64"] = "function",
+ ["u8"] = "function",
+ ["u32"] = "function",
+ ["u16"] = "function",
+ ["u64"] = "function",
+ ["isize"] = "function",
+ ["usize"] = "function",
+ ["f32"] = "function",
+ ["f64"] = "function",
+ ["decimal64"] = "function",
+ ["decimal128"] = "function",
+ ["date-time"] = "function",
+ ["time"] = "function",
+ ["date"] = "function",
+ ["duration"] = "function",
+ ["decimal"] = "function",
+ ["currency"] = "function",
+ ["country-2"] = "function",
+ ["country-3"] = "function",
+ ["country-subdivision"] = "function",
+ ["email"] = "function",
+ ["idn-email"] = "function",
+ ["hostname"] = "function",
+ ["idn-hostname"] = "function",
+ ["ipv4"] = "function",
+ ["ipv6"] = "function",
+ ["url"] = "function",
+ ["url-reference"] = "function",
+ ["irl"] = "function",
+ ["irl-reference"] = "function",
+ ["url-template"] = "function",
+ ["uuid"] = "function",
+ ["regex"] = "function",
+ ["base64"] = "function",
+ },
+}