diff --git a/README.md b/README.md index e2522382..4b33cb53 100644 --- a/README.md +++ b/README.md @@ -78,3 +78,4 @@ Plugin | Description [`togglesnakecamel`](plugins/togglesnakecamel.lua?raw=1) | Toggles symbols between `snake_case` and `camelCase` [`unboundedscroll`](plugins/unboundedscroll.lua?raw=1) | Allows scrolling outside the bounds of a document [`workspace`](plugins/workspace.lua?raw=1) | Retains project's layout and open documents between sessions +[`zig`](plugins/language_zig.lua?raw=1) | Syntax for the [Zig](https://ziglang.org) programming language diff --git a/plugins/language_zig.lua b/plugins/language_zig.lua new file mode 100644 index 00000000..08948af7 --- /dev/null +++ b/plugins/language_zig.lua @@ -0,0 +1,210 @@ +local syntax = require "core.syntax" + +syntax.add { + files = { "%.zig$" }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = "%s*\\\\.-\n", type = "string" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "@addWithOverflow", type = "function" }, + { pattern = "@alignCast", type = "function" }, + { pattern = "@alignOf", type = "function" }, + { pattern = "@as", type = "function" }, + { pattern = "@asyncCall", type = "function" }, + { pattern = "@atomicLoad", type = "function" }, + { pattern = "@atomicRmw", type = "function" }, + { pattern = "@atomicStore", type = "function" }, + { pattern = "@bitCast", type = "function" }, + { pattern = "@bitOffsetOf", type = "function" }, + { pattern = "@boolToInt", type = "function" }, + { pattern = "@bitSizeOf", type = "function" }, + { pattern = "@breakpoint", type = "function" }, + { pattern = "@mulAdd", type = "function" }, + { pattern = "@byteSwap", type = "function" }, + { pattern = "@bitReverse", type = "function" }, + { pattern = "@byteOffsetOf", type = "function" }, + { pattern = "@call", type = "function" }, + { pattern = "@cDefine", type = "function" }, + { pattern = "@cImport", type = "function" }, + { pattern = "@cInclude", type = "function" }, + { pattern = "@clz", type = "function" }, + { pattern = "@cmpxchgStrong", type = "function" }, + { pattern = "@cmpxchgWeak", type = "function" }, + { pattern = "@compileError", type = "function" }, + { pattern = "@compileLog", type = "function" }, + { pattern = "@ctz", type = "function" }, + { pattern = "@cUndef", type = "function" }, + { pattern = "@divExact", type = "function" }, + { pattern = "@divFloor", type = "function" }, + { pattern = "@divTrunc", type = "function" }, + { pattern = "@embedFile", type = "function" }, + { pattern = "@enumToInt", type = "function" }, + { pattern = "@errorName", type = "function" }, + { pattern = "@errorReturnTrace", type = "function" }, + { pattern = "@errorToInt", type = "function" }, + { pattern = "@errSetCast", type = "function" }, + { pattern = "@export", type = "function" }, + { pattern = "@fence", type = "function" }, + { pattern = "@field", type = "function" }, + { pattern = "@fieldParentPtr", type = "function" }, + { pattern = "@floatCast", type = "function" }, + { pattern = "@floatToInt", type = "function" }, + { pattern = "@frame", type = "function" }, + { pattern = "@Frame", type = "function" }, + { pattern = "@frameAddress", type = "function" }, + { pattern = "@frameSize", type = "function" }, + { pattern = "@hasDecl", type = "function" }, + { pattern = "@hasField", type = "function" }, + { pattern = "@import", type = "function" }, + { pattern = "@intCast", type = "function" }, + { pattern = "@intToEnum", type = "function" }, + { pattern = "@intToError", type = "function" }, + { pattern = "@intToFloat", type = "function" }, + { pattern = "@intToPtr", type = "function" }, + { pattern = "@memcpy", type = "function" }, + { pattern = "@memset", type = "function" }, + { pattern = "@wasmMemorySize", type = "function" }, + { pattern = "@wasmMemoryGrow", type = "function" }, + { pattern = "@mod", type = "function" }, + { pattern = "@mulWithOverflow", type = "function" }, + { pattern = "@panic", type = "function" }, + { pattern = "@popCount", type = "function" }, + { pattern = "@ptrCast", type = "function" }, + { pattern = "@ptrToInt", type = "function" }, + { pattern = "@rem", type = "function" }, + { pattern = "@returnAddress", type = "function" }, + { pattern = "@setAlignStack", type = "function" }, + { pattern = "@setCold", type = "function" }, + { pattern = "@setEvalBranchQuota", type = "function" }, + { pattern = "@setFloatMode", type = "function" }, + { pattern = "@setRuntimeSafety", type = "function" }, + { pattern = "@shlExact", type = "function" }, + { pattern = "@shlWithOverflow", type = "function" }, + { pattern = "@shrExact", type = "function" }, + { pattern = "@shuffle", type = "function" }, + { pattern = "@sizeOf", type = "function" }, + { pattern = "@splat", type = "function" }, + { pattern = "@src", type = "function" }, + { pattern = "@sqrt", type = "function" }, + { pattern = "@sin", type = "function" }, + { pattern = "@cos", type = "function" }, + { pattern = "@exp", type = "function" }, + { pattern = "@exp2", type = "function" }, + { pattern = "@log", type = "function" }, + { pattern = "@log2", type = "function" }, + { pattern = "@log10", type = "function" }, + { pattern = "@fabs", type = "function" }, + { pattern = "@floor", type = "function" }, + { pattern = "@ceil", type = "function" }, + { pattern = "@trunc", type = "function" }, + { pattern = "@round", type = "function" }, + { pattern = "@subWithOverflow", type = "function" }, + { pattern = "@tagName", type = "function" }, + { pattern = "@TagType", type = "function" }, + { pattern = "@This", type = "function" }, + { pattern = "@truncate", type = "function" }, + { pattern = "@Type", type = "function" }, + { pattern = "@typeInfo", type = "function" }, + { pattern = "@typeName", type = "function" }, + { pattern = "@TypeOf", type = "function" }, + { pattern = "@unionInit", type = "function" }, + }, + symbols = { + ["fn"] = "keyword", + ["pub"] = "keyword", + ["var"] = "keyword", + ["align"] = "keyword", + ["allowzero"] = "keyword", + ["and"] = "keyword", + ["or"] = "keyword", + ["asm"] = "keyword", + ["async"] = "keyword", + ["await"] = "keyword", + ["cancel"] = "keyword", + ["catch"] = "keyword", + ["comptime"] = "keyword", + ["catch"] = "keyword", + ["defer"] = "keyword", + ["errdefer"] = "keyword", + ["error"] = "keyword", + ["export"] = "keyword", + ["linksection"] = "keyword", + ["nakedcc"] = "keyword", + ["noalias"] = "keyword", + ["orelse"] = "keyword", + ["packed"] = "keyword", + ["promise"] = "keyword", + ["resume"] = "keyword", + ["stdcallcc"] = "keyword", + ["suspend"] = "keyword", + ["test"] = "keyword", + ["threadlocal"] = "keyword", + ["try"] = "keyword", + ["unreachable"] = "keyword", + ["usingnamespace"] = "keyword", + ["if"] = "keyword", + ["then"] = "keyword", + ["else"] = "keyword", + ["elseif"] = "keyword", + ["do"] = "keyword", + ["while"] = "keyword", + ["for"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["return"] = "keyword", + ["struct"] = "keyword", + ["union"] = "keyword", + ["enum"] = "keyword", + ["extern"] = "keyword", + ["volatile"] = "keyword", + ["const"] = "keyword", + ["inline"] = "keyword", + ["switch"] = "keyword", + ["const"] = "keyword", + ["void"] = "keyword", + ["i8"] = "keyword2", + ["u8"] = "keyword2", + ["i16"] = "keyword2", + ["u16"] = "keyword2", + ["i32"] = "keyword2", + ["u32"] = "keyword2", + ["i64"] = "keyword2", + ["u64"] = "keyword2", + ["i128"] = "keyword2", + ["u128"] = "keyword2", + ["isize"] = "keyword2", + ["usize"] = "keyword2", + ["c_short"] = "keyword2", + ["c_ushort"] = "keyword2", + ["c_int"] = "keyword2", + ["c_uint"] = "keyword2", + ["c_long"] = "keyword2", + ["c_ulong"] = "keyword2", + ["c_longlong"] = "keyword2", + ["c_ulonglong"] = "keyword2", + ["c_longdouble"] = "keyword2", + ["f16"] = "keyword2", + ["f32"] = "keyword2", + ["f64"] = "keyword2", + ["f128"] = "keyword2", + ["bool"] = "keyword2", + ["f64"] = "keyword2", + ["noreturn"] = "keyword2", + ["type"] = "keyword2", + ["anyerror"] = "keyword2", + ["comptime_int"] = "keyword2", + ["comptime_float"] = "keyword2", + ["undefined"] = "keyword2", + ["true"] = "keyword2", + ["false"] = "keyword2", + ["null"] = "keyword2", + }, +}