www.delorie.com/gnu/docs/elisp-manual-21/elisp_366.html   search  
Buy the book!

GNU Emacs Lisp Reference Manual

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

23.5.1 Font Lock Basics

There are several variables that control how Font Lock mode highlights text. But major modes should not set any of these variables directly. Instead, they should set font-lock-defaults as a buffer-local variable. The value assigned to this variable is used, if and when Font Lock mode is enabled, to set all the other variables.

Variable: font-lock-defaults
This variable is set by major modes, as a buffer-local variable, to specify how to fontify text in that mode. The value should look like this:

(keywords keywords-only case-fold
 syntax-alist syntax-begin other-vars...)

The first element, keywords, indirectly specifies the value of font-lock-keywords. It can be a symbol, a variable whose value is the list to use for font-lock-keywords. It can also be a list of several such symbols, one for each possible level of fontification. The first symbol specifies how to do level 1 fontification, the second symbol how to do level 2, and so on.

The second element, keywords-only, specifies the value of the variable font-lock-keywords-only. If this is non-nil, syntactic fontification (of strings and comments) is not performed.

The third element, case-fold, specifies the value of font-lock-case-fold-search. If it is non-nil, Font Lock mode ignores case when searching as directed by font-lock-keywords.

If the fourth element, syntax-alist, is non-nil, it should be a list of cons cells of the form (char-or-string . string). These are used to set up a syntax table for fontification (see section 35.3 Syntax Table Functions). The resulting syntax table is stored in font-lock-syntax-table.

The fifth element, syntax-begin, specifies the value of font-lock-beginning-of-syntax-function (see below).

All the remaining elements (if any) are collectively called other-vars. Each of these elements should have the form (variable . value)---which means, make variable buffer-local and then set it to value. You can use these other-vars to set other variables that affect fontification, aside from those you can control with the first five elements.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

  webmaster   donations   bookstore     delorie software   privacy  
  Copyright 2003   by The Free Software Foundation     Updated Jun 2003