diff options
Diffstat (limited to 'plugins/language_umka.lua')
-rw-r--r-- | plugins/language_umka.lua | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/plugins/language_umka.lua b/plugins/language_umka.lua new file mode 100644 index 0000000..3575753 --- /dev/null +++ b/plugins/language_umka.lua @@ -0,0 +1,67 @@ +-- mod-version:3 +local syntax = require 'core.syntax' + +syntax.add { + name = "Umka", + files = { "%.um$" }, + comment = "//", + block_comment = { "/*", "*/" }, + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = "0x%x+", type = "number" }, + { pattern = "%d+%.?%d*[Ee]%-?%d+", type = "number" }, + { pattern = "%d+%.?%d*", type = "number" }, + { pattern = {'"', '"', '\\'}, type = "string" }, + { pattern = {"'", "'", '\\'}, type = "string" }, + + { pattern = ":=", type = "operator" }, + { pattern = "%.%.", type = "operator" }, + { pattern = "[%^%+%-%*/%%&|~<>!=]", type = "operator" }, + { pattern = "[%a_][%w_]*()%*?()%s*%f[%(]", type = {"function", "operator", "normal"} }, + { pattern = "%u[%w_]*", type = "literal" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["break"] = "keyword", + ["case"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["default"] = "keyword", + ["else"] = "keyword", + ["for"] = "keyword", + ["fn"] = "keyword", + ["import"] = "keyword", + ["interface"] = "keyword", + ["if"] = "keyword", + ["in"] = "keyword", + ["map"] = "keyword", + ["return"] = "keyword", + ["str"] = "keyword", + ["struct"] = "keyword", + ["switch"] = "keyword", + ["type"] = "keyword", + ["var"] = "keyword", + ["weak"] = "keyword", + + -- types + ["void"] = "keyword2", + ["int8"] = "keyword2", + ["int16"] = "keyword2", + ["int32"] = "keyword2", + ["int"] = "keyword2", + ["uint8"] = "keyword2", + ["uint16"] = "keyword2", + ["uint32"] = "keyword2", + ["uint"] = "keyword2", + ["real32"] = "keyword2", + ["real"] = "keyword2", + ["bool"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + ["char"] = "keyword2", + ["fiber"] = "keyword2", + ["any"] = "keyword2", + ["null"] = "literal", + }, +} |