Variable: cpp-font-lock-keywords

cpp-font-lock-keywords is a variable defined in font-lock.el.gz.

Value

(("^#[  ]*\\(?:error\\|warning\\)[      ]+\\(.+\\)" 1
  font-lock-warning-face prepend)
 ("^#[  ]*\\(?:import\\|include\\)[     ]*\\(<[^>\"\n]*>?\\)" 1
  font-lock-string-face prepend)
 ("^#[  ]*define[       ]+\\([[:alpha:]_][[:alnum:]_$]*\\)("
  (1 font-lock-function-name-face prepend)
  (#[257 "\300\301\212\300\302\303#)\206
�\303#\207"
	 [re-search-forward
	  "\\(?:\\([[:alpha:]_][[:alnum:]_]*\\)[,]?\\)" ")" t]
	 7 ("font-lock.elc" . 66626)]
   nil nil (1 font-lock-variable-name-face prepend)))
 ("^#[  ]*\\(?:elif\\|if\\)\\>"
  ("\\<\\(defined\\)\\>[  ]*(?\\([[:alpha:]_][[:alnum:]_]*\\)?"
   nil nil (1 font-lock-builtin-face prepend)
   (2 font-lock-variable-name-face prepend t)))
 ("^\\(#[       ]*\\(?:define\\|e\\(?:l\\(?:if\\|se\\)\\|ndif\\|rror\\)\\|file\\|i\\(?:f\\(?:n?def\\)?\\|mport\\|nclude\\)\\|line\\|pragma\\|undef\\|warning\\)\\)\\>[       !]*\\([[:alpha:]_][[:alnum:]_]*\\)?"
  (1 font-lock-preprocessor-face prepend)
  (2 font-lock-variable-name-face nil t)))

Documentation

Font lock keywords for C preprocessor directives.

c-mode, c++-mode and objc-mode have their own font lock keywords for C preprocessor directives. This definition is for the other modes in which C preprocessor directives are used, e.g. asm-mode and ld-script-mode.

Source Code

;; Defined in /usr/src/emacs/lisp/font-lock.el.gz
(defconst cpp-font-lock-keywords
  (let* ((directives cpp-font-lock-keywords-source-directives)
	 (directives-depth cpp-font-lock-keywords-source-depth))
    (list
     ;;
     ;; Fontify error directives.
     '("^#[ \t]*\\(?:error\\|warning\\)[ \t]+\\(.+\\)" 1 font-lock-warning-face prepend)
     ;;
     ;; Fontify filenames in #include <...> preprocessor directives as strings.
     '("^#[ \t]*\\(?:import\\|include\\)[ \t]*\\(<[^>\"\n]*>?\\)"
       1 font-lock-string-face prepend)
     ;;
     ;; Fontify function macro names.
     `("^#[ \t]*define[ \t]+\\([[:alpha:]_][[:alnum:]_$]*\\)("
       (1 font-lock-function-name-face prepend)
       ;;
       ;; Macro arguments.
       (,(lambda (limit)
	   (re-search-forward
	    "\\(?:\\([[:alpha:]_][[:alnum:]_]*\\)[,]?\\)"
	    (or (save-excursion (re-search-forward ")" limit t))
                limit)
	    t))
	nil nil (1 font-lock-variable-name-face prepend)))
     ;;
     ;; Fontify symbol names in #elif or #if ... defined preprocessor directives.
     '("^#[ \t]*\\(?:elif\\|if\\)\\>"
       ("\\<\\(defined\\)\\>[ \t]*(?\\([[:alpha:]_][[:alnum:]_]*\\)?" nil nil
	(1 font-lock-builtin-face prepend) (2 font-lock-variable-name-face prepend t)))
     ;;
     ;; Fontify otherwise as symbol names, and the preprocessor directive names.
     (list
      (concat "^\\(#[ \t]*\\(?:" directives
	      "\\)\\)\\>[ \t!]*\\([[:alpha:]_][[:alnum:]_]*\\)?")
      '(1 font-lock-preprocessor-face prepend)
      (list (+ 2 directives-depth)
	    'font-lock-variable-name-face nil t))))
  "Font lock keywords for C preprocessor directives.
`c-mode', `c++-mode' and `objc-mode' have their own font lock keywords
for C preprocessor directives.  This definition is for the other modes
in which C preprocessor directives are used, e.g. `asm-mode' and
`ld-script-mode'.")