Function: erc-button-add-face
erc-button-add-face is a byte-compiled function defined in
erc-button.el.gz.
Signature
(erc-button-add-face FROM TO FACE)
Documentation
Add FACE to the region between FROM and TO.
Source Code
;; Defined in /usr/src/emacs/lisp/erc/erc-button.el.gz
(defun erc-button-add-face (from to face)
"Add FACE to the region between FROM and TO."
;; If we just use `add-text-property', then this will overwrite any
;; face text property already used for the button. It will not be
;; merged correctly. If we use overlays, then redisplay will be
;; very slow with lots of buttons. This is why we manually merge
;; face text properties.
(let ((old (erc-list (get-text-property from 'font-lock-face)))
(pos from)
(end (next-single-property-change from 'font-lock-face nil to))
new)
;; old is the face at pos, in list form. It is nil if there is no
;; face at pos. If nil, the new face is FACE. If not nil, the
;; new face is a list containing FACE and the old stuff. end is
;; where this face changes.
(while (< pos to)
(setq new (if old (cons face old) face))
(put-text-property pos end 'font-lock-face new)
(setq pos end
old (erc-list (get-text-property pos 'font-lock-face))
end (next-single-property-change pos 'font-lock-face nil to)))))