Function: font-lock-apply-highlight
font-lock-apply-highlight is a byte-compiled function defined in
font-lock.el.gz.
Signature
(font-lock-apply-highlight HIGHLIGHT)
Documentation
Apply HIGHLIGHT following a match.
HIGHLIGHT should be of the form MATCH-HIGHLIGHT, see font-lock-keywords.
Source Code
;; Defined in /usr/src/emacs/lisp/font-lock.el.gz
;;; Keyword regexp fontification functions.
(defsubst font-lock-apply-highlight (highlight)
"Apply HIGHLIGHT following a match.
HIGHLIGHT should be of the form MATCH-HIGHLIGHT, see `font-lock-keywords'."
(let* ((match (nth 0 highlight))
(start (match-beginning match)) (end (match-end match))
(override (nth 2 highlight)))
(if (not start)
;; No match but we might not signal an error.
(or (nth 3 highlight)
(error "No match %d in highlight %S" match highlight))
(let ((val (eval (nth 1 highlight))))
(when (eq (car-safe val) 'face)
(add-text-properties start end (cddr val))
(setq val (cadr val)))
(cond
((not (or val (eq override t)))
;; If `val' is nil, don't do anything. It is important to do it
;; explicitly, because when adding nil via things like
;; font-lock-append-text-property, the property is actually
;; changed from <face> to (<face>) which is undesirable. --Stef
nil)
((not override)
;; Cannot override existing fontification.
(or (text-property-not-all start end 'face nil)
(put-text-property start end 'face val)))
((eq override t)
;; Override existing fontification.
(put-text-property start end 'face val))
((eq override 'prepend)
;; Prepend to existing fontification.
(font-lock-prepend-text-property start end 'face val))
((eq override 'append)
;; Append to existing fontification.
(font-lock-append-text-property start end 'face val))
((eq override 'keep)
;; Keep existing fontification.
(font-lock-fillin-text-property start end 'face val)))))))