elisp: Syntactic Font Lock
22.6.8 Syntactic Font Lock
--------------------------
Syntactic fontification uses a syntax table (Syntax Tables) to
find and highlight syntactically relevant text. If enabled, it runs
prior to search-based fontification. The variable
‘font-lock-syntactic-face-function’, documented below, determines which
syntactic constructs to highlight. There are several variables that
affect syntactic fontification; you should set them by means of
‘font-lock-defaults’ (Font Lock Basics).
Whenever Font Lock mode performs syntactic fontification on a stretch
of text, it first calls the function specified by
‘syntax-propertize-function’. Major modes can use this to apply
‘syntax-table’ text properties to override the buffer’s syntax table in
special cases. Syntax Properties.
-- Variable: font-lock-keywords-only
If the value of this variable is non-‘nil’, Font Lock does not do
syntactic fontification, only search-based fontification based on
‘font-lock-keywords’. It is normally set by Font Lock mode based
on the KEYWORDS-ONLY element in ‘font-lock-defaults’.
-- Variable: font-lock-syntax-table
This variable holds the syntax table to use for fontification of
comments and strings. It is normally set by Font Lock mode based
on the SYNTAX-ALIST element in ‘font-lock-defaults’. If this value
is ‘nil’, syntactic fontification uses the buffer’s syntax table
(the value returned by the function ‘syntax-table’; Syntax
Table Functions).
-- Variable: font-lock-syntactic-face-function
If this variable is non-‘nil’, it should be a function to determine
which face to use for a given syntactic element (a string or a
comment). The value is normally set through an OTHER-VARS element
in ‘font-lock-defaults’.
The function is called with one argument, the parse state at point
returned by ‘parse-partial-sexp’, and should return a face. The
default value returns ‘font-lock-comment-face’ for comments and
‘font-lock-string-face’ for strings (Faces for Font Lock).