summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/progmodes/go-ts-mode.el13
1 files changed, 11 insertions, 2 deletions
diff --git a/lisp/progmodes/go-ts-mode.el b/lisp/progmodes/go-ts-mode.el
index e8a176e3d9d..a5b49bd8313 100644
--- a/lisp/progmodes/go-ts-mode.el
+++ b/lisp/progmodes/go-ts-mode.el
@@ -112,6 +112,13 @@
(ignore-errors
(or (treesit-query-string "" '((iota) @font-lock-constant-face) 'go) t)))
+;; tree-sitter-go changed method_spec to method_elem in
+;; https://github.com/tree-sitter/tree-sitter-go/commit/b82ab803d887002a0af11f6ce63d72884580bf33
+(defun go-ts-mode--method-elem-supported-p ()
+ "Return t if Go grammar uses `method_elem' instead of `method_spec'."
+ (ignore-errors
+ (or (treesit-query-string "" '((method_elem) @cap) 'go) t)))
+
(defvar go-ts-mode--font-lock-settings
(treesit-font-lock-rules
:language 'go
@@ -136,11 +143,13 @@
:language 'go
:feature 'definition
- '((function_declaration
+ `((function_declaration
name: (identifier) @font-lock-function-name-face)
(method_declaration
name: (field_identifier) @font-lock-function-name-face)
- (method_spec
+ (,(if (go-ts-mode--method-elem-supported-p)
+ 'method_elem
+ 'method_spec)
name: (field_identifier) @font-lock-function-name-face)
(field_declaration
name: (field_identifier) @font-lock-property-name-face)