Function: rainbow-delimiters--propertize
rainbow-delimiters--propertize is a byte-compiled function defined in
rainbow-delimiters.el.
Signature
(rainbow-delimiters--propertize END)
Documentation
Highlight delimiters in region between point and END.
Used by font-lock for dynamic highlighting.
Source Code
;; Defined in ~/.emacs.d/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters.el
;; Main function called by font-lock.
(defun rainbow-delimiters--propertize (end)
"Highlight delimiters in region between point and END.
Used by font-lock for dynamic highlighting."
(when (bound-and-true-p mmm-current-submode)
;; `mmm-mode' is weird and apparently needs this hack, because otherwise we
;; may end up thinking matched parentheses are mismatched.
(widen))
(let* ((last-ppss-pos (point))
(ppss (syntax-ppss)))
(while (> end (progn (skip-syntax-forward "^()" end)
(point)))
(let* ((delim-pos (point))
(delim-syntax (syntax-after delim-pos)))
(setq ppss (parse-partial-sexp last-ppss-pos delim-pos nil nil ppss))
(setq last-ppss-pos delim-pos)
;; `skip-syntax-forward' leaves the point at the delimiter, move past
;; it.
(forward-char)
(let ((delim-syntax-code (car delim-syntax)))
(cond
((rainbow-delimiters--char-ineligible-p delim-pos ppss delim-syntax-code)
nil)
((= 4 (logand #xFFFF delim-syntax-code))
;; The (1+ ...) is needed because `parse-partial-sexp' returns the
;; depth at the opening delimiter, not in the block being started.
(rainbow-delimiters--apply-color delim-pos (1+ (nth 0 ppss)) t))
(t
;; Not an opening delimiter, so it's a closing delimiter.
(let ((matches-p (eq (cdr delim-syntax) (char-after (nth 1 ppss)))))
(rainbow-delimiters--apply-color delim-pos (nth 0 ppss) matches-p))))))))
;; We already fontified the delimiters, tell font-lock there's nothing more
;; to do.
nil)