Skip to content

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 that are recognized as documentation (see Documentation 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.