elisp: Region to Refontify
22.6.9.2 Region to Fontify after a Buffer Change
................................................
When a buffer is changed, the region that Font Lock refontifies is by
default the smallest sequence of whole lines that spans the change.
While this works well most of the time, sometimes it doesn’t—for
example, when a change alters the syntactic meaning of text on an
earlier line.
You can enlarge (or even reduce) the region to refontify by setting
the following variable:
-- Variable: font-lock-extend-after-change-region-function
This buffer-local variable is either ‘nil’ or a function for Font
Lock mode to call to determine the region to scan and fontify.
The function is given three parameters, the standard BEG, END, and
OLD-LEN from ‘after-change-functions’ (Change Hooks). It
should return either a cons of the beginning and end buffer
positions (in that order) of the region to fontify, or ‘nil’ (which
means choose the region in the standard way). This function needs
to preserve point, the match-data, and the current restriction.
The region it returns may start or end in the middle of a line.
Since this function is called after every buffer change, it should
be reasonably fast.