Some major modes offer three different levels of fontification. You
can define multiple levels by using a list of symbols for keywords
in font-lock-defaults. Each symbol specifies one level of
fontification; it is up to the user to choose one of these levels,
normally by setting font-lock-maximum-decoration (see Font
Lock in the GNU Emacs Manual). The chosen level’s symbol value
is used to initialize font-lock-keywords.
Here are the conventions for how to define the levels of
Level 1: highlight function declarations, file directives (such as include or
import directives), strings and comments. The idea is speed, so only
the most important and top-level components are fontified.
Level 2: in addition to level 1, highlight all language keywords,
including type names that act like keywords, as well as named constant
values. The idea is that all keywords (either syntactic or semantic)
should be fontified appropriately.
Level 3: in addition to level 2, highlight the symbols being defined in
function and variable declarations, and all builtin function names,
wherever they appear.