aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvoroskoi2021-10-05 03:18:15 +0000
committerGitHub2021-10-05 03:18:15 +0000
commit0e06c10d8cb45f698bacc7b212b8c5d1ab200700 (patch)
tree90d1ce5eac63a1a21c7b43591c1d01c0db455bc2
parentc4ae17dfd4d2c0eba2d3f7a6011a9b7c33bff114 (diff)
Zig tree-sitter rework (#811)
- update tree-sitter-zig subproject - use highlights.scm from upstream, just use helix scopes - update indents.toml, this one actually works
m---------helix-syntax/languages/tree-sitter-zig0
-rw-r--r--runtime/queries/zig/highlights.scm197
-rw-r--r--runtime/queries/zig/indents.toml9
3 files changed, 122 insertions, 84 deletions
diff --git a/helix-syntax/languages/tree-sitter-zig b/helix-syntax/languages/tree-sitter-zig
-Subproject 049162bea8a44e1a4acd01b06e1c8672d9231a8
+Subproject 1f27fd1dfe7f352408f01b4894c7825f3a1d6c4
diff --git a/runtime/queries/zig/highlights.scm b/runtime/queries/zig/highlights.scm
index 5a3d62dc..404a8682 100644
--- a/runtime/queries/zig/highlights.scm
+++ b/runtime/queries/zig/highlights.scm
@@ -4,82 +4,89 @@
(line_comment)
] @comment
-; field in top level decl, and in struct, union...
-(ContainerField
- (IDENTIFIER) @property
- (SuffixExpr (IDENTIFIER) @type)?
-)
+[
+ variable: (IDENTIFIER)
+ variable_type_function: (IDENTIFIER)
+] @variable
-; error.OutOfMemory;
-(SuffixExpr
- "error"
- "."
- (IDENTIFIER) @constant
+parameter: (IDENTIFIER) @variable.parameter
+
+[
+ field_member: (IDENTIFIER)
+ field_access: (IDENTIFIER)
+] @variable.property
+
+;; assume TitleCase is a type
+(
+ [
+ variable_type_function: (IDENTIFIER)
+ field_access: (IDENTIFIER)
+ parameter: (IDENTIFIER)
+ ] @type
+ (#match? @type "^[A-Z]([a-z]+[A-Za-z0-9]*)*$")
+)
+;; assume camelCase is a function
+(
+ [
+ variable_type_function: (IDENTIFIER)
+ field_access: (IDENTIFIER)
+ parameter: (IDENTIFIER)
+ ] @function
+ (#match? @function "^[a-z]+([A-Z][a-z0-9]*)+$")
)
-; var x: IDENTIFIER
-type: (SuffixExpr (IDENTIFIER) @type)
+;; assume all CAPS_1 is a constant
+(
+ [
+ variable_type_function: (IDENTIFIER)
+ field_access: (IDENTIFIER)
+ ] @constant
+ (#match? @constant "^[A-Z][A-Z_0-9]+$")
+)
-; IDENTIFIER{}
-constructor: (SuffixExpr (IDENTIFIER) @constructor)
+[
+ function_call: (IDENTIFIER)
+ function: (IDENTIFIER)
+] @function
-; fields
-(FieldInit (IDENTIFIER) @property)
+exception: "!" @function.macro
-; foo.bar.baz.function() calls
(
- (SuffixOp
- (IDENTIFIER) @function
- )
- .
- (FnCallArguments)
+ (IDENTIFIER) @variable.builtin
+ (#eq? @variable.builtin "_")
)
-; function() calls
+(PtrTypeStart "c" @variable.builtin)
+
(
- (
- (IDENTIFIER) @function
+ (ContainerDeclType
+ [
+ (ErrorUnionExpr)
+ "enum"
+ ]
)
- .
- (FnCallArguments)
+ (ContainerField (IDENTIFIER) @constant)
)
-; functionn decl
-(FnProto
- (IDENTIFIER) @function
- (SuffixExpr (IDENTIFIER) @type)?
- ("!")? @function.macro
-)
+field_constant: (IDENTIFIER) @constant
-; function parameters and types
-(ParamDecl
- (IDENTIFIER) @variable.parameter
- ":"
- [
- (ParamType (SuffixExpr (IDENTIFIER) @type))
- (ParamType)
- ]
-)
+(BUILTINIDENTIFIER) @function.builtin
-; switch
-(SwitchItem
- (SuffixExpr
- "."
- .
- (IDENTIFIER) @constant
- )
-)
+((BUILTINIDENTIFIER) @keyword.control.import
+ (#any-of? @keyword.control.import "@import" "@cImport"))
(INTEGER) @number
(FLOAT) @number
[
- (STRINGLITERAL)
+ (LINESTRING)
(STRINGLITERALSINGLE)
] @string
-(CHAR_LITERAL) @string
+(CHAR_LITERAL) @constant.character
+(EscapeSequence) @escape
+(FormatSequence) @string.special
[
"allowzero"
@@ -95,6 +102,9 @@ constructor: (SuffixExpr (IDENTIFIER) @constructor)
[
"true"
"false"
+] @constant.builtin.boolean
+
+[
"undefined"
"unreachable"
"null"
@@ -104,21 +114,18 @@ constructor: (SuffixExpr (IDENTIFIER) @constructor)
"else"
"if"
"switch"
+] @keyword.control.conditional
+
+[
"for"
"while"
- "return"
- "break"
- "continue"
- "defer"
- "errdefer"
- "async"
- "nosuspend"
- "await"
- "suspend"
- "resume"
- "try"
- "catch"
-] @keyword.control
+] @keyword.control.repeat
+
+[
+ "or"
+ "and"
+ "orelse"
+] @operator
[
"struct"
@@ -127,21 +134,48 @@ constructor: (SuffixExpr (IDENTIFIER) @constructor)
"error"
"packed"
"opaque"
- "test"
- "usingnamespace"
- "export"
- "extern"
- "const"
- "var"
- "comptime"
- "threadlocal"
] @keyword
[
- "pub"
+ "try"
+ "error"
+ "catch"
+] @function.macro
+
+; VarDecl
+[
+ "comptime"
+ "threadlocal"
"fn"
] @keyword.function
+[
+ "const"
+ "var"
+ "test"
+ "pub"
+ "usingnamespace"
+] @keyword
+
+[
+ "return"
+ "break"
+ "continue"
+] @keyword.control
+
+; Macro
+[
+ "defer"
+ "errdefer"
+ "async"
+ "nosuspend"
+ "await"
+ "suspend"
+ "resume"
+ "export"
+ "extern"
+] @function.macro
+
; PrecProc
[
"inline"
@@ -149,10 +183,9 @@ constructor: (SuffixExpr (IDENTIFIER) @constructor)
"asm"
"callconv"
"noalias"
-] @attribute
+] @keyword.directive
[
- (BUILTINIDENTIFIER)
"linksection"
"align"
] @function.builtin
@@ -164,9 +197,6 @@ constructor: (SuffixExpr (IDENTIFIER) @constructor)
(AdditionOp)
(MultiplyOp)
(PrefixOp)
- "or"
- "and"
- "orelse"
"*"
"**"
"->"
@@ -174,6 +204,7 @@ constructor: (SuffixExpr (IDENTIFIER) @constructor)
".?"
".*"
"="
+ "?"
] @operator
[
@@ -186,6 +217,9 @@ constructor: (SuffixExpr (IDENTIFIER) @constructor)
[
".."
"..."
+] @punctuation.special
+
+[
"["
"]"
"("
@@ -195,4 +229,7 @@ constructor: (SuffixExpr (IDENTIFIER) @constructor)
(Payload "|")
(PtrPayload "|")
(PtrIndexPayload "|")
-] @punctuation
+] @punctuation.bracket
+
+; Error
+(ERROR) @keyword
diff --git a/runtime/queries/zig/indents.toml b/runtime/queries/zig/indents.toml
index e119078b..88f88e16 100644
--- a/runtime/queries/zig/indents.toml
+++ b/runtime/queries/zig/indents.toml
@@ -1,8 +1,9 @@
indent = [
- "block",
- "match_block",
- "arguments",
- "parameters"
+ "Block",
+ "BlockExpr",
+ "ContainerDecl",
+ "SwitchExpr",
+ "InitList"
]
outdent = [