Function: tsx-ts-mode--font-lock-compatibility-bb1f97b

tsx-ts-mode--font-lock-compatibility-bb1f97b is a byte-compiled function defined in typescript-ts-mode.el.gz.

Signature

(tsx-ts-mode--font-lock-compatibility-bb1f97b LANGUAGE)

Documentation

Font lock rules helper, to handle different releases of tree-sitter-tsx.

Check if a node type is available, then return the right font lock rules. Argument LANGUAGE is either typescript or tsx.

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/typescript-ts-mode.el.gz
(defun tsx-ts-mode--font-lock-compatibility-bb1f97b (language)
  "Font lock rules helper, to handle different releases of tree-sitter-tsx.
Check if a node type is available, then return the right font lock rules.
Argument LANGUAGE is either `typescript' or `tsx'."
  ;; handle commit bb1f97b
  ;; Warning: treesitter-query-capture says both node types are valid,
  ;; but then raises an error if the wrong node type is used. So it is
  ;; important to check with the new node type (member_expression)
  ;;
  ;; Later typescript grammar removed support for jsx, so the later
  ;; grammar versions this function just return nil.
  (typescript-ts-mode--check-dialect language)
  (let ((queries-a '((jsx_opening_element
		      [(member_expression (identifier)) (identifier)]
		      @typescript-ts-jsx-tag-face)

                     (jsx_closing_element
		      [(member_expression (identifier)) (identifier)]
		      @typescript-ts-jsx-tag-face)

                     (jsx_self_closing_element
		      [(member_expression (identifier)) (identifier)]
		      @typescript-ts-jsx-tag-face)

                     (jsx_attribute (property_identifier)
                                    @typescript-ts-jsx-attribute-face)

                     (jsx_expression (identifier)
                                     @font-lock-variable-use-face)))
        (queries-b '((jsx_opening_element
                      [(nested_identifier (identifier)) (identifier)]
                      @typescript-ts-jsx-tag-face)

                     (jsx_closing_element
                      [(nested_identifier (identifier)) (identifier)]
                      @typescript-ts-jsx-tag-face)

                     (jsx_self_closing_element
                      [(nested_identifier (identifier)) (identifier)]
                      @typescript-ts-jsx-tag-face)

                     (jsx_attribute (property_identifier)
                                    @typescript-ts-jsx-attribute-face)

                     (jsx_expression (identifier)
                                     @font-lock-variable-use-face))))
    (or (and (treesit-query-valid-p language queries-a)
             queries-a)
        (and (treesit-query-valid-p language queries-b)
             queries-b)
        ;; Return a dummy query that doesn't do anything, if neither
        ;; query works.
        '("," @_ignore))))