Function: alpinejs-generic-ts-setup

alpinejs-generic-ts-setup is a byte-compiled function defined in treesit-x.el.gz.

Signature

(alpinejs-generic-ts-setup)

Documentation

Tree-sitter generic setup for Alpine.js framework.

It uses JavaScript highlighting inside a limited set of HTML attributes. Intended to be used in combination with such major modes as mhtml-ts-mode and liquid-generic-ts-mode. For example:

(add-hook 'mhtml-ts-mode-hook 'alpinejs-generic-ts-setup)
(add-hook 'liquid-generic-ts-mode-hook 'alpinejs-generic-ts-setup)

Source Code

;; Defined in /usr/src/emacs/lisp/treesit-x.el.gz
(defun alpinejs-generic-ts-setup ()
  "Tree-sitter generic setup for Alpine.js framework.
It uses JavaScript highlighting inside a limited set of HTML attributes.
Intended to be used in combination with such major modes as
`mhtml-ts-mode' and `liquid-generic-ts-mode'.  For example:

\(add-hook \\='mhtml-ts-mode-hook \\='alpinejs-generic-ts-setup)
\(add-hook \\='liquid-generic-ts-mode-hook \\='alpinejs-generic-ts-setup)"

  ;; Use JavaScript highlighting for Alpinejs HTML attributes
  (setq-local treesit-range-settings
              (append treesit-range-settings
                      (treesit-range-rules
                       :embed 'javascript
                       :host 'html
                       :local t
                       `((attribute
                          (attribute_name) @_name
                          (:match ,alpinejs-generic-ts-attr-regexp @_name)
                          (quoted_attribute_value
                           (attribute_value) @cap))))))

  ;; Highlight only non-Alpinejs HTML attributes
  (setq-local treesit-font-lock-settings
              (treesit-replace-font-lock-feature-settings
               (treesit-font-lock-rules
                :language 'html
                :override t
                :feature 'string
                `((attribute
                   (attribute_name) @_name
                   (:pred alpinejs-generic-ts-attr-not-match @_name)
                   (quoted_attribute_value) @font-lock-string-face)))
               treesit-font-lock-settings))

  ;; Highlight only quotes for Alpinejs HTML attributes
  (setq-local treesit-font-lock-settings
              (append treesit-font-lock-settings
                      (treesit-font-lock-rules
                       :language 'html
                       :override t
                       :feature 'string
                       `((attribute
                          (attribute_name) @_name
                          (:match ,alpinejs-generic-ts-attr-regexp @_name)
                          (quoted_attribute_value "\"" @font-lock-string-face))))))

  (treesit-major-mode-setup)

  (run-mode-hooks 'alpinejs-generic-ts-setup-hook))