-- mod-version:3 -- based on the ruby plugin, see https://github.com/Tamnac/lite-xl-plugins to contribute local syntax = require "core.syntax" syntax.add { name = "Crystal", files = { "%.cr" }, headers = "^#!.*[ /]crystal", comment = "#", patterns = { { pattern = { '"', '"', '\\' }, type = "string" }, { pattern = { "'", "'", '\\' }, type = "string" }, { pattern = "-?0x%x+", type = "number" }, { pattern = "%#.-\n", type = "comment" }, { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, { pattern = "-?%.?%d+f?", type = "number" }, { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, { pattern = "[%a_][%w_]*%f[(?]", type = "function" }, { pattern = "@?@[%a_][%w_]*", type = "keyword2" }, { pattern = "::[%w_]*", type = "symbol" }, { pattern = ":[%w_]*", type = "keyword2" }, { pattern = "[%a_][%w_]*:[^:]", type = "keyword2" }, { pattern = "[%a_][%w_]*", type = "symbol" }, }, symbols = { ["__ENCODING__"] = "keyword", ["__FILE__"] = "keyword", ["__LINE__"] = "keyword", ["alias"] = "keyword", ["annotation"] = "keyword2", ["Array"] = "keyword2", ["BEGIN"] = "keyword", ["begin"] = "keyword", ["Bool"] = "keyword2", ["break"] = "keyword", ["case"] = "keyword", ["Char"] = "keyword2", ["class"] = "keyword", ["def"] = "keyword", ["defined?"] = "keyword", ["do"] = "keyword", ["else"] = "keyword", ["elsif"] = "keyword", ["END"] = "keyword", ["end"] = "keyword", ["ensure"] = "keyword", ["enum"] = "keyword2", ["extend"] = "keyword", ["false"] = "literal", ["Float32"] = "keyword2", ["Float64"] = "keyword2", ["fun"] = "keyword", ["if"] = "keyword", ["in"] = "keyword", ["include"] = "keyword", ["Int8"] = "keyword2", ["Int16"] = "keyword2", ["Int32"] = "keyword2", ["Int64"] = "keyword2", ["module"] = "keyword", ["NamedTuple"] = "keyword2", ["next"] = "keyword", ["nil"] = "literal", ["not"] = "keyword", ["out"] = "function", ["private"] = "keyword", ["Proc"] = "keyword2", ["redo"] = "keyword", ["require"] = "keyword", ["rescue"] = "keyword", ["retry"] = "keyword", ["return"] = "keyword", ["self"] = "keyword", ["String"] = "keyword2", ["struct"] = "keyword2", ["super"] = "keyword", ["then"] = "keyword", ["times"] = "function", ["true"] = "literal", ["Tuple"] = "keyword2", ["UInt8"] = "keyword2", ["UInt16"] = "keyword2", ["UInt32"] = "keyword2", ["UInt64"] = "keyword2", ["undef"] = "keyword", ["union"] = "keyword2", ["unless"] = "keyword", ["until"] = "keyword", ["when"] = "keyword", ["while"] = "keyword", ["yield"] = "keyword" }, }