diff --git a/rc/filetype/zig.kak b/rc/filetype/zig.kak new file mode 100644 index 00000000..998c0f94 --- /dev/null +++ b/rc/filetype/zig.kak @@ -0,0 +1,80 @@ +# zig syntax highlighting for kakoune (https://ziglang.org) +# +# based off of https://github.com/ziglang/zig.vim/blob/master/syntax/zig.vim +# as well as https://ziglang.org/documentation/master/#Grammar + +hook global BufCreate .*[.]zig %{ + set-option buffer filetype zig +} + +hook -group zig-highlight global WinSetOption filetype=zig %{ + add-highlighter window/zig ref zig + hook -once -always window WinSetOption filetype=.* %{ remove-highlighter window/zig } +} + +add-highlighter shared/zig regions +add-highlighter shared/zig/code default-region group + +add-highlighter shared/zig/doc_comment region '///[^/]' '$' fill documentation +add-highlighter shared/zig/comment region '//' '$' fill comment + +# TODO: highlight escape sequences within strings +add-highlighter shared/zig/string_double region '"' (?|&|\||\^|~|\?|!)' 0:operator + +# builtin functions +add-highlighter shared/zig/code/ regex "@(?:addWithOverflow|ArgType|atomicLoad|atomicStore|bitCast|breakpoint)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:alignCast|alignOf|cDefine|cImport|cInclude)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:cUndef|canImplicitCast|clz|cmpxchgWeak|cmpxchgStrong|compileError)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:compileLog|ctz|popCount|divExact|divFloor|divTrunc)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:embedFile|export|tagName|TagType|errorName|call)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:errorReturnTrace|fence|fieldParentPtr|field|unionInit)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:frameAddress|import|newStackCall|asyncCall|intToPtr|IntType)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:memberCount|memberName|memberType|as)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:memcpy|memset|mod|mulWithOverflow|splat)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:bitOffsetOf|byteOffsetOf|OpaqueType|panic|ptrCast)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:ptrToInt|rem|returnAddress|setCold|Type|shuffle)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:setRuntimeSafety|setEvalBranchQuota|setFloatMode)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:setGlobalLinkage|setGlobalSection|shlExact|This|hasDecl|hasField)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:shlWithOverflow|shrExact|sizeOf|bitSizeOf|sqrt|byteSwap|subWithOverflow|intCast|floatCast|intToFloat|floatToInt|boolToInt|errSetCast)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:truncate|typeId|typeInfo|typeName|TypeOf|atomicRmw|bytesToSlice|sliceToBytes)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:intToError|errorToInt|intToEnum|enumToInt|setAlignStack|frame|Frame|frameSize|bitReverse|Vector)\b" 0:function +add-highlighter shared/zig/code/ regex "@(?:sin|cos|exp|exp2|log|log2|log10|fabs|floor|ceil|trunc|round)\b" 0:function