Function: treesit-add-font-lock-rules

treesit-add-font-lock-rules is a byte-compiled function defined in treesit.el.gz.

Signature

(treesit-add-font-lock-rules RULES &optional HOW FEATURE)

Documentation

Add font-lock RULES to the current buffer.

RULES should be the return value of treesit-font-lock-rules. RULES will be enabled and added to treesit-font-lock-settings.

HOW can be either :before or :after. If HOW is :before, prepend RULES before all other existing font-lock rules in treesit-font-lock-settings; if :after or omitted, append RULES after all existing rules.

If FEATURE is non-nil, add RULES before/after rules for FEATURE. See docstring of treesit-font-lock-rules for what is a feature.

Source Code

;; Defined in /usr/src/emacs/lisp/treesit.el.gz
(defun treesit-add-font-lock-rules (rules &optional how feature)
  "Add font-lock RULES to the current buffer.

RULES should be the return value of `treesit-font-lock-rules'.  RULES
will be enabled and added to `treesit-font-lock-settings'.

HOW can be either :before or :after.  If HOW is :before, prepend RULES
before all other existing font-lock rules in
`treesit-font-lock-settings'; if :after or omitted, append RULES after
all existing rules.

If FEATURE is non-nil, add RULES before/after rules for FEATURE.  See
docstring of `treesit-font-lock-rules' for what is a feature."
  (let ((rules (seq-map #'treesit--font-lock-setting-clone-enable rules))
        (feature-idx
         (when feature
           (cl-position-if
            (lambda (setting)
              (eq (treesit-font-lock-setting-feature setting) feature))
            treesit-font-lock-settings))))
    (pcase (cons how feature)
      ((or '(:after . nil) '(nil . nil))
       (setq treesit-font-lock-settings
             (append treesit-font-lock-settings rules)))
      ('(:before . nil)
       (setq treesit-font-lock-settings
             (append rules treesit-font-lock-settings)))
      (`(:after . ,_feature)
       (setf (nthcdr (1+ feature-idx) treesit-font-lock-settings)
             (append rules
                     (nthcdr (1+ feature-idx)
                             treesit-font-lock-settings))))
      (`(:before . ,_feature)
       (setf (nthcdr feature-idx treesit-font-lock-settings)
             (append rules
                     (nthcdr feature-idx treesit-font-lock-settings)))))))