]> git.eshelyaron.com Git - emacs.git/commitdiff
java-ts-mode: detect if text_block is supported.
authorVincenzo Pupillo <v.pupillo@gmail.com>
Mon, 6 Mar 2023 11:24:34 +0000 (12:24 +0100)
committerEli Zaretskii <eliz@gnu.org>
Thu, 9 Mar 2023 10:22:49 +0000 (12:22 +0200)
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

Copyright-paperwork-exempt: yes

lisp/progmodes/java-ts-mode.el

index 5cd4acd301da41764c8ebbd304e55d6494b18d56..fb1081a5f2e5c476c4b9c63c720e36e2ff945086 100644 (file)
     "|=" "~" ">>" ">>>" "<<" "::" "?" "&=")
   "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
    :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