]> git.eshelyaron.com Git - emacs.git/commitdiff
go-ts-mode: Use iota query only if supported (Bug#63086)
authorRandy Taylor <dev@rjt.dev>
Wed, 26 Apr 2023 15:15:45 +0000 (11:15 -0400)
committerDmitry Gutov <dmitry@gutov.dev>
Wed, 3 May 2023 21:56:19 +0000 (00:56 +0300)
iota query support was added on January 5, 2022.  To support older
versions of the tree-sitter-go grammar (like the latest tagged version,
v0.19.1, which was released on March 3, 2021), check if the query is
supported before trying to use it.

* lisp/progmodes/go-ts-mode.el (go-ts-mode--iota-query-supported-p): New
function.
(go-ts-mode--font-lock-settings): Use it.

lisp/progmodes/go-ts-mode.el

index 77c97ffac11f5c3794270b2566d21aa6f9f5d325..f32a2d75775fcb48e14602ed5c023b7268c9a7d0 100644 (file)
     ">>" "%=" ">>=" "--" "!"  "..."  "&^" "&^=" "~")
   "Go operators for tree-sitter font-locking.")
 
+(defun go-ts-mode--iota-query-supported-p ()
+  "Returns t if the iota query is supported by the current version of
+the tree-sitter-go grammar."
+  (ignore-errors
+    (or (treesit-query-string "" '((iota) @font-lock-constant-face) 'go) t)))
+
 (defvar go-ts-mode--font-lock-settings
   (treesit-font-lock-rules
    :language 'go
 
    :language 'go
    :feature 'constant
-   '([(false) (iota) (nil) (true)] @font-lock-constant-face
+   `([(false) (nil) (true)] @font-lock-constant-face
+     ,@(when (go-ts-mode--iota-query-supported-p)
+         '((iota) @font-lock-constant-face))
      (const_declaration
       (const_spec name: (identifier) @font-lock-constant-face)))