[ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Normally, elements of font-lock-keywords
should not match across
multiple lines; that doesn't work reliably, because Font Lock usually scans
just part of the buffer, and it can miss a multi-line construct that crosses
the line boundary where the scan starts. (The scan normally starts at the
beginning of a line.)
Making elements that match multiline constructs work properly has two aspects: correct identification and correct rehighlighting. The first means that Font Lock finds all multiline constructs. The second means that Font Lock will correctly rehighlight all the relevant text when a multiline construct is changed—for example, if some of the text that was previously part of a multiline construct ceases to be part of it. The two aspects are closely related, and often getting one of them to work will appear to make the other also work. However, for reliable results you must attend explicitly to both aspects.
There are three ways to ensure correct identification of multiline constructs:
font-lock-extend-region-functions
that does the
identification and extends the scan so that the scanned text never
starts or ends in the middle of a multiline construct.
font-lock-fontify-region-function
hook similarly to extend
the scan so that the scanned text never starts or ends in the middle of a
multiline construct.
font-lock-multiline
which will
instruct font-lock not to start or end the scan in the middle of the
construct.
There are three ways to do rehighlighting of multiline constructs:
font-lock-multiline
property on the construct. This will
rehighlight the whole construct if any part of it is changed. In some cases
you can do this automatically by setting the font-lock-multiline
variable, which see.
jit-lock-contextually
is set and rely on it doing its job.
This will only rehighlight the part of the construct that follows the actual
change, and will do it after a short delay. This only works if the
highlighting of the various parts of your multiline construct never depends
on text in subsequent lines. Since jit-lock-contextually
is
activated by default, this can be an attractive solution.
jit-lock-defer-multiline
property on the construct. This
works only if jit-lock-contextually
is used, and with the same delay
before rehighlighting, but like font-lock-multiline
, it also handles
the case where highlighting depends on subsequent lines.
23.6.10.1 Font Lock Multiline | Marking multiline chunks with a text property | |
23.6.10.2 Region to Fontify after a Buffer Change | Controlling which region gets refontified after a buffer change. |
[ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Ce document a été généré par Eric Reinbold le 13 Octobre 2007 en utilisant texi2html 1.78.