Function: cider--treesit-font-lock-rules

cider--treesit-font-lock-rules is a byte-compiled function defined in cider-mode.el.

Signature

(cider--treesit-font-lock-rules SYMBOLS-PLIST CORE-PLIST)

Documentation

Return tree-sitter font-lock settings for SYMBOLS-PLIST and CORE-PLIST.

The Clojure counterpart to cider--compile-font-lock-keywords, producing treesit-font-lock-rules for a clojure-ts-mode buffer. Return nil when there is nothing to highlight.

Source Code

;; Defined in ~/.emacs.d/elpa/cider-20260822.1520/cider-mode.el
(defun cider--treesit-font-lock-rules (symbols-plist core-plist)
  "Return tree-sitter font-lock settings for SYMBOLS-PLIST and CORE-PLIST.
The Clojure counterpart to `cider--compile-font-lock-keywords', producing
`treesit-font-lock-rules' for a clojure-ts-mode buffer.  Return nil when
there is nothing to highlight."
  (let* ((cats (cider--dynamic-font-lock-symbols symbols-plist core-plist))
         (queries
          (cl-loop
           for (key face anchor) in
           ;; Order matters: later queries win (they are :override t and are
           ;; appended after clojure-ts-mode's own settings), so put the
           ;; \"strongest\" categories last.
           '((:functions font-lock-function-name-face nil)
             (:vars font-lock-variable-name-face nil)
             (:macros font-lock-keyword-face call)
             (:deprecated cider-deprecated-face nil)
             (:enlightened cider-enlightened-face nil)
             (:instrumented cider-instrumented-face nil)
             (:traced cider-traced-face nil))
           for names = (plist-get cats key)
           when names
           collect (let ((cap (intern (format "@%s" face)))
                         (re (cider--treesit-symbol-regexp names)))
                     (if (eq anchor 'call)
                         ;; Macros only in call position, like the clojure-mode
                         ;; rule that requires a preceding \"(\".
                         `((list_lit :anchor (sym_lit (sym_name) ,cap))
                           (:match ,re ,cap)
                           (:pred cider--treesit-not-local-p ,cap))
                       `((sym_lit (sym_name) ,cap)
                         (:match ,re ,cap)
                         (:pred cider--treesit-not-local-p ,cap)))))))
    (when queries
      ;; Pass all pattern/predicate groups as a single query (like
      ;; clojure-ts-mode's own multi-pattern features), not as separate query
      ;; arguments - `:language' only carries to the first of those.
      (treesit-font-lock-rules
       :language 'clojure
       :feature cider--treesit-font-lock-feature
       :override t
       queries))))