[ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
One way to ensure reliable rehighlighting of multiline Font Lock constructs
is to put on them the text property font-lock-multiline
. It should
be present and non-nil
for text that is part of a multiline
construct.
When Font Lock is about to highlight a range of text, it first extends the
boundaries of the range as necessary so that they do not fall within text
marked with the font-lock-multiline
property. Then it removes any
font-lock-multiline
properties from the range, and highlights it.
The highlighting specification (mostly font-lock-keywords
) must
reinstall this property each time, whenever it is appropriate.
Warning: don't use the font-lock-multiline
property on large
ranges of text, because that will make rehighlighting slow.
If the font-lock-multiline
variable is set to t
, Font Lock
will try to add the font-lock-multiline
property automatically on
multiline constructs. This is not a universal solution, however, since it
slows down Font Lock somewhat. It can miss some multiline constructs, or
make the property larger or smaller than necessary.
For elements whose matcher is a function, the function should ensure
that submatch 0 covers the whole relevant multiline construct, even if only
a small subpart will be highlighted. It is often just as easy to add the
font-lock-multiline
property by hand.
The font-lock-multiline
property is meant to ensure proper
refontification; it does not automatically identify new multiline
constructs. Identifying the requires that Font-Lock operate on large enough
chunks at a time. This will happen by accident on many cases, which may
give the impression that multiline constructs magically work. If you set
the font-lock-multiline
variable non-nil
, this impression will
be even stronger, since the highlighting of those constructs which are found
will be properly updated from then on. But that does not work reliably.
To find multiline constructs reliably, you must either manually place the
font-lock-multiline
property on the text before Font-Lock looks at
it, or use font-lock-fontify-region-function
.
[ < ] | [ > ] | [ << ] | [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.