diff options
Diffstat (limited to 'lispref/modes.texi')
-rw-r--r-- | lispref/modes.texi | 40 |
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. |