aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--languages.toml2
-rw-r--r--runtime/queries/go/highlights.scm75
2 files changed, 55 insertions, 22 deletions
diff --git a/languages.toml b/languages.toml
index d8b57e97..0fd37a00 100644
--- a/languages.toml
+++ b/languages.toml
@@ -324,7 +324,7 @@ args = { mode = "local", processId = "{0}" }
[[grammar]]
name = "go"
-source = { git = "https://github.com/tree-sitter/tree-sitter-go", rev = "05900faa3cdb5d2d8c8bd5e77ee698487e0a8611" }
+source = { git = "https://github.com/tree-sitter/tree-sitter-go", rev = "64457ea6b73ef5422ed1687178d4545c3e91334a" }
[[language]]
name = "gomod"
diff --git a/runtime/queries/go/highlights.scm b/runtime/queries/go/highlights.scm
index 927bd95b..b2d81e45 100644
--- a/runtime/queries/go/highlights.scm
+++ b/runtime/queries/go/highlights.scm
@@ -19,6 +19,9 @@
(method_declaration
name: (field_identifier) @function.method)
+(method_spec
+ name: (field_identifier) @function.method)
+
; Identifiers
((identifier) @constant (match? @constant "^[A-Z][A-Z\\d_]+$"))
@@ -32,10 +35,19 @@
(match? @type.builtin "^(any|bool|byte|comparable|complex128|complex64|error|float32|float64|int|int16|int32|int64|int8|rune|string|uint|uint16|uint32|uint64|uint8|uintptr)$"))
(type_identifier) @type
+(type_spec
+ name: (type_identifier) @constructor)
(field_identifier) @variable.other.member
(identifier) @variable
-(package_identifier) @variable
+(package_identifier) @namespace
+
+(parameter_declaration (identifier) @variable.parameter)
+(variadic_parameter_declaration (identifier) @variable.parameter)
+(label_name) @label
+
+(const_spec
+ name: (identifier) @constant)
; Operators
@@ -82,36 +94,57 @@
; Keywords
[
- "break"
- "case"
- "chan"
- "const"
- "continue"
"default"
- "defer"
+ "type"
+] @keyword
+
+[
+ "if"
"else"
- "fallthrough"
+ "switch"
+ "select"
+ "case"
+] @keyword.control.conditional
+
+[
"for"
- "func"
- "go"
- "goto"
- "if"
- "interface"
- "map"
"range"
- "return"
- "select"
- "struct"
- "switch"
- "type"
- "var"
-] @keyword
+] @keyword.control.repeat
[
"import"
"package"
] @keyword.control.import
+[
+ "return"
+ "continue"
+ "break"
+ "fallthrough"
+] @keyword.control.return
+
+[
+ "func"
+] @keyword.function
+
+[
+ "var"
+ "chan"
+ "interface"
+ "map"
+ "struct"
+] @keyword.storage.type
+
+[
+ "const"
+] @keyword.storage.modifier
+
+[
+ "defer"
+ "goto"
+ "go"
+] @function.macro
+
; Delimiters
[