elisp: Auto Faces
37.12.7 Automatic Face Assignment
---------------------------------
This hook is used for automatically assigning faces to text in the
buffer. It is part of the implementation of Jit-Lock mode, used by
Font-Lock.
-- Variable: fontification-functions
This variable holds a list of functions that are called by Emacs
redisplay as needed, just before doing redisplay. They are called
even when Font Lock Mode isn’t enabled. When Font Lock Mode is
enabled, this variable usually holds just one function,
‘jit-lock-function’.
The functions are called in the order listed, with one argument, a
buffer position POS. Collectively they should attempt to assign
faces to the text in the current buffer starting at POS.
The functions should record the faces they assign by setting the
‘face’ property. They should also add a non-‘nil’ ‘fontified’
property to all the text they have assigned faces to. That
property tells redisplay that faces have been assigned to that text
already.
It is probably a good idea for the functions to do nothing if the
character after POS already has a non-‘nil’ ‘fontified’ property,
but this is not required. If one function overrides the
assignments made by a previous one, the properties after the last
function finishes are the ones that really matter.
For efficiency, we recommend writing these functions so that they
usually assign faces to around 400 to 600 characters at each call.