]> git.eshelyaron.com Git - emacs.git/commitdiff
Update go-ts-mode to support latest tree-sitter-go grammar
authorYuan Fu <casouri@gmail.com>
Tue, 9 Apr 2024 03:20:25 +0000 (20:20 -0700)
committerEshel Yaron <me@eshelyaron.com>
Sun, 14 Apr 2024 16:47:58 +0000 (18:47 +0200)
tree-sitter-go changed method_spec to method_elem in
https://github.com/tree-sitter/tree-sitter-go/commit/b82ab803d887002a0af11f6ce63d72884580bf33

* 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.

(cherry picked from commit 859b4227e3de9f8e7bc26367540aa315cefc37dc)

lisp/progmodes/go-ts-mode.el

index cc330688dc372dea26bada55a908a44d59766442..ad4b6baf2057e8553e06ccce5588cfbe2c59a6ae 100644 (file)
   (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
 
    :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)