]> git.eshelyaron.com Git - emacs.git/commitdiff
Update csharp tree-sitter support due to upstream changes
authorJ M <jean@tbm.email>
Thu, 10 Aug 2023 22:23:20 +0000 (23:23 +0100)
committerEli Zaretskii <eliz@gnu.org>
Sat, 12 Aug 2023 07:23:58 +0000 (10:23 +0300)
A change in tree-sitter-c-sharp grammar for csharp (commit
18a531), has removed the keyword void_keyword and advised
we should use predefined_type.
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--font-lock-settings):
Support both old and new style of keywords in tree-sitter-c-sharp
grammar.  (Bug#65113)

lisp/progmodes/csharp-mode.el

index 00587a8a515ae65c462133fcc3b985b6d4310b45..74968f3a06a67e884bbe731df6924a215a75c1da 100644 (file)
@@ -816,7 +816,7 @@ compilation and evaluation time conflicts."
    :language 'c-sharp
    :feature 'definition
    :override t
-   '((qualified_name (identifier) @font-lock-type-face)
+   `((qualified_name (identifier) @font-lock-type-face)
      (using_directive (identifier) @font-lock-type-face)
      (using_directive (name_equals
                        (identifier) @font-lock-type-face))
@@ -843,8 +843,13 @@ compilation and evaluation time conflicts."
      (class_declaration (identifier) @font-lock-type-face)
 
      (constructor_declaration name: (_) @font-lock-type-face)
-
-     (method_declaration type: [(identifier) (void_keyword)] @font-lock-type-face)
+     ;;; Handle different releases of tree-sitter-c-sharp.
+     ;;; Check if keyword void_keyword is available, then return the correct rule."
+     ,@(condition-case nil
+           (progn (treesit-query-capture 'csharp '((void_keyword) @capture))
+                  `((method_declaration type: [(identifier) (void_keyword)] @font-lock-type-face)))
+         (error
+          `((method_declaration type: [(identifier) (predefined_type)] @font-lock-type-face))))
      (method_declaration type: (generic_name (identifier) @font-lock-type-face))
      (method_declaration name: (_) @font-lock-function-name-face)