From 90d6ff24b5a9281bbc736c5445008ea5492fcffd Mon Sep 17 00:00:00 2001 From: Randy Taylor Date: Wed, 26 Apr 2023 11:15:45 -0400 Subject: [PATCH] go-ts-mode: Use iota query only if supported (Bug#63086) 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 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/go-ts-mode.el b/lisp/progmodes/go-ts-mode.el index 77c97ffac11..7d515263932 100644 --- a/lisp/progmodes/go-ts-mode.el +++ b/lisp/progmodes/go-ts-mode.el @@ -105,6 +105,12 @@ go-ts-mode--operators ">>" "%=" ">>=" "--" "!" "..." "&^" "&^=" "~") "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 + (treesit-query-capture 'go '((iota) @font-lock-constant-face)))) + (defvar go-ts-mode--font-lock-settings (treesit-font-lock-rules :language 'go @@ -117,7 +123,9 @@ go-ts-mode--font-lock-settings :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))) -- 2.40.1