From 72f32b71d82b925e5b4aa5d6bebc707aaca992af Mon Sep 17 00:00:00 2001 From: Vincenzo Pupillo Date: Mon, 6 Mar 2023 12:24:34 +0100 Subject: [PATCH] java-ts-mode: detect if text_block is supported. A recent commit in tree-sitter-java (issue #141) removed support for the text_block node type from the grammar. To support the old released version and the new one, a helper function was added on which the string syntax highlighting now depends. (bug#61913) * lisp/progmodes/java-ts-mode.el (java-ts-mode--string-highlight-helper): New helper function that return the right query string (java-ts-mode--font-lock-settings): Use it --- lisp/progmodes/java-ts-mode.el | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el index 1115eadde7..66fec3b0f1 100644 --- a/lisp/progmodes/java-ts-mode.el +++ b/lisp/progmodes/java-ts-mode.el @@ -145,6 +145,16 @@ java-ts-mode--operators "|=" "~" ">>" ">>>" "<<" "::" "?" "&=") "Java operators for tree-sitter font-locking.") +(defun java-ts-mode--string-highlight-helper () +"Returns, for strings, a query based on what is supported by +the available version of Tree-sitter for java." + (condition-case nil + (progn (treesit-query-capture 'java '((text_block) @font-lock-string-face)) + `((string_literal) @font-lock-string-face + (text_block) @font-lock-string-face)) + (error + `((string_literal) @font-lock-string-face)))) + (defvar java-ts-mode--font-lock-settings (treesit-font-lock-rules :language 'java @@ -182,8 +192,7 @@ java-ts-mode--font-lock-settings :language 'java :override t :feature 'string - `((string_literal) @font-lock-string-face - (text_block) @font-lock-string-face) + (java-ts-mode--string-highlight-helper) :language 'java :override t :feature 'literal -- 2.39.2