summaryrefslogtreecommitdiff
path: root/lispref/modes.texi
diff options
context:
space:
mode:
Diffstat (limited to 'lispref/modes.texi')
-rw-r--r--lispref/modes.texi40
1 files changed, 23 insertions, 17 deletions
diff --git a/lispref/modes.texi b/lispref/modes.texi
index d5e058fa1c8..4f68bb5064b 100644
--- a/lispref/modes.texi
+++ b/lispref/modes.texi
@@ -3043,16 +3043,19 @@ constructs:
@itemize
@item
-Place a @code{font-lock-multiline}
-property on the construct when it is added to the buffer.
-@item
-Use @code{font-lock-fontify-region-function} hook to extend the scan
-so that the scanned text never starts or ends in the middle of a
-multiline construct.
-@item
Add a function to @code{font-lock-extend-region-functions} that does
the @emph{identification} and extends the scan so that the scanned
text never starts or ends in the middle of a multiline construct.
+@item
+Use the @code{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.
+@item
+Somehow identify the multiline construct right when it gets inserted
+into the buffer (or at any point after that but before font-lock
+tries to highlight it), and mark it with a @code{font-lock-multiline}
+which will instruct font-lock not to start or end the scan in the
+middle of the construct.
@end itemize
There are three ways to do rehighlighting of multiline constructs:
@@ -3062,18 +3065,21 @@ text never starts or ends in the middle of a multiline construct.
Place a @code{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
-@code{font-lock-multiline} variable.
+@code{font-lock-multiline} variable, which see.
@item
-Use @code{jit-lock-contextually}. 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 @code{jit-lock-contextually} is activated by default,
-this can be an attractive solution.
+Make sure @code{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 @code{jit-lock-contextually} is activated by default, this can
+be an attractive solution.
@item
Place a @code{jit-lock-defer-multiline} property on the construct.
-This works only if @code{jit-lock-contextually} is used, but it can
-handle the case where highlighting depends on subsequent lines.
+This works only if @code{jit-lock-contextually} is used, and with the
+same delay before rehighlighting, but like @code{font-lock-multiline},
+it also handles the case where highlighting depends on
+subsequent lines.
@end itemize
@menu
@@ -3086,7 +3092,7 @@ handle the case where highlighting depends on subsequent lines.
@subsubsection Font Lock Multiline
One way to ensure reliable rehighlighting of multiline Font Lock
-constructs is to put on the text property @code{font-lock-multiline}.
+constructs is to put on them the text property @code{font-lock-multiline}.
It should be present and non-@code{nil} for text that is part of a
multiline construct.