ccmode: Faces
5.2 Faces
=========
CC Mode attempts to use the standard faces for programming languages in
accordance with their intended purposes as far as possible. No extra
faces are currently provided, with the exception of a replacement face
‘c-invalid-face’ for emacsen that don’t provide
‘font-lock-warning-face’.
• Normal comments are fontified in ‘font-lock-comment-face’.
Comments::) get ‘font-lock-doc-face’ (Emacs) or
‘font-lock-doc-string-face’ (XEmacs) if those faces exist. If they
don’t then ‘font-lock-comment-face’ is used.
• String and character literals are fontified in
‘font-lock-string-face’.
• Keywords are fontified with ‘font-lock-keyword-face’.
• ‘font-lock-function-name-face’ is used for function names in
declarations and definitions, and classes in those contexts. It’s
also used for preprocessor defines with arguments.
• Variables in declarations and definitions, and other identifiers in
such variable contexts, get ‘font-lock-variable-name-face’. It’s
also used for preprocessor defines without arguments.
• Builtin constants are fontified in ‘font-lock-constant-face’ if it
exists, ‘font-lock-reference-face’ otherwise. As opposed to the
preceding two faces, this is used on the names in expressions, and
it’s not used in declarations, even if there happen to be a ‘const’
in them somewhere.
• ‘font-lock-type-face’ is put on types (both predefined and user
defined) and classes in type contexts.
• Label identifiers get ‘font-lock-constant-face’ if it exists,
‘font-lock-reference-face’ otherwise.
• Name qualifiers and identifiers for scope constructs are fontified
like labels.
• Special markup inside documentation comments are also fontified
like labels.
• Preprocessor directives get ‘font-lock-preprocessor-face’ if it
exists (i.e., XEmacs). In Emacs they get ‘font-lock-builtin-face’
or ‘font-lock-reference-face’, for lack of a closer equivalent.
• Some kinds of syntactic errors are fontified with
‘font-lock-warning-face’ in Emacs. In older XEmacs versions
there’s no corresponding standard face, so there a special
‘c-invalid-face’ is used, which is defined to stand out sharply by
default.
Note that it’s not used for ‘#error’ or ‘#warning’ directives,
since those aren’t syntactic errors in themselves.