Update go-ts-mode to support latest tree-sitter-go grammar

tree-sitter-go changed method_spec to method_elem in
b82ab803d8

* lisp/progmodes/go-ts-mode.el:
(go-ts-mode--method-elem-supported-p): New function.
(go-ts-mode--font-lock-settings): Conditionally use method_elem or
method_spec in the query.
This commit is contained in:
Yuan Fu 2024-04-08 20:20:25 -07:00
parent 407e85ce13
commit 859b4227e3
No known key found for this signature in database
GPG key ID: 56E19BC57664A442

View file

@ -112,6 +112,13 @@
(ignore-errors (ignore-errors
(or (treesit-query-string "" '((iota) @font-lock-constant-face) 'go) t))) (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 (defvar go-ts-mode--font-lock-settings
(treesit-font-lock-rules (treesit-font-lock-rules
:language 'go :language 'go
@ -136,11 +143,13 @@
:language 'go :language 'go
:feature 'definition :feature 'definition
'((function_declaration `((function_declaration
name: (identifier) @font-lock-function-name-face) name: (identifier) @font-lock-function-name-face)
(method_declaration (method_declaration
name: (field_identifier) @font-lock-function-name-face) 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) name: (field_identifier) @font-lock-function-name-face)
(field_declaration (field_declaration
name: (field_identifier) @font-lock-property-name-face) name: (field_identifier) @font-lock-property-name-face)