From: Yuan Fu Date: Tue, 9 Apr 2024 03:20:25 +0000 (-0700) Subject: Update go-ts-mode to support latest tree-sitter-go grammar X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c7ecb467f1ca810b12e9dce8a29225212ae2806f;p=emacs.git Update go-ts-mode to support latest tree-sitter-go grammar 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) --- diff --git a/lisp/progmodes/go-ts-mode.el b/lisp/progmodes/go-ts-mode.el index cc330688dc3..ad4b6baf205 100644 --- a/lisp/progmodes/go-ts-mode.el +++ b/lisp/progmodes/go-ts-mode.el @@ -113,6 +113,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 @@ -137,11 +144,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)