Variable: c-font-lock-extra-types

c-font-lock-extra-types is a customizable variable defined in cc-vars.el.gz.

Value

("\\sw+_t" "bool" "complex" "imaginary" "FILE" "lconv" "tm" "va_list"
 "jmp_buf" "Lisp_Object")

Documentation

*List of extra types (aside from the type keywords) to recognize in C mode.

Each list item should be a regexp matching a single identifier. For example, a value of ("FILE" "\\\\sw+_t") means the word "FILE" and words ending in "_t" are treated as type names.

Note that items on this list that don't include any regexp special characters are automatically optimized using regexp-opt, so you should not use regexp-opt explicitly to build regexps here.

On decoration level 3 (and higher, where applicable), a method is used that finds most types and declarations by syntax alone. This variable is still used as a first step, but other types are recognized correctly anyway in most cases. Therefore this variable should be fairly restrictive and not contain patterns that are uncertain.

Note that this variable is only consulted when the major mode is initialized. If you change it later you have to reinitialize CC Mode by doing M-x c-mode (c-mode).

Despite the name, this variable is not only used for font locking but also elsewhere in CC Mode to tell types from other identifiers.

Probably introduced at or before Emacs version 20.1.

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/cc-vars.el.gz
;; Note: Most of the variables below are also defined in font-lock.el
;; in older versions of Emacs, so depending on the load order we might
;; not install the values below.  There's no kludge to cope with this
;; (as opposed to the *-font-lock-keywords-* variables) since the old
;; values work fairly well anyway.

(defcustom c-font-lock-extra-types
  '("\\sw+_t"
    ;; Defined in C99:
    "bool" "complex" "imaginary"
    ;; Standard library types (except those matched by the _t pattern):
    "FILE" "lconv" "tm" "va_list" "jmp_buf"
    ;; I do not appreciate the following very Emacs-specific luggage
    ;; in the default value, but otoh it can hardly get in the way for
    ;; other users, and removing it would cause unnecessary grief for
    ;; the old timers that are used to it. /mast
    "Lisp_Object")
  (c-make-font-lock-extra-types-blurb "C" "c-mode"
"For example, a value of (\"FILE\" \"\\\\sw+_t\") means the word \"FILE\"
and words ending in \"_t\" are treated as type names.")
  :type 'c-extra-types-widget
  :safe #'c-string-list-p
  :group 'c)