annotate lisp/font-lock.el @ 20983:288cf06bf65c

(del_range_both): Reorder args. All callers changed.
author Karl Heuer <kwzh@gnu.org>
date Wed, 25 Feb 1998 23:18:15 +0000
parents ae0c93b9ac1f
children 060f95085d3d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1 ;;; font-lock.el --- Electric font lock mode
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
2
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
3 ;; Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
20190
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
5 ;; Author: jwz, then rms, then sm <simon@gnu.org>
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Maintainer: FSF
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; Keywords: languages, faces
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; any later version.
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13982
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13982
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13982
diff changeset
24 ;; Boston, MA 02111-1307, USA.
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
28 ;; Font Lock mode is a minor mode that causes your comments to be displayed in
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
29 ;; one face, strings in another, reserved words in another, and so on.
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;;
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;; Comments will be displayed in `font-lock-comment-face'.
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;; Strings will be displayed in `font-lock-string-face'.
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
33 ;; Regexps are used to display selected patterns in other faces.
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;;
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
35 ;; To make the text you type be fontified, use M-x font-lock-mode RET.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
36 ;; When this minor mode is on, the faces of the current line are updated with
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
37 ;; every insertion or deletion.
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;;
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
39 ;; To turn Font Lock mode on automatically, add this to your ~/.emacs file:
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;;
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
41 ;; (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock)
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;;
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
43 ;; Or if you want to turn Font Lock mode on in many modes:
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
44 ;;
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
45 ;; (global-font-lock-mode t)
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
46 ;;
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
47 ;; Fontification for a particular mode may be available in a number of levels
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
48 ;; of decoration. The higher the level, the more decoration, but the more time
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
49 ;; it takes to fontify. See the variable `font-lock-maximum-decoration', and
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
50 ;; also the variable `font-lock-maximum-size'. Support modes for Font Lock
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
51 ;; mode can be used to speed up Font Lock mode. See `font-lock-support-mode'.
15653
1653d3208c05 1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents: 15500
diff changeset
52
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
53 ;;; How Font Lock mode fontifies:
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
54
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
55 ;; When Font Lock mode is turned on in a buffer, it (a) fontifies the entire
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
56 ;; buffer and (b) installs one of its fontification functions on one of the
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
57 ;; hook variables that are run by Emacs after every buffer change (i.e., an
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
58 ;; insertion or deletion). Fontification means the replacement of `face' text
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
59 ;; properties in a given region; Emacs displays text with these `face' text
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
60 ;; properties appropriately.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
61 ;;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
62 ;; Fontification normally involves syntactic (i.e., strings and comments) and
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
63 ;; regexp (i.e., keywords and everything else) passes. There are actually
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
64 ;; three passes; (a) the syntactic keyword pass, (b) the syntactic pass and (c)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
65 ;; the keyword pass. Confused?
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
66 ;;
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
67 ;; The syntactic keyword pass places `syntax-table' text properties in the
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
68 ;; buffer according to the variable `font-lock-syntactic-keywords'. It is
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
69 ;; necessary because Emacs' syntax table is not powerful enough to describe all
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
70 ;; the different syntactic constructs required by the sort of people who decide
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
71 ;; that a single quote can be syntactic or not depending on the time of day.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
72 ;; (What sort of person could decide to overload the meaning of a quote?)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
73 ;; Obviously the syntactic keyword pass must occur before the syntactic pass.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
74 ;;
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
75 ;; The syntactic pass places `face' text properties in the buffer according to
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
76 ;; syntactic context, i.e., according to the buffer's syntax table and buffer
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
77 ;; text's `syntax-table' text properties. It involves using a syntax parsing
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
78 ;; function to determine the context of different parts of a region of text. A
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
79 ;; syntax parsing function is necessary because generally strings and/or
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
80 ;; comments can span lines, and so the context of a given region is not
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
81 ;; necessarily apparent from the content of that region. Because the keyword
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
82 ;; pass only works within a given region, it is not generally appropriate for
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
83 ;; syntactic fontification. This is the first fontification pass that makes
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
84 ;; changes visible to the user; it fontifies strings and comments.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
85 ;;
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
86 ;; The keyword pass places `face' text properties in the buffer according to
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
87 ;; the variable `font-lock-keywords'. It involves searching for given regexps
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
88 ;; (or calling given search functions) within the given region. This is the
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
89 ;; second fontification pass that makes changes visible to the user; it
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
90 ;; fontifies language reserved words, etc.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
91 ;;
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
92 ;; Oh, and the answer is, "Yes, obviously just about everything should be done
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
93 ;; in a single syntactic pass, but the only syntactic parser available
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
94 ;; understands only strings and comments." Perhaps one day someone will write
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
95 ;; some syntactic parsers for common languages and a son-of-font-lock.el could
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
96 ;; use them rather then relying so heavily on the keyword (regexp) pass.
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
97
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
98 ;;; How Font Lock mode supports modes or is supported by modes:
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
99
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
100 ;; Modes that support Font Lock mode do so by defining one or more variables
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
101 ;; whose values specify the fontification. Font Lock mode knows of these
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
102 ;; variable names from (a) the buffer local variable `font-lock-defaults', if
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
103 ;; non-nil, or (b) the global variable `font-lock-defaults-alist', if the major
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
104 ;; mode has an entry. (Font Lock mode is set up via (a) where a mode's
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
105 ;; patterns are distributed with the mode's package library, and (b) where a
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
106 ;; mode's patterns are distributed with font-lock.el itself. An example of (a)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
107 ;; is Pascal mode, an example of (b) is Lisp mode. Normally, the mechanism is
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
108 ;; (a); (b) is used where it is not clear which package library should contain
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
109 ;; the pattern definitions.) Font Lock mode chooses which variable to use for
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
110 ;; fontification based on `font-lock-maximum-decoration'.
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
111 ;;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
112 ;; Font Lock mode fontification behaviour can be modified in a number of ways.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
113 ;; See the below comments and the comments distributed throughout this file.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
114
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
115 ;;; Constructing patterns:
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
116
15653
1653d3208c05 1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents: 15500
diff changeset
117 ;; See the documentation for the variable `font-lock-keywords'.
1653d3208c05 1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents: 15500
diff changeset
118 ;;
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
119 ;; Efficient regexps for use as MATCHERs for `font-lock-keywords' and
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
120 ;; `font-lock-syntactic-keywords' can be generated via the function
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
121 ;; `regexp-opt', and their depth counted via the function `regexp-opt-depth'.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
122
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
123 ;;; Adding patterns for modes that already support Font Lock:
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
124
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
125 ;; Though Font Lock highlighting patterns already exist for many modes, it's
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
126 ;; likely there's something that you want fontified that currently isn't, even
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
127 ;; at the maximum fontification level. You can add highlighting patterns via
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
128 ;; `font-lock-add-keywords'. For example, say in some C
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
129 ;; header file you #define the token `and' to expand to `&&', etc., to make
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
130 ;; your C code almost readable. In your ~/.emacs there could be:
15653
1653d3208c05 1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents: 15500
diff changeset
131 ;;
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
132 ;; (font-lock-add-keywords 'c-mode '("\\<\\(and\\|or\\|not\\)\\>"))
15653
1653d3208c05 1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents: 15500
diff changeset
133 ;;
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
134 ;; Some modes provide specific ways to modify patterns based on the values of
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
135 ;; other variables. For example, additional C types can be specified via the
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
136 ;; variable `c-font-lock-extra-types'.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
137
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
138 ;;; Adding patterns for modes that do not support Font Lock:
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
139
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
140 ;; Not all modes support Font Lock mode. If you (as a user of the mode) add
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
141 ;; patterns for a new mode, you must define in your ~/.emacs a variable or
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
142 ;; variables that specify regexp fontification. Then, you should indicate to
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
143 ;; Font Lock mode, via the mode hook setting `font-lock-defaults', exactly what
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
144 ;; support is required. For example, say Foo mode should have the following
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
145 ;; regexps fontified case-sensitively, and comments and strings should not be
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
146 ;; fontified automagically. In your ~/.emacs there could be:
15653
1653d3208c05 1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents: 15500
diff changeset
147 ;;
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
148 ;; (defvar foo-font-lock-keywords
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
149 ;; '(("\\<\\(one\\|two\\|three\\)\\>" . font-lock-keyword-face)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
150 ;; ("\\<\\(four\\|five\\|six\\)\\>" . font-lock-type-face))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
151 ;; "Default expressions to highlight in Foo mode.")
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
152 ;;
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
153 ;; (add-hook 'foo-mode-hook
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
154 ;; (function (lambda ()
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
155 ;; (make-local-variable 'font-lock-defaults)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
156 ;; (setq font-lock-defaults '(foo-font-lock-keywords t)))))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
157
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
158 ;;; Adding Font Lock support for modes:
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
159
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
160 ;; Of course, it would be better that the mode already supports Font Lock mode.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
161 ;; The package author would do something similar to above. The mode must
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
162 ;; define at the top-level a variable or variables that specify regexp
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
163 ;; fontification. Then, the mode command should indicate to Font Lock mode,
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
164 ;; via `font-lock-defaults', exactly what support is required. For example,
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
165 ;; say Bar mode should have the following regexps fontified case-insensitively,
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
166 ;; and comments and strings should be fontified automagically. In bar.el there
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
167 ;; could be:
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
168 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
169 ;; (defvar bar-font-lock-keywords
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
170 ;; '(("\\<\\(uno\\|due\\|tre\\)\\>" . font-lock-keyword-face)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
171 ;; ("\\<\\(quattro\\|cinque\\|sei\\)\\>" . font-lock-type-face))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
172 ;; "Default expressions to highlight in Bar mode.")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
173 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
174 ;; and within `bar-mode' there could be:
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
175 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
176 ;; (make-local-variable 'font-lock-defaults)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
177 ;; (setq font-lock-defaults '(bar-font-lock-keywords nil t))
15653
1653d3208c05 1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents: 15500
diff changeset
178
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
179 ;; What is fontification for? You might say, "It's to make my code look nice."
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
180 ;; I think it should be for adding information in the form of cues. These cues
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
181 ;; should provide you with enough information to both (a) distinguish between
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
182 ;; different items, and (b) identify the item meanings, without having to read
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
183 ;; the items and think about it. Therefore, fontification allows you to think
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
184 ;; less about, say, the structure of code, and more about, say, why the code
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
185 ;; doesn't work. Or maybe it allows you to think less and drift off to sleep.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
186 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
187 ;; So, here are my opinions/advice/guidelines:
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
188 ;;
13701
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
189 ;; - Highlight conceptual objects, such as function and variable names, and
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
190 ;; different objects types differently, i.e., (a) and (b) above, highlight
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
191 ;; function names differently to variable names.
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
192 ;; - Keep the faces distinct from each other as far as possible.
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
193 ;; i.e., (a) above.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
194 ;; - Use the same face for the same conceptual object, across all modes.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
195 ;; i.e., (b) above, all modes that have items that can be thought of as, say,
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
196 ;; keywords, should be highlighted with the same face, etc.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
197 ;; - Make the face attributes fit the concept as far as possible.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
198 ;; i.e., function names might be a bold colour such as blue, comments might
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
199 ;; be a bright colour such as red, character strings might be brown, because,
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
200 ;; err, strings are brown (that was not the reason, please believe me).
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
201 ;; - Don't use a non-nil OVERRIDE unless you have a good reason.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
202 ;; Only use OVERRIDE for special things that are easy to define, such as the
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
203 ;; way `...' quotes are treated in strings and comments in Emacs Lisp mode.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
204 ;; Don't use it to, say, highlight keywords in commented out code or strings.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
205 ;; - Err, that's it.
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
206
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
207 ;;; Code:
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
208
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
209 ;; Define core `font-lock' group.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
210 (defgroup font-lock nil
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
211 "Font Lock mode text highlighting package."
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
212 :link '(custom-manual "(emacs)Font Lock")
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
213 :group 'faces)
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
214
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
215 (defgroup font-lock-highlighting-faces nil
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
216 "Faces for highlighting text."
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
217 :prefix "font-lock-"
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
218 :group 'font-lock)
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
219
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
220 (defgroup font-lock-extra-types nil
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
221 "Extra mode-specific type names for highlighting declarations."
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
222 :group 'font-lock)
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
223
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
224 ;; Define support mode groups here to impose `font-lock' group order.
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
225 (defgroup fast-lock nil
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
226 "Font Lock support mode to cache fontification."
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
227 :link '(custom-manual "(emacs)Support Modes")
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
228 :load 'fast-lock
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
229 :group 'font-lock)
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
230
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
231 (defgroup lazy-lock nil
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
232 "Font Lock support mode to fontify lazily."
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
233 :link '(custom-manual "(emacs)Support Modes")
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
234 :load 'lazy-lock
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
235 :group 'font-lock)
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
236
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
237 ;; User variables.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
238
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
239 (defcustom font-lock-maximum-size (* 250 1024)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
240 "*Maximum size of a buffer for buffer fontification.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
241 Only buffers less than this can be fontified when Font Lock mode is turned on.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
242 If nil, means size is irrelevant.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
243 If a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE),
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
244 where MAJOR-MODE is a symbol or t (meaning the default). For example:
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
245 ((c-mode . 256000) (c++-mode . 256000) (rmail-mode . 1048576))
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
246 means that the maximum size is 250K for buffers in C or C++ modes, one megabyte
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
247 for buffers in Rmail mode, and size is irrelevant otherwise."
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
248 :type '(choice (const :tag "none" nil)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
249 (integer :tag "size")
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
250 (repeat :menu-tag "mode specific" :tag "mode specific"
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
251 :value ((t . nil))
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
252 (cons :tag "Instance"
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
253 (radio :tag "Mode"
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
254 (const :tag "all" t)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
255 (symbol :tag "name"))
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
256 (radio :tag "Size"
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
257 (const :tag "none" nil)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
258 (integer :tag "size")))))
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
259 :group 'font-lock)
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
261 (defcustom font-lock-maximum-decoration t
14780
1d10e4a2fb51 Treat font-lock-keywords of (t) the same as nil.
Simon Marshall <simon@gnu.org>
parents: 14778
diff changeset
262 "*Maximum decoration level for fontification.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
263 If nil, use the default decoration (typically the minimum available).
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
264 If t, use the maximum decoration available.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
265 If a number, use that level of decoration (or if not available the maximum).
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
266 If a list, each element should be a cons pair of the form (MAJOR-MODE . LEVEL),
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
267 where MAJOR-MODE is a symbol or t (meaning the default). For example:
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
268 ((c-mode . t) (c++-mode . 2) (t . 1))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
269 means use the maximum decoration available for buffers in C mode, level 2
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
270 decoration for buffers in C++ mode, and level 1 decoration otherwise."
17507
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
271 :type '(choice (const :tag "default" nil)
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
272 (const :tag "maximum" t)
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
273 (integer :tag "level" 1)
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
274 (repeat :menu-tag "mode specific" :tag "mode specific"
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
275 :value ((t . t))
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
276 (cons :tag "Instance"
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
277 (radio :tag "Mode"
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
278 (const :tag "all" t)
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
279 (symbol :tag "name"))
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
280 (radio :tag "Decoration"
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
281 (const :tag "default" nil)
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
282 (const :tag "maximum" t)
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
283 (integer :tag "level" 1)))))
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
284 :group 'font-lock)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
285
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
286 (defcustom font-lock-verbose (* 0 1024)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
287 "*If non-nil, means show status messages for buffer fontification.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
288 If a number, only buffers greater than this size have fontification messages."
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
289 :type '(choice (const :tag "never" nil)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
290 (const :tag "always" t)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
291 (integer :tag "size"))
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
292 :group 'font-lock)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
293
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
294 ;; Fontification variables:
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
295
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 (defvar font-lock-keywords nil
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
297 "A list of the keywords to highlight.
20851
26c5d61bc3fd (font-lock-keywords): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20761
diff changeset
298 Each element should have one of these forms:
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
299
11515
0ebfc7701ebf Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents: 11467
diff changeset
300 MATCHER
0ebfc7701ebf Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents: 11467
diff changeset
301 (MATCHER . MATCH)
0ebfc7701ebf Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents: 11467
diff changeset
302 (MATCHER . FACENAME)
0ebfc7701ebf Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents: 11467
diff changeset
303 (MATCHER . HIGHLIGHT)
0ebfc7701ebf Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents: 11467
diff changeset
304 (MATCHER HIGHLIGHT ...)
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
305 (eval . FORM)
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
307 where HIGHLIGHT should be either MATCH-HIGHLIGHT or MATCH-ANCHORED.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
308
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
309 FORM is an expression, whose value should be a keyword element, evaluated when
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
310 the keyword is (first) used in a buffer. This feature can be used to provide a
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
311 keyword that can only be generated when Font Lock mode is actually turned on.
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
312
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
313 For highlighting single items, for example each instance of the word \"foo\",
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
314 typically only MATCH-HIGHLIGHT is required.
13982
baba81b17362 (font-lock-keywords): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13701
diff changeset
315 However, if an item or (typically) items are to be highlighted following the
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
316 instance of another item (the anchor), for example each instance of the
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
317 word \"bar\" following the word \"anchor\" then MATCH-ANCHORED may be required.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
318
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
319 MATCH-HIGHLIGHT should be of the form:
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
320
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
321 (MATCH FACENAME OVERRIDE LAXMATCH)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
322
20851
26c5d61bc3fd (font-lock-keywords): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20761
diff changeset
323 where MATCHER can be either the regexp to search for, or the function name to
20190
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
324 call to make the search (called with one argument, the limit of the search) and
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
325 return non-nil if it succeeds (and set `match-data' appropriately).
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
326 MATCHER regexps can be generated via the function `regexp-opt'. MATCH is the
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
327 subexpression of MATCHER to be highlighted. MATCH can be calculated via the
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
328 function `regexp-opt-depth'. FACENAME is an expression whose value is the face
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
329 name to use. Face default attributes can be modified via \\[customize].
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
331 OVERRIDE and LAXMATCH are flags. If OVERRIDE is t, existing fontification can
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
332 be overwritten. If `keep', only parts not already fontified are highlighted.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
333 If `prepend' or `append', existing fontification is merged with the new, in
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
334 which the new or existing fontification, respectively, takes precedence.
13982
baba81b17362 (font-lock-keywords): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13701
diff changeset
335 If LAXMATCH is non-nil, no error is signaled if there is no MATCH in MATCHER.
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
337 For example, an element of the form highlights (if not already highlighted):
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
338
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
339 \"\\\\\\=<foo\\\\\\=>\" discrete occurrences of \"foo\" in the value of the
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
340 variable `font-lock-keyword-face'.
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
341 (\"fu\\\\(bar\\\\)\" . 1) substring \"bar\" within all occurrences of \"fubar\" in
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
342 the value of `font-lock-keyword-face'.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
343 (\"fubar\" . fubar-face) Occurrences of \"fubar\" in the value of `fubar-face'.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
344 (\"foo\\\\|bar\" 0 foo-bar-face t)
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
345 occurrences of either \"foo\" or \"bar\" in the value
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
346 of `foo-bar-face', even if already highlighted.
20190
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
347 (fubar-match 1 fubar-face)
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
348 the first subexpression within all occurrences of
20190
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
349 whatever the function `fubar-match' finds and matches
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
350 in the value of `fubar-face'.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
351
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
352 MATCH-ANCHORED should be of the form:
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
353
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
354 (MATCHER PRE-MATCH-FORM POST-MATCH-FORM MATCH-HIGHLIGHT ...)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
355
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
356 where MATCHER is a regexp to search for or the function name to call to make
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
357 the search, as for MATCH-HIGHLIGHT above, but with one exception; see below.
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
358 PRE-MATCH-FORM and POST-MATCH-FORM are evaluated before the first, and after
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
359 the last, instance MATCH-ANCHORED's MATCHER is used. Therefore they can be
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
360 used to initialise before, and cleanup after, MATCHER is used. Typically,
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
361 PRE-MATCH-FORM is used to move to some position relative to the original
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
362 MATCHER, before starting with MATCH-ANCHORED's MATCHER. POST-MATCH-FORM might
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
363 be used to move, before resuming with MATCH-ANCHORED's parent's MATCHER.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
364
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
365 For example, an element of the form highlights (if not already highlighted):
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
366
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
367 (\"\\\\\\=<anchor\\\\\\=>\" (0 anchor-face) (\"\\\\\\=<item\\\\\\=>\" nil nil (0 item-face)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
368
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
369 discrete occurrences of \"anchor\" in the value of `anchor-face', and subsequent
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
370 discrete occurrences of \"item\" (on the same line) in the value of `item-face'.
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
371 (Here PRE-MATCH-FORM and POST-MATCH-FORM are nil. Therefore \"item\" is
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
372 initially searched for starting from the end of the match of \"anchor\", and
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
373 searching for subsequent instance of \"anchor\" resumes from where searching
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
374 for \"item\" concluded.)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
375
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
376 The above-mentioned exception is as follows. The limit of the MATCHER search
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
377 defaults to the end of the line after PRE-MATCH-FORM is evaluated.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
378 However, if PRE-MATCH-FORM returns a position greater than the position after
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
379 PRE-MATCH-FORM is evaluated, that position is used as the limit of the search.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
380 It is generally a bad idea to return a position greater than the end of the
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
381 line, i.e., cause the MATCHER search to span lines.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
382
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
383 These regular expressions should not match text which spans lines. While
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
384 \\[font-lock-fontify-buffer] handles multi-line patterns correctly, updating
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
385 when you edit the buffer does not, since it considers text one line at a time.
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
386
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
387 This variable is set by major modes via the variable `font-lock-defaults'.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
388 Be careful when composing regexps for this list; a poorly written pattern can
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
389 dramatically slow things down!")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
391 ;; This variable is used by mode packages that support Font Lock mode by
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
392 ;; defining their own keywords to use for `font-lock-keywords'. (The mode
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
393 ;; command should make it buffer-local and set it to provide the set up.)
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
394 (defvar font-lock-defaults nil
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
395 "Defaults for Font Lock mode specified by the major mode.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
396 Defaults should be of the form:
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
397
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
398 (KEYWORDS KEYWORDS-ONLY CASE-FOLD SYNTAX-ALIST SYNTAX-BEGIN ...)
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
399
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
400 KEYWORDS may be a symbol (a variable or function whose value is the keywords to
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
401 use for fontification) or a list of symbols. If KEYWORDS-ONLY is non-nil,
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
402 syntactic fontification (strings and comments) is not performed.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
403 If CASE-FOLD is non-nil, the case of the keywords is ignored when fontifying.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
404 If SYNTAX-ALIST is non-nil, it should be a list of cons pairs of the form
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
405 \(CHAR-OR-STRING . STRING) used to set the local Font Lock syntax table, for
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
406 keyword and syntactic fontification (see `modify-syntax-entry').
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
407
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
408 If SYNTAX-BEGIN is non-nil, it should be a function with no args used to move
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
409 backwards outside any enclosing syntactic block, for syntactic fontification.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
410 Typical values are `beginning-of-line' (i.e., the start of the line is known to
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
411 be outside a syntactic block), or `beginning-of-defun' for programming modes or
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
412 `backward-paragraph' for textual modes (i.e., the mode-dependent function is
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
413 known to move outside a syntactic block). If nil, the beginning of the buffer
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
414 is used as a position outside of a syntactic block, in the worst case.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
415
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
416 These item elements are used by Font Lock mode to set the variables
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
417 `font-lock-keywords', `font-lock-keywords-only',
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
418 `font-lock-keywords-case-fold-search', `font-lock-syntax-table' and
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
419 `font-lock-beginning-of-syntax-function', respectively.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
420
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
421 Further item elements are alists of the form (VARIABLE . VALUE) and are in no
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
422 particular order. Each VARIABLE is made buffer-local before set to VALUE.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
423
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
424 Currently, appropriate variables include `font-lock-mark-block-function'.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
425 If this is non-nil, it should be a function with no args used to mark any
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
426 enclosing block of text, for fontification via \\[font-lock-fontify-block].
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
427 Typical values are `mark-defun' for programming modes or `mark-paragraph' for
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
428 textual modes (i.e., the mode-dependent function is known to put point and mark
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
429 around a text block relevant to that mode).
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
430
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
431 Other variables include those for buffer-specialised fontification functions,
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
432 `font-lock-fontify-buffer-function', `font-lock-unfontify-buffer-function',
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
433 `font-lock-fontify-region-function', `font-lock-unfontify-region-function',
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
434 `font-lock-inhibit-thing-lock' and `font-lock-maximum-size'.")
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
435
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
436 ;; This variable is used where font-lock.el itself supplies the keywords.
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
437 (defvar font-lock-defaults-alist
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
438 (let (;; We use `beginning-of-defun', rather than nil, for SYNTAX-BEGIN.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
439 ;; Thus the calculation of the cache is usually faster but not
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
440 ;; infallible, so we risk mis-fontification. sm.
12385
c80966dc0b60 Specify in font-lock-defaults/font-lock-defaults-alist which keywords we can
Simon Marshall <simon@gnu.org>
parents: 12268
diff changeset
441 (c-mode-defaults
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
442 '((c-font-lock-keywords c-font-lock-keywords-1
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
443 c-font-lock-keywords-2 c-font-lock-keywords-3)
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
444 nil nil ((?_ . "w")) beginning-of-defun
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
445 ;; Obsoleted by Emacs 20 parse-partial-sexp's COMMENTSTOP.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
446 ;(font-lock-comment-start-regexp . "/[*/]")
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
447 (font-lock-mark-block-function . mark-defun)))
12385
c80966dc0b60 Specify in font-lock-defaults/font-lock-defaults-alist which keywords we can
Simon Marshall <simon@gnu.org>
parents: 12268
diff changeset
448 (c++-mode-defaults
c80966dc0b60 Specify in font-lock-defaults/font-lock-defaults-alist which keywords we can
Simon Marshall <simon@gnu.org>
parents: 12268
diff changeset
449 '((c++-font-lock-keywords c++-font-lock-keywords-1
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
450 c++-font-lock-keywords-2 c++-font-lock-keywords-3)
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
451 nil nil ((?_ . "w")) beginning-of-defun
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
452 ;; Obsoleted by Emacs 20 parse-partial-sexp's COMMENTSTOP.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
453 ;(font-lock-comment-start-regexp . "/[*/]")
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
454 (font-lock-mark-block-function . mark-defun)))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
455 (objc-mode-defaults
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
456 '((objc-font-lock-keywords objc-font-lock-keywords-1
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
457 objc-font-lock-keywords-2 objc-font-lock-keywords-3)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
458 nil nil ((?_ . "w") (?$ . "w")) nil
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
459 ;; Obsoleted by Emacs 20 parse-partial-sexp's COMMENTSTOP.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
460 ;(font-lock-comment-start-regexp . "/[*/]")
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
461 (font-lock-mark-block-function . mark-defun)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
462 (java-mode-defaults
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
463 '((java-font-lock-keywords java-font-lock-keywords-1
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
464 java-font-lock-keywords-2 java-font-lock-keywords-3)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
465 nil nil ((?_ . "w") (?$ . "w") (?. . "w")) nil
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
466 ;; Obsoleted by Emacs 20 parse-partial-sexp's COMMENTSTOP.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
467 ;(font-lock-comment-start-regexp . "/[*/]")
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
468 (font-lock-mark-block-function . mark-defun)))
12385
c80966dc0b60 Specify in font-lock-defaults/font-lock-defaults-alist which keywords we can
Simon Marshall <simon@gnu.org>
parents: 12268
diff changeset
469 (lisp-mode-defaults
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
470 '((lisp-font-lock-keywords
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
471 lisp-font-lock-keywords-1 lisp-font-lock-keywords-2)
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
472 nil nil (("+-*/.<>=!?$%_&~^:" . "w")) beginning-of-defun
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
473 ;; Obsoleted by Emacs 20 parse-partial-sexp's COMMENTSTOP.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
474 ;(font-lock-comment-start-regexp . ";")
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
475 (font-lock-mark-block-function . mark-defun)))
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
476 (scheme-mode-defaults
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
477 '((scheme-font-lock-keywords
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
478 scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
479 nil t (("+-*/.<>=!?$%_&~^:" . "w")) beginning-of-defun
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
480 ;; Obsoleted by Emacs 20 parse-partial-sexp's COMMENTSTOP.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
481 ;(font-lock-comment-start-regexp . ";")
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
482 (font-lock-mark-block-function . mark-defun)))
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
483 ;; For TeX modes we could use `backward-paragraph' for the same reason.
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
484 ;; But we don't, because paragraph breaks are arguably likely enough to
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
485 ;; occur within a genuine syntactic block to make it too risky.
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
486 ;; However, we do specify a MARK-BLOCK function as that cannot result
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
487 ;; in a mis-fontification even if it might not fontify enough. --sm.
15653
1653d3208c05 1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents: 15500
diff changeset
488 (tex-mode-defaults
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
489 '((tex-font-lock-keywords
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
490 tex-font-lock-keywords-1 tex-font-lock-keywords-2)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
491 nil nil ((?$ . "\"")) nil
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
492 ;; Obsoleted by Emacs 20 parse-partial-sexp's COMMENTSTOP.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
493 ;(font-lock-comment-start-regexp . "%")
15653
1653d3208c05 1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents: 15500
diff changeset
494 (font-lock-mark-block-function . mark-paragraph)))
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
495 )
11515
0ebfc7701ebf Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents: 11467
diff changeset
496 (list
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
497 (cons 'c-mode c-mode-defaults)
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
498 (cons 'c++-mode c++-mode-defaults)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
499 (cons 'objc-mode objc-mode-defaults)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
500 (cons 'java-mode java-mode-defaults)
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
501 (cons 'emacs-lisp-mode lisp-mode-defaults)
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
502 (cons 'inferior-scheme-mode scheme-mode-defaults)
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
503 (cons 'latex-mode tex-mode-defaults)
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
504 (cons 'lisp-mode lisp-mode-defaults)
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
505 (cons 'lisp-interaction-mode lisp-mode-defaults)
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
506 (cons 'plain-tex-mode tex-mode-defaults)
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
507 (cons 'scheme-mode scheme-mode-defaults)
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
508 (cons 'scheme-interaction-mode scheme-mode-defaults)
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
509 (cons 'slitex-mode tex-mode-defaults)
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
510 (cons 'tex-mode tex-mode-defaults)))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
511 "Alist of fall-back Font Lock defaults for major modes.
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
512 Each item should be a list of the form:
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
513
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
514 (MAJOR-MODE . FONT-LOCK-DEFAULTS)
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
515
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
516 where MAJOR-MODE is a symbol and FONT-LOCK-DEFAULTS is a list of default
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
517 settings. See the variable `font-lock-defaults', which takes precedence.")
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
518
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
519 (defvar font-lock-keywords-alist nil
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
520 "*Alist of `font-lock-keywords' local to a `major-mode'.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
521 This is normally set via `font-lock-add-keywords'.")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
522
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
523 (defvar font-lock-keywords-only nil
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
524 "*Non-nil means Font Lock should not fontify comments or strings.
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
525 This is normally set via `font-lock-defaults'.")
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
526
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 (defvar font-lock-keywords-case-fold-search nil
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
528 "*Non-nil means the patterns in `font-lock-keywords' are case-insensitive.
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
529 This is normally set via `font-lock-defaults'.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
531 (defvar font-lock-syntactic-keywords nil
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
532 "A list of the syntactic keywords to highlight.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
533 Can be the list or the name of a function or variable whose value is the list.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
534 See `font-lock-keywords' for a description of the form of this list;
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
535 the differences are listed below. MATCH-HIGHLIGHT should be of the form:
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
536
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
537 (MATCH SYNTAX OVERRIDE LAXMATCH)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
538
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
539 where SYNTAX can be of the form (SYNTAX-CODE . MATCHING-CHAR), the name of a
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
540 syntax table, or an expression whose value is such a form or a syntax table.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
541 OVERRIDE cannot be `prepend' or `append'.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
542
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
543 For example, an element of the form highlights syntactically:
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
544
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
545 (\"\\\\$\\\\(#\\\\)\" 1 (1 . nil))
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
546
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
547 a hash character when following a dollar character, with a SYNTAX-CODE of
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
548 1 (meaning punctuation syntax). Assuming that the buffer syntax table does
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
549 specify hash characters to have comment start syntax, the element will only
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
550 highlight hash characters that do not follow dollar characters as comments
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
551 syntactically.
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
552
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
553 (\"\\\\('\\\\).\\\\('\\\\)\"
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
554 (1 (7 . ?'))
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
555 (2 (7 . ?')))
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
556
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
557 both single quotes which surround a single character, with a SYNTAX-CODE of
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
558 7 (meaning string quote syntax) and a MATCHING-CHAR of a single quote (meaning
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
559 a single quote matches a single quote). Assuming that the buffer syntax table
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
560 does not specify single quotes to have quote syntax, the element will only
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
561 highlight single quotes of the form 'c' as strings syntactically.
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
562 Other forms, such as foo'bar or 'fubar', will not be highlighted as strings.
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
563
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
564 This is normally set via `font-lock-defaults'.")
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
565
8457
c0492d7043b2 (font-lock-syntax-table): New syntax table.
Richard M. Stallman <rms@gnu.org>
parents: 7915
diff changeset
566 (defvar font-lock-syntax-table nil
10879
73ce8261c2ce Added font-lock-maximum-decoration; use it to set lisp-font-lock-keywords, and
Simon Marshall <simon@gnu.org>
parents: 10545
diff changeset
567 "Non-nil means use this syntax table for fontifying.
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
568 If this is nil, the major mode's syntax table is used.
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
569 This is normally set via `font-lock-defaults'.")
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
570
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
571 ;; If this is nil, we only use the beginning of the buffer if we can't use
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
572 ;; `font-lock-cache-position' and `font-lock-cache-state'.
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
573 (defvar font-lock-beginning-of-syntax-function nil
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
574 "*Non-nil means use this function to move back outside of a syntactic block.
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
575 When called with no args it should leave point at the beginning of any
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
576 enclosing syntactic block.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
577 If this is nil, the beginning of the buffer is used (in the worst case).
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
578 This is normally set via `font-lock-defaults'.")
8457
c0492d7043b2 (font-lock-syntax-table): New syntax table.
Richard M. Stallman <rms@gnu.org>
parents: 7915
diff changeset
579
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
580 (defvar font-lock-mark-block-function nil
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
581 "*Non-nil means use this function to mark a block of text.
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
582 When called with no args it should leave point at the beginning of any
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
583 enclosing textual block and mark at the end.
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
584 This is normally set via `font-lock-defaults'.")
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
585
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
586 ;; Obsoleted by Emacs 20 parse-partial-sexp's COMMENTSTOP.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
587 ;(defvar font-lock-comment-start-regexp nil
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
588 ; "*Regexp to match the start of a comment.
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
589 ;This need not discriminate between genuine comments and quoted comment
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
590 ;characters or comment characters within strings.
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
591 ;If nil, `comment-start-skip' is used instead; see that variable for more info.
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
592 ;This is normally set via `font-lock-defaults'.")
15653
1653d3208c05 1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents: 15500
diff changeset
593
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
594 (defvar font-lock-fontify-buffer-function 'font-lock-default-fontify-buffer
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
595 "Function to use for fontifying the buffer.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
596 This is normally set via `font-lock-defaults'.")
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
597
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
598 (defvar font-lock-unfontify-buffer-function 'font-lock-default-unfontify-buffer
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
599 "Function to use for unfontifying the buffer.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
600 This is used when turning off Font Lock mode.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
601 This is normally set via `font-lock-defaults'.")
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
602
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
603 (defvar font-lock-fontify-region-function 'font-lock-default-fontify-region
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
604 "Function to use for fontifying a region.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
605 It should take two args, the beginning and end of the region, and an optional
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
606 third arg VERBOSE. If non-nil, the function should print status messages.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
607 This is normally set via `font-lock-defaults'.")
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
608
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
609 (defvar font-lock-unfontify-region-function 'font-lock-default-unfontify-region
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
610 "Function to use for unfontifying a region.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
611 It should take two args, the beginning and end of the region.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
612 This is normally set via `font-lock-defaults'.")
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
613
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
614 (defvar font-lock-inhibit-thing-lock nil
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
615 "List of Font Lock mode related modes that should not be turned on.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
616 Currently, valid mode names as `fast-lock-mode' and `lazy-lock-mode'.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
617 This is normally set via `font-lock-defaults'.")
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
618
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
619 (defvar font-lock-mode nil) ; Whether we are turned on/modeline.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
620 (defvar font-lock-fontified nil) ; Whether we have fontified the buffer.
10879
73ce8261c2ce Added font-lock-maximum-decoration; use it to set lisp-font-lock-keywords, and
Simon Marshall <simon@gnu.org>
parents: 10545
diff changeset
621
73ce8261c2ce Added font-lock-maximum-decoration; use it to set lisp-font-lock-keywords, and
Simon Marshall <simon@gnu.org>
parents: 10545
diff changeset
622 ;;;###autoload
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 (defvar font-lock-mode-hook nil
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 "Function or functions to run on entry to Font Lock mode.")
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
625
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
626 ;; Font Lock mode.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
627
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
628 (eval-when-compile
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
629 ;;
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
630 ;; We don't do this at the top-level as we only use non-autoloaded macros.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
631 (require 'cl)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
632 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
633 ;; Borrowed from lazy-lock.el.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
634 ;; We use this to preserve or protect things when modifying text properties.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
635 (defmacro save-buffer-state (varlist &rest body)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
636 "Bind variables according to VARLIST and eval BODY restoring buffer state."
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
637 (` (let* ((,@ (append varlist
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
638 '((modified (buffer-modified-p)) (buffer-undo-list t)
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
639 (inhibit-read-only t) (inhibit-point-motion-hooks t)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
640 before-change-functions after-change-functions
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
641 deactivate-mark buffer-file-name buffer-file-truename))))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
642 (,@ body)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
643 (when (and (not modified) (buffer-modified-p))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
644 (set-buffer-modified-p nil)))))
19846
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
645 (put 'save-buffer-state 'lisp-indent-function 1)
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
646 ;;
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
647 ;; Shut up the byte compiler.
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
648 (defvar global-font-lock-mode) ; Now a defcustom.
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
649 (defvar font-lock-face-attributes) ; Obsolete but respected if set.
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
650 (defvar font-lock-string-face) ; Used in syntactic fontification.
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
651 (defvar font-lock-comment-face))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
652
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
653 ;;;###autoload
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
654 (defun font-lock-mode (&optional arg)
13452
5aab5c1f2c33 Oops; left a note in a doc-string.
Simon Marshall <simon@gnu.org>
parents: 13440
diff changeset
655 "Toggle Font Lock mode.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
656 With arg, turn Font Lock mode on if and only if arg is positive.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
657
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
658 When Font Lock mode is enabled, text is fontified as you type it:
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
659
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
660 - Comments are displayed in `font-lock-comment-face';
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
661 - Strings are displayed in `font-lock-string-face';
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
662 - Certain other expressions are displayed in other faces according to the
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
663 value of the variable `font-lock-keywords'.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
664
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
665 You can enable Font Lock mode in any major mode automatically by turning on in
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
666 the major mode's hook. For example, put in your ~/.emacs:
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
667
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
668 (add-hook 'c-mode-hook 'turn-on-font-lock)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
669
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
670 Alternatively, you can use Global Font Lock mode to automagically turn on Font
15500
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
671 Lock mode in buffers whose major mode supports it and whose major mode is one
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
672 of `font-lock-global-modes'. For example, put in your ~/.emacs:
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
673
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
674 (global-font-lock-mode t)
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
675
15500
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
676 There are a number of support modes that may be used to speed up Font Lock mode
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
677 in various ways, specified via the variable `font-lock-support-mode'. Where
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
678 major modes support different levels of fontification, you can use the variable
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
679 `font-lock-maximum-decoration' to specify which level you generally prefer.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
680 When you turn Font Lock mode on/off the buffer is fontified/defontified, though
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
681 fontification occurs only if the buffer is less than `font-lock-maximum-size'.
13701
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
682
15500
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
683 For example, to specify that Font Lock mode use use Lazy Lock mode as a support
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
684 mode and use maximum levels of fontification, put in your ~/.emacs:
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
685
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
686 (setq font-lock-support-mode 'lazy-lock-mode)
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
687 (setq font-lock-maximum-decoration t)
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
688
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
689 To add your own highlighting for some major mode, and modify the highlighting
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
690 selected automatically via the variable `font-lock-maximum-decoration', you can
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
691 use `font-lock-add-keywords'.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
692
13701
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
693 To fontify a buffer, without turning on Font Lock mode and regardless of buffer
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
694 size, you can use \\[font-lock-fontify-buffer].
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
695
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
696 To fontify a block (the function or paragraph containing point, or a number of
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
697 lines around point), perhaps because modification on the current line caused
15500
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
698 syntactic change on other lines, you can use \\[font-lock-fontify-block].
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
699
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
700 See the variable `font-lock-defaults-alist' for the Font Lock mode default
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
701 settings. You can set your own default settings for some mode, by setting a
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
702 buffer local value for `font-lock-defaults', via its mode hook."
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
703 (interactive "P")
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
704 ;; Don't turn on Font Lock mode if we don't have a display (we're running a
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
705 ;; batch job) or if the buffer is invisible (the name starts with a space).
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
706 (let ((on-p (and (not noninteractive)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
707 (not (eq (aref (buffer-name) 0) ?\ ))
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
708 (if arg
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
709 (> (prefix-numeric-value arg) 0)
14708
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
710 (not font-lock-mode)))))
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
711 (set (make-local-variable 'font-lock-mode) on-p)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
712 ;; Turn on Font Lock mode.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
713 (when on-p
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
714 (make-local-hook 'after-change-functions)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
715 (add-hook 'after-change-functions 'font-lock-after-change-function nil t)
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
716 (font-lock-set-defaults)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
717 (font-lock-turn-on-thing-lock)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
718 (run-hooks 'font-lock-mode-hook)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
719 ;; Fontify the buffer if we have to.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
720 (let ((max-size (font-lock-value-in-major-mode font-lock-maximum-size)))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
721 (cond (font-lock-fontified
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
722 nil)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
723 ((or (null max-size) (> max-size (buffer-size)))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
724 (font-lock-fontify-buffer))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
725 (font-lock-verbose
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
726 (message "Fontifying %s...buffer too big" (buffer-name))))))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
727 ;; Turn off Font Lock mode.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
728 (unless on-p
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
729 (remove-hook 'after-change-functions 'font-lock-after-change-function t)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
730 (font-lock-unfontify-buffer)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
731 (font-lock-turn-off-thing-lock)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
732 (font-lock-unset-defaults))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
733 (force-mode-line-update)))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
734
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
735 ;;;###autoload
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
736 (defun turn-on-font-lock ()
14516
9360c3107669 Moved `supported' from turn-on-font-lock-if-supported to turn-on-font-lock.
Simon Marshall <simon@gnu.org>
parents: 14468
diff changeset
737 "Turn on Font Lock mode conditionally.
15500
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
738 Turn on only if the terminal can display it."
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
739 (when (and (not font-lock-mode) window-system)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
740 (font-lock-mode)))
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
741
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
742 ;;;###autoload
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
743 (defun font-lock-add-keywords (major-mode keywords &optional append)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
744 "Add highlighting KEYWORDS for MAJOR-MODE.
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
745 MAJOR-MODE should be a symbol, the major mode command name, such as `c-mode'
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
746 or nil. If nil, highlighting keywords are added for the current buffer.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
747 KEYWORDS should be a list; see the variable `font-lock-keywords'.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
748 By default they are added at the beginning of the current highlighting list.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
749 If optional argument APPEND is `set', they are used to replace the current
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
750 highlighting list. If APPEND is any other non-nil value, they are added at the
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
751 end of the current highlighting list.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
752
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
753 For example:
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
754
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
755 (font-lock-add-keywords 'c-mode
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
756 '((\"\\\\\\=<\\\\(FIXME\\\\):\" 1 font-lock-warning-face prepend)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
757 (\"\\\\\\=<\\\\(and\\\\|or\\\\|not\\\\)\\\\\\=>\" . font-lock-keyword-face)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
758
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
759 adds two fontification patterns for C mode, to fontify `FIXME:' words, even in
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
760 comments, and to fontify `and', `or' and `not' words as keywords.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
761
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
762 Note that some modes have specialised support for additional patterns, e.g.,
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
763 see the variables `c-font-lock-extra-types', `c++-font-lock-extra-types',
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
764 `objc-font-lock-extra-types' and `java-font-lock-extra-types'."
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
765 (cond (major-mode
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
766 ;; If MAJOR-MODE is non-nil, add the KEYWORDS and APPEND spec to
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
767 ;; `font-lock-keywords-alist' so `font-lock-set-defaults' uses them.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
768 (let ((spec (cons keywords append)) cell)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
769 (if (setq cell (assq major-mode font-lock-keywords-alist))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
770 (setcdr cell (append (cdr cell) (list spec)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
771 (push (list major-mode spec) font-lock-keywords-alist))))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
772 (font-lock-mode
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
773 ;; Otherwise if Font Lock mode is on, set or add the keywords now.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
774 (if (eq append 'set)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
775 (setq font-lock-keywords keywords)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
776 (let ((old (if (eq (car-safe font-lock-keywords) t)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
777 (cdr font-lock-keywords)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
778 font-lock-keywords)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
779 (setq font-lock-keywords (if append
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
780 (append old keywords)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
781 (append keywords old))))))))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
782
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
783 ;;; Global Font Lock mode.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
784
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
785 ;; A few people have hassled in the past for a way to make it easier to turn on
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
786 ;; Font Lock mode, without the user needing to know for which modes s/he has to
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
787 ;; turn it on, perhaps the same way hilit19.el/hl319.el does. I've always
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
788 ;; balked at that way, as I see it as just re-moulding the same problem in
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
789 ;; another form. That is; some person would still have to keep track of which
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
790 ;; modes (which may not even be distributed with Emacs) support Font Lock mode.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
791 ;; The list would always be out of date. And that person might have to be me.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
792
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
793 ;; Implementation.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
794 ;;
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
795 ;; In a previous discussion the following hack came to mind. It is a gross
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
796 ;; hack, but it generally works. We use the convention that major modes start
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
797 ;; by calling the function `kill-all-local-variables', which in turn runs
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
798 ;; functions on the hook variable `change-major-mode-hook'. We attach our
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
799 ;; function `font-lock-change-major-mode' to that hook. Of course, when this
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
800 ;; hook is run, the major mode is in the process of being changed and we do not
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
801 ;; know what the final major mode will be. So, `font-lock-change-major-mode'
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
802 ;; only (a) notes the name of the current buffer, and (b) adds our function
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
803 ;; `turn-on-font-lock-if-enabled' to the hook variables `find-file-hooks' and
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
804 ;; `post-command-hook' (for buffers that are not visiting files). By the time
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
805 ;; the functions on the first of these hooks to be run are run, the new major
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
806 ;; mode is assumed to be in place. This way we get a Font Lock function run
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
807 ;; when a major mode is turned on, without knowing major modes or their hooks.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
808 ;;
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
809 ;; Naturally this requires that (a) major modes run `kill-all-local-variables',
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
810 ;; as they are supposed to do, and (b) the major mode is in place after the
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
811 ;; file is visited or the command that ran `kill-all-local-variables' has
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
812 ;; finished, whichever the sooner. Arguably, any major mode that does not
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
813 ;; follow the convension (a) is broken, and I can't think of any reason why (b)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
814 ;; would not be met (except `gnudoit' on non-files). However, it is not clean.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
815 ;;
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
816 ;; Probably the cleanest solution is to have each major mode function run some
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
817 ;; hook, e.g., `major-mode-hook', but maybe implementing that change is
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
818 ;; impractical. I am personally against making `setq' a macro or be advised,
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
819 ;; or have a special function such as `set-major-mode', but maybe someone can
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
820 ;; come up with another solution?
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
821
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
822 ;; User interface.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
823 ;;
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
824 ;; Although Global Font Lock mode is a pseudo-mode, I think that the user
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
825 ;; interface should conform to the usual Emacs convention for modes, i.e., a
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
826 ;; command to toggle the feature (`global-font-lock-mode') with a variable for
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
827 ;; finer control of the mode's behaviour (`font-lock-global-modes').
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
828 ;;
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
829 ;; The feature should not be enabled by loading font-lock.el, since other
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
830 ;; mechanisms for turning on Font Lock mode, such as M-x font-lock-mode RET or
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
831 ;; (add-hook 'c-mode-hook 'turn-on-font-lock), would cause Font Lock mode to be
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
832 ;; turned on everywhere. That would not be intuitive or informative because
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
833 ;; loading a file tells you nothing about the feature or how to control it. It
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
834 ;; would also be contrary to the Principle of Least Surprise. sm.
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
835
14780
1d10e4a2fb51 Treat font-lock-keywords of (t) the same as nil.
Simon Marshall <simon@gnu.org>
parents: 14778
diff changeset
836 (defvar font-lock-buffers nil) ; For remembering buffers.
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
837
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
838 ;;;###autoload
14708
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
839 (defun global-font-lock-mode (&optional arg message)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
840 "Toggle Global Font Lock mode.
14708
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
841 With prefix ARG, turn Global Font Lock mode on if and only if ARG is positive.
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
842 Displays a message saying whether the mode is on or off if MESSAGE is non-nil.
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
843 Returns the new status of Global Font Lock mode (non-nil means on).
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
844
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
845 When Global Font Lock mode is enabled, Font Lock mode is automagically
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
846 turned on in a buffer if its major mode is one of `font-lock-global-modes'."
14708
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
847 (interactive "P\np")
19783
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
848 (let ((on-p (if arg
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
849 (> (prefix-numeric-value arg) 0)
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
850 (not global-font-lock-mode))))
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
851 (cond (on-p
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
852 (add-hook 'find-file-hooks 'turn-on-font-lock-if-enabled)
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
853 (add-hook 'post-command-hook 'turn-on-font-lock-if-enabled)
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
854 (setq font-lock-buffers (buffer-list)))
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
855 (t
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
856 (remove-hook 'find-file-hooks 'turn-on-font-lock-if-enabled)
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
857 (mapcar (function (lambda (buffer)
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
858 (with-current-buffer buffer
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
859 (when font-lock-mode
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
860 (font-lock-mode)))))
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
861 (buffer-list))))
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
862 (when message
19846
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
863 (message "Global Font Lock mode %s." (if on-p "enabled" "disabled")))
19783
c833b837a3fd (global-font-lock-mode): When turning off
Richard M. Stallman <rms@gnu.org>
parents: 19033
diff changeset
864 (setq global-font-lock-mode on-p)))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
865
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
866 ;; Naughty hack. This variable was originally a `defvar' to keep track of
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
867 ;; whether Global Font Lock mode was turned on or not. As a `defcustom' with
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
868 ;; special `:set' and `:require' forms, we can provide custom mode control.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
869 (defcustom global-font-lock-mode nil
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
870 "Toggle Global Font Lock mode.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
871 When Global Font Lock mode is enabled, Font Lock mode is automagically
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
872 turned on in a buffer if its major mode is one of `font-lock-global-modes'.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
873 You must modify via \\[customize] for this variable to have an effect."
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
874 :set (lambda (symbol value)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
875 (global-font-lock-mode (or value 0)))
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
876 :type 'boolean
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
877 :group 'font-lock
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
878 :require 'font-lock)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
879
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
880 (defcustom font-lock-global-modes t
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
881 "*Modes for which Font Lock mode is automagically turned on.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
882 Global Font Lock mode is controlled by the `global-font-lock-mode' command.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
883 If nil, means no modes have Font Lock mode automatically turned on.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
884 If t, all modes that support Font Lock mode have it automatically turned on.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
885 If a list, it should be a list of `major-mode' symbol names for which Font Lock
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
886 mode should be automatically turned on. The sense of the list is negated if it
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
887 begins with `not'. For example:
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
888 (c-mode c++-mode)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
889 means that Font Lock mode is turned on for buffers in C and C++ modes only."
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
890 :type '(choice (const :tag "none" nil)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
891 (const :tag "all" t)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
892 (set :menu-tag "mode specific" :tag "modes"
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
893 :value (not)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
894 (const :tag "Except" not)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
895 (repeat :inline t (symbol :tag "mode"))))
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
896 :group 'font-lock)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
897
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
898 (defun font-lock-change-major-mode ()
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
899 ;; Turn off Font Lock mode if it's on.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
900 (when font-lock-mode
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
901 (font-lock-mode))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
902 ;; Gross hack warning: Delicate readers should avert eyes now.
14708
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
903 ;; Something is running `kill-all-local-variables', which generally means the
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
904 ;; major mode is being changed. Run `turn-on-font-lock-if-enabled' after the
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
905 ;; file is visited or the current command has finished.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
906 (when global-font-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
907 (add-hook 'post-command-hook 'turn-on-font-lock-if-enabled)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
908 (add-to-list 'font-lock-buffers (current-buffer))))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
909
14516
9360c3107669 Moved `supported' from turn-on-font-lock-if-supported to turn-on-font-lock.
Simon Marshall <simon@gnu.org>
parents: 14468
diff changeset
910 (defun turn-on-font-lock-if-enabled ()
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
911 ;; Gross hack warning: Delicate readers should avert eyes now.
15500
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
912 ;; Turn on Font Lock mode if it's supported by the major mode and enabled by
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
913 ;; the user.
14516
9360c3107669 Moved `supported' from turn-on-font-lock-if-supported to turn-on-font-lock.
Simon Marshall <simon@gnu.org>
parents: 14468
diff changeset
914 (remove-hook 'post-command-hook 'turn-on-font-lock-if-enabled)
14780
1d10e4a2fb51 Treat font-lock-keywords of (t) the same as nil.
Simon Marshall <simon@gnu.org>
parents: 14778
diff changeset
915 (while font-lock-buffers
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
916 (when (buffer-live-p (car font-lock-buffers))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
917 (save-excursion
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
918 (set-buffer (car font-lock-buffers))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
919 (when (and (or font-lock-defaults
15500
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
920 (assq major-mode font-lock-defaults-alist))
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
921 (or (eq font-lock-global-modes t)
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
922 (if (eq (car-safe font-lock-global-modes) 'not)
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
923 (not (memq major-mode (cdr font-lock-global-modes)))
5c60db96bc32 Put fewer conditions in turn-on-font-lock and more in turn-on-font-lock-if-enabled, so a user can put the former on hooks.
Simon Marshall <simon@gnu.org>
parents: 15492
diff changeset
924 (memq major-mode font-lock-global-modes))))
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
925 (let (inhibit-quit)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
926 (turn-on-font-lock)))))
14780
1d10e4a2fb51 Treat font-lock-keywords of (t) the same as nil.
Simon Marshall <simon@gnu.org>
parents: 14778
diff changeset
927 (setq font-lock-buffers (cdr font-lock-buffers))))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
928
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
929 (add-hook 'change-major-mode-hook 'font-lock-change-major-mode)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
930
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
931 ;;; End of Global Font Lock mode.
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
932
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
933 ;;; Font Lock Support mode.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
934
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
935 ;; This is the code used to interface font-lock.el with any of its add-on
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
936 ;; packages, and provide the user interface. Packages that have their own
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
937 ;; local buffer fontification functions (see below) may have to call
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
938 ;; `font-lock-after-fontify-buffer' and/or `font-lock-after-unfontify-buffer'
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
939 ;; themselves.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
940
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
941 (defcustom font-lock-support-mode nil
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
942 "*Support mode for Font Lock mode.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
943 Support modes speed up Font Lock mode by being choosy about when fontification
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
944 occurs. Known support modes are Fast Lock mode (symbol `fast-lock-mode') and
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
945 Lazy Lock mode (symbol `lazy-lock-mode'). See those modes for more info.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
946 If nil, means support for Font Lock mode is never performed.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
947 If a symbol, use that support mode.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
948 If a list, each element should be of the form (MAJOR-MODE . SUPPORT-MODE),
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
949 where MAJOR-MODE is a symbol or t (meaning the default). For example:
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
950 ((c-mode . fast-lock-mode) (c++-mode . fast-lock-mode) (t . lazy-lock-mode))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
951 means that Fast Lock mode is used to support Font Lock mode for buffers in C or
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
952 C++ modes, and Lazy Lock mode is used to support Font Lock mode otherwise.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
953
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
954 The value of this variable is used when Font Lock mode is turned on."
17507
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
955 :type '(choice (const :tag "none" nil)
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
956 (const :tag "fast lock" fast-lock-mode)
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
957 (const :tag "lazy lock" lazy-lock-mode)
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
958 (repeat :menu-tag "mode specific" :tag "mode specific"
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
959 :value ((t . lazy-lock-mode))
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
960 (cons :tag "Instance"
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
961 (radio :tag "Mode"
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
962 (const :tag "all" t)
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
963 (symbol :tag "name"))
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
964 (radio :tag "Decoration"
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
965 (const :tag "fast lock" fast-lock-mode)
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
966 (const :tag "lazy lock" lazy-lock-mode)))
fd87760f20cd Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents: 17495
diff changeset
967 ))
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
968 :group 'font-lock)
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
969
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
970 (defvar fast-lock-mode nil)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
971 (defvar lazy-lock-mode nil)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
972
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
973 (defun font-lock-turn-on-thing-lock ()
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
974 (let ((thing-mode (font-lock-value-in-major-mode font-lock-support-mode)))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
975 (cond ((eq thing-mode 'fast-lock-mode)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
976 (fast-lock-mode t))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
977 ((eq thing-mode 'lazy-lock-mode)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
978 (lazy-lock-mode t)))))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
979
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
980 (defun font-lock-turn-off-thing-lock ()
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
981 (cond (fast-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
982 (fast-lock-mode nil))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
983 (lazy-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
984 (lazy-lock-mode nil))))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
985
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
986 (defun font-lock-after-fontify-buffer ()
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
987 (cond (fast-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
988 (fast-lock-after-fontify-buffer))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
989 (lazy-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
990 (lazy-lock-after-fontify-buffer))))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
991
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
992 (defun font-lock-after-unfontify-buffer ()
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
993 (cond (fast-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
994 (fast-lock-after-unfontify-buffer))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
995 (lazy-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
996 (lazy-lock-after-unfontify-buffer))))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
997
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
998 ;;; End of Font Lock Support mode.
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
999
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1000 ;;; Fontification functions.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1001
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1002 ;; Rather than the function, e.g., `font-lock-fontify-region' containing the
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1003 ;; code to fontify a region, the function runs the function whose name is the
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1004 ;; value of the variable, e.g., `font-lock-fontify-region-function'. Normally,
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1005 ;; the value of this variable is, e.g., `font-lock-default-fontify-region'
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1006 ;; which does contain the code to fontify a region. However, the value of the
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1007 ;; variable could be anything and thus, e.g., `font-lock-fontify-region' could
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1008 ;; do anything. The indirection of the fontification functions gives major
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1009 ;; modes the capability of modifying the way font-lock.el fontifies. Major
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1010 ;; modes can modify the values of, e.g., `font-lock-fontify-region-function',
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1011 ;; via the variable `font-lock-defaults'.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1012 ;;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1013 ;; For example, Rmail mode sets the variable `font-lock-defaults' so that
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1014 ;; font-lock.el uses its own function for buffer fontification. This function
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1015 ;; makes fontification be on a message-by-message basis and so visiting an
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1016 ;; RMAIL file is much faster. A clever implementation of the function might
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1017 ;; fontify the headers differently than the message body. (It should, and
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1018 ;; correspondingly for Mail mode, but I can't be bothered to do the work. Can
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1019 ;; you?) This hints at a more interesting use...
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1020 ;;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1021 ;; Languages that contain text normally contained in different major modes
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1022 ;; could define their own fontification functions that treat text differently
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1023 ;; depending on its context. For example, Perl mode could arrange that here
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1024 ;; docs are fontified differently than Perl code. Or Yacc mode could fontify
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1025 ;; rules one way and C code another. Neat!
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1026 ;;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1027 ;; A further reason to use the fontification indirection feature is when the
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1028 ;; default syntactual fontification, or the default fontification in general,
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1029 ;; is not flexible enough for a particular major mode. For example, perhaps
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1030 ;; comments are just too hairy for `font-lock-fontify-syntactically-region' to
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1031 ;; cope with. You need to write your own version of that function, e.g.,
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1032 ;; `hairy-fontify-syntactically-region', and make your own version of
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1033 ;; `hairy-fontify-region' call that function before calling
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1034 ;; `font-lock-fontify-keywords-region' for the normal regexp fontification
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1035 ;; pass. And Hairy mode would set `font-lock-defaults' so that font-lock.el
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1036 ;; would call your region fontification function instead of its own. For
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1037 ;; example, TeX modes could fontify {\foo ...} and \bar{...} etc. multi-line
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1038 ;; directives correctly and cleanly. (It is the same problem as fontifying
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1039 ;; multi-line strings and comments; regexps are not appropriate for the job.)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1040
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1041 ;;;###autoload
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1042 (defun font-lock-fontify-buffer ()
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1043 "Fontify the current buffer the way `font-lock-mode' would."
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1044 (interactive)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1045 (let ((font-lock-verbose (or font-lock-verbose (interactive-p))))
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1046 (funcall font-lock-fontify-buffer-function)))
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1047
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1048 (defun font-lock-unfontify-buffer ()
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1049 (funcall font-lock-unfontify-buffer-function))
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1050
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1051 (defun font-lock-fontify-region (beg end &optional loudly)
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1052 (funcall font-lock-fontify-region-function beg end loudly))
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1053
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1054 (defun font-lock-unfontify-region (beg end)
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1055 (funcall font-lock-unfontify-region-function beg end))
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1056
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1057 (defun font-lock-default-fontify-buffer ()
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
1058 (let ((verbose (if (numberp font-lock-verbose)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
1059 (> (buffer-size) font-lock-verbose)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
1060 font-lock-verbose)))
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1061 (when verbose
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1062 (message "Fontifying %s..." (buffer-name)))
13701
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
1063 ;; Make sure we have the right `font-lock-keywords' etc.
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1064 (unless font-lock-mode
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1065 (font-lock-set-defaults))
13701
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
1066 ;; Make sure we fontify etc. in the whole buffer.
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
1067 (save-restriction
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
1068 (widen)
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
1069 (condition-case nil
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
1070 (save-excursion
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
1071 (save-match-data
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
1072 (font-lock-fontify-region (point-min) (point-max) verbose)
14374
e2423983be05 Support for local fontification.
Simon Marshall <simon@gnu.org>
parents: 14365
diff changeset
1073 (font-lock-after-fontify-buffer)
13701
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
1074 (setq font-lock-fontified t)))
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
1075 ;; We don't restore the old fontification, so it's best to unfontify.
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1076 (quit (font-lock-unfontify-buffer))))
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1077 ;; Make sure we undo `font-lock-keywords' etc.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1078 (unless font-lock-mode
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1079 (font-lock-unset-defaults))
15442
b4c8360e450e (global-font-lock-mode): Set up find-file-hooks.
Richard M. Stallman <rms@gnu.org>
parents: 14780
diff changeset
1080 (if verbose (message "Fontifying %s...%s" (buffer-name)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1081 (if font-lock-fontified "done" "quit")))))
13701
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
1082
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1083 (defun font-lock-default-unfontify-buffer ()
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1084 ;; Make sure we unfontify etc. in the whole buffer.
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1085 (save-restriction
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1086 (widen)
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1087 (font-lock-unfontify-region (point-min) (point-max))
14374
e2423983be05 Support for local fontification.
Simon Marshall <simon@gnu.org>
parents: 14365
diff changeset
1088 (font-lock-after-unfontify-buffer)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1089 (setq font-lock-fontified nil)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1090
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1091 (defun font-lock-default-fontify-region (beg end loudly)
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1092 (save-buffer-state
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1093 ((parse-sexp-lookup-properties font-lock-syntactic-keywords)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1094 (old-syntax-table (syntax-table)))
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1095 (unwind-protect
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1096 (save-restriction
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1097 (widen)
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1098 ;; Use the fontification syntax table, if any.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1099 (when font-lock-syntax-table
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1100 (set-syntax-table font-lock-syntax-table))
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1101 ;; Now do the fontification.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1102 (font-lock-unfontify-region beg end)
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1103 (when font-lock-syntactic-keywords
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1104 (font-lock-fontify-syntactic-keywords-region beg end))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1105 (unless font-lock-keywords-only
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1106 (font-lock-fontify-syntactically-region beg end loudly))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1107 (font-lock-fontify-keywords-region beg end loudly))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1108 ;; Clean up.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1109 (set-syntax-table old-syntax-table))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1110
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1111 ;; The following must be rethought, since keywords can override fontification.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1112 ; ;; Now scan for keywords, but not if we are inside a comment now.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1113 ; (or (and (not font-lock-keywords-only)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1114 ; (let ((state (parse-partial-sexp beg end nil nil
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1115 ; font-lock-cache-state)))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1116 ; (or (nth 4 state) (nth 7 state))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1117 ; (font-lock-fontify-keywords-region beg end))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1118
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1119 (defun font-lock-default-unfontify-region (beg end)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1120 (save-buffer-state nil
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1121 (remove-text-properties beg end '(face nil syntax-table nil))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1122
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1123 ;; Called when any modification is made to buffer text.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1124 (defun font-lock-after-change-function (beg end old-len)
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1125 (let ((inhibit-point-motion-hooks t))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1126 (save-excursion
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1127 (save-match-data
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1128 ;; Rescan between start of lines enclosing the region.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1129 (font-lock-fontify-region
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1130 (progn (goto-char beg) (beginning-of-line) (point))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1131 (progn (goto-char end) (forward-line 1) (point)))))))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1132
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1133 (defun font-lock-fontify-block (&optional arg)
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1134 "Fontify some lines the way `font-lock-fontify-buffer' would.
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1135 The lines could be a function or paragraph, or a specified number of lines.
14516
9360c3107669 Moved `supported' from turn-on-font-lock-if-supported to turn-on-font-lock.
Simon Marshall <simon@gnu.org>
parents: 14468
diff changeset
1136 If ARG is given, fontify that many lines before and after point, or 16 lines if
9360c3107669 Moved `supported' from turn-on-font-lock-if-supported to turn-on-font-lock.
Simon Marshall <simon@gnu.org>
parents: 14468
diff changeset
1137 no ARG is given and `font-lock-mark-block-function' is nil.
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1138 If `font-lock-mark-block-function' non-nil and no ARG is given, it is used to
14516
9360c3107669 Moved `supported' from turn-on-font-lock-if-supported to turn-on-font-lock.
Simon Marshall <simon@gnu.org>
parents: 14468
diff changeset
1139 delimit the region to fontify."
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1140 (interactive "P")
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1141 (let ((inhibit-point-motion-hooks t) font-lock-beginning-of-syntax-function
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1142 deactivate-mark)
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1143 ;; Make sure we have the right `font-lock-keywords' etc.
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1144 (if (not font-lock-mode) (font-lock-set-defaults))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1145 (save-excursion
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1146 (save-match-data
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1147 (condition-case error-data
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1148 (if (or arg (not font-lock-mark-block-function))
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1149 (let ((lines (if arg (prefix-numeric-value arg) 16)))
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1150 (font-lock-fontify-region
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1151 (save-excursion (forward-line (- lines)) (point))
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1152 (save-excursion (forward-line lines) (point))))
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1153 (funcall font-lock-mark-block-function)
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1154 (font-lock-fontify-region (point) (mark)))
15442
b4c8360e450e (global-font-lock-mode): Set up find-file-hooks.
Richard M. Stallman <rms@gnu.org>
parents: 14780
diff changeset
1155 ((error quit) (message "Fontifying block...%s" error-data)))))))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1156
14778
af95abc39d75 (font-lock-fontify-block): Use facemenu-keymap to make the binding.
Richard M. Stallman <rms@gnu.org>
parents: 14735
diff changeset
1157 (define-key facemenu-keymap "\M-g" 'font-lock-fontify-block)
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1158
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1159 ;;; End of Fontification functions.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1160
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1161 ;;; Additional text property functions.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1162
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1163 ;; The following text property functions should be builtins. This means they
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1164 ;; should be written in C and put with all the other text property functions.
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1165 ;; In the meantime, those that are used by font-lock.el are defined in Lisp
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1166 ;; below and given a `font-lock-' prefix. Those that are not used are defined
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1167 ;; in Lisp below and commented out. sm.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1168
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1169 (defun font-lock-prepend-text-property (start end prop value &optional object)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1170 "Prepend to one property of the text from START to END.
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1171 Arguments PROP and VALUE specify the property and value to prepend to the value
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1172 already in place. The resulting property values are always lists.
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1173 Optional argument OBJECT is the string or buffer containing the text."
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1174 (let ((val (if (listp value) value (list value))) next prev)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1175 (while (/= start end)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1176 (setq next (next-single-property-change start prop object end)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1177 prev (get-text-property start prop object))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1178 (put-text-property start next prop
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1179 (append val (if (listp prev) prev (list prev)))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1180 object)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1181 (setq start next))))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1182
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1183 (defun font-lock-append-text-property (start end prop value &optional object)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1184 "Append to one property of the text from START to END.
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1185 Arguments PROP and VALUE specify the property and value to append to the value
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1186 already in place. The resulting property values are always lists.
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1187 Optional argument OBJECT is the string or buffer containing the text."
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1188 (let ((val (if (listp value) value (list value))) next prev)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1189 (while (/= start end)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1190 (setq next (next-single-property-change start prop object end)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1191 prev (get-text-property start prop object))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1192 (put-text-property start next prop
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1193 (append (if (listp prev) prev (list prev)) val)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1194 object)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1195 (setq start next))))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1196
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1197 (defun font-lock-fillin-text-property (start end prop value &optional object)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1198 "Fill in one property of the text from START to END.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1199 Arguments PROP and VALUE specify the property and value to put where none are
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1200 already in place. Therefore existing property values are not overwritten.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1201 Optional argument OBJECT is the string or buffer containing the text."
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1202 (let ((start (text-property-any start end prop nil object)) next)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1203 (while start
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1204 (setq next (next-single-property-change start prop object end))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1205 (put-text-property start next prop value object)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1206 (setq start (text-property-any next end prop nil object)))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1207
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1208 ;; For completeness: this is to `remove-text-properties' as `put-text-property'
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1209 ;; is to `add-text-properties', etc.
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1210 ;(defun remove-text-property (start end property &optional object)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1211 ; "Remove a property from text from START to END.
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1212 ;Argument PROPERTY is the property to remove.
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1213 ;Optional argument OBJECT is the string or buffer containing the text.
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1214 ;Return t if the property was actually removed, nil otherwise."
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1215 ; (remove-text-properties start end (list property) object))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1216
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1217 ;; For consistency: maybe this should be called `remove-single-property' like
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1218 ;; `next-single-property-change' (not `next-single-text-property-change'), etc.
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1219 ;(defun remove-single-text-property (start end prop value &optional object)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1220 ; "Remove a specific property value from text from START to END.
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1221 ;Arguments PROP and VALUE specify the property and value to remove. The
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1222 ;resulting property values are not equal to VALUE nor lists containing VALUE.
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1223 ;Optional argument OBJECT is the string or buffer containing the text."
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1224 ; (let ((start (text-property-not-all start end prop nil object)) next prev)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1225 ; (while start
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1226 ; (setq next (next-single-property-change start prop object end)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1227 ; prev (get-text-property start prop object))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1228 ; (cond ((and (symbolp prev) (eq value prev))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1229 ; (remove-text-property start next prop object))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1230 ; ((and (listp prev) (memq value prev))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1231 ; (let ((new (delq value prev)))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1232 ; (cond ((null new)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1233 ; (remove-text-property start next prop object))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1234 ; ((= (length new) 1)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1235 ; (put-text-property start next prop (car new) object))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1236 ; (t
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1237 ; (put-text-property start next prop new object))))))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1238 ; (setq start (text-property-not-all next end prop nil object)))))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1239
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1240 ;;; End of Additional text property functions.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1241
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1242 ;;; Syntactic regexp fontification functions.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1243
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1244 ;; These syntactic keyword pass functions are identical to those keyword pass
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1245 ;; functions below, with the following exceptions; (a) they operate on
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1246 ;; `font-lock-syntactic-keywords' of course, (b) they are all `defun' as speed
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1247 ;; is less of an issue, (c) eval of property value does not occur JIT as speed
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1248 ;; is less of an issue, (d) OVERRIDE cannot be `prepend' or `append' as it
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1249 ;; makes no sense for `syntax-table' property values, (e) they do not do it
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1250 ;; LOUDLY as it is not likely to be intensive.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1251
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1252 (defun font-lock-apply-syntactic-highlight (highlight)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1253 "Apply HIGHLIGHT following a match.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1254 HIGHLIGHT should be of the form MATCH-HIGHLIGHT,
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1255 see `font-lock-syntactic-keywords'."
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1256 (let* ((match (nth 0 highlight))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1257 (start (match-beginning match)) (end (match-end match))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1258 (value (nth 1 highlight))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1259 (override (nth 2 highlight)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1260 (unless (numberp (car value))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1261 (setq value (eval value)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1262 (cond ((not start)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1263 ;; No match but we might not signal an error.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1264 (or (nth 3 highlight)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1265 (error "No match %d in highlight %S" match highlight)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1266 ((not override)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1267 ;; Cannot override existing fontification.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1268 (or (text-property-not-all start end 'syntax-table nil)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1269 (put-text-property start end 'syntax-table value)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1270 ((eq override t)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1271 ;; Override existing fontification.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1272 (put-text-property start end 'syntax-table value))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1273 ((eq override 'keep)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1274 ;; Keep existing fontification.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1275 (font-lock-fillin-text-property start end 'syntax-table value)))))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1276
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1277 (defun font-lock-fontify-syntactic-anchored-keywords (keywords limit)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1278 "Fontify according to KEYWORDS until LIMIT.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1279 KEYWORDS should be of the form MATCH-ANCHORED, see `font-lock-keywords',
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1280 LIMIT can be modified by the value of its PRE-MATCH-FORM."
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1281 (let ((matcher (nth 0 keywords)) (lowdarks (nthcdr 3 keywords)) highlights
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1282 ;; Evaluate PRE-MATCH-FORM.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1283 (pre-match-value (eval (nth 1 keywords))))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1284 ;; Set LIMIT to value of PRE-MATCH-FORM or the end of line.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1285 (if (and (numberp pre-match-value) (> pre-match-value (point)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1286 (setq limit pre-match-value)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1287 (save-excursion (end-of-line) (setq limit (point))))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1288 (save-match-data
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1289 ;; Find an occurrence of `matcher' before `limit'.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1290 (while (if (stringp matcher)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1291 (re-search-forward matcher limit t)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1292 (funcall matcher limit))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1293 ;; Apply each highlight to this instance of `matcher'.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1294 (setq highlights lowdarks)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1295 (while highlights
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1296 (font-lock-apply-syntactic-highlight (car highlights))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1297 (setq highlights (cdr highlights)))))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1298 ;; Evaluate POST-MATCH-FORM.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1299 (eval (nth 2 keywords))))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1300
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1301 (defun font-lock-fontify-syntactic-keywords-region (start end)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1302 "Fontify according to `font-lock-syntactic-keywords' between START and END.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1303 START should be at the beginning of a line."
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1304 ;; If `font-lock-syntactic-keywords' is a symbol, get the real keywords.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1305 (when (symbolp font-lock-syntactic-keywords)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1306 (setq font-lock-syntactic-keywords (font-lock-eval-keywords
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1307 font-lock-syntactic-keywords)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1308 ;; If `font-lock-syntactic-keywords' is not compiled, compile it.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1309 (unless (eq (car font-lock-syntactic-keywords) t)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1310 (setq font-lock-syntactic-keywords (font-lock-compile-keywords
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1311 font-lock-syntactic-keywords)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1312 ;; Get down to business.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1313 (let ((case-fold-search font-lock-keywords-case-fold-search)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1314 (keywords (cdr font-lock-syntactic-keywords))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1315 keyword matcher highlights)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1316 (while keywords
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1317 ;; Find an occurrence of `matcher' from `start' to `end'.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1318 (setq keyword (car keywords) matcher (car keyword))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1319 (goto-char start)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1320 (while (if (stringp matcher)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1321 (re-search-forward matcher end t)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1322 (funcall matcher end))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1323 ;; Apply each highlight to this instance of `matcher', which may be
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1324 ;; specific highlights or more keywords anchored to `matcher'.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1325 (setq highlights (cdr keyword))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1326 (while highlights
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1327 (if (numberp (car (car highlights)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1328 (font-lock-apply-syntactic-highlight (car highlights))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1329 (font-lock-fontify-syntactic-anchored-keywords (car highlights)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1330 end))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1331 (setq highlights (cdr highlights))))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1332 (setq keywords (cdr keywords)))))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1333
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1334 ;;; End of Syntactic regexp fontification functions.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1335
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1336 ;;; Syntactic fontification functions.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1337
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1338 ;; These record the parse state at a particular position, always the start of a
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1339 ;; line. Used to make `font-lock-fontify-syntactically-region' faster.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1340 ;; Previously, `font-lock-cache-position' was just a buffer position. However,
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1341 ;; under certain situations, this occasionally resulted in mis-fontification.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1342 ;; I think the "situations" were deletion with Lazy Lock mode's deferral. sm.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1343 (defvar font-lock-cache-state nil)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1344 (defvar font-lock-cache-position nil)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1345
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1346 (defun font-lock-fontify-syntactically-region (start end &optional loudly)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1347 "Put proper face on each string and comment between START and END.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1348 START should be at the beginning of a line."
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1349 (let ((cache (marker-position font-lock-cache-position))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1350 state string beg)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1351 (if loudly (message "Fontifying %s... (syntactically...)" (buffer-name)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1352 (goto-char start)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1353 ;;
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1354 ;; Find the state at the `beginning-of-line' before `start'.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1355 (if (eq start cache)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1356 ;; Use the cache for the state of `start'.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1357 (setq state font-lock-cache-state)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1358 ;; Find the state of `start'.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1359 (if (null font-lock-beginning-of-syntax-function)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1360 ;; Use the state at the previous cache position, if any, or
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1361 ;; otherwise calculate from `point-min'.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1362 (if (or (null cache) (< start cache))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1363 (setq state (parse-partial-sexp (point-min) start))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1364 (setq state (parse-partial-sexp cache start nil nil
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1365 font-lock-cache-state)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1366 ;; Call the function to move outside any syntactic block.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1367 (funcall font-lock-beginning-of-syntax-function)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1368 (setq state (parse-partial-sexp (point) start)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1369 ;; Cache the state and position of `start'.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1370 (setq font-lock-cache-state state)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1371 (set-marker font-lock-cache-position start))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1372 ;;
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1373 ;; If the region starts inside a string or comment, show the extent of it.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1374 (when (or (nth 3 state) (nth 4 state))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1375 (setq string (nth 3 state) beg (point))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1376 (setq state (parse-partial-sexp (point) end nil nil state 'syntax-table))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1377 (put-text-property beg (point) 'face
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1378 (if string
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1379 font-lock-string-face
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1380 font-lock-comment-face)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1381 ;;
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1382 ;; Find each interesting place between here and `end'.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1383 (while (and (< (point) end)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1384 (progn
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1385 (setq state (parse-partial-sexp (point) end nil nil state
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1386 'syntax-table))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1387 (or (nth 3 state) (nth 4 state))))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1388 (setq string (nth 3 state) beg (nth 8 state))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1389 (setq state (parse-partial-sexp (point) end nil nil state 'syntax-table))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1390 (put-text-property beg (point) 'face
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1391 (if string
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1392 font-lock-string-face
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1393 font-lock-comment-face)))))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1394
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1395 ;;; End of Syntactic fontification functions.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1396
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1397 ;;; Keyword regexp fontification functions.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1398
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1399 (defsubst font-lock-apply-highlight (highlight)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1400 "Apply HIGHLIGHT following a match.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1401 HIGHLIGHT should be of the form MATCH-HIGHLIGHT, see `font-lock-keywords'."
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1402 (let* ((match (nth 0 highlight))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1403 (start (match-beginning match)) (end (match-end match))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1404 (override (nth 2 highlight)))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1405 (cond ((not start)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1406 ;; No match but we might not signal an error.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1407 (or (nth 3 highlight)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1408 (error "No match %d in highlight %S" match highlight)))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1409 ((not override)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1410 ;; Cannot override existing fontification.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1411 (or (text-property-not-all start end 'face nil)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1412 (put-text-property start end 'face (eval (nth 1 highlight)))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1413 ((eq override t)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1414 ;; Override existing fontification.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1415 (put-text-property start end 'face (eval (nth 1 highlight))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1416 ((eq override 'prepend)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1417 ;; Prepend to existing fontification.
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1418 (font-lock-prepend-text-property start end 'face (eval (nth 1 highlight))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1419 ((eq override 'append)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1420 ;; Append to existing fontification.
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1421 (font-lock-append-text-property start end 'face (eval (nth 1 highlight))))
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1422 ((eq override 'keep)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1423 ;; Keep existing fontification.
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1424 (font-lock-fillin-text-property start end 'face (eval (nth 1 highlight)))))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1425
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1426 (defsubst font-lock-fontify-anchored-keywords (keywords limit)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1427 "Fontify according to KEYWORDS until LIMIT.
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1428 KEYWORDS should be of the form MATCH-ANCHORED, see `font-lock-keywords',
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1429 LIMIT can be modified by the value of its PRE-MATCH-FORM."
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1430 (let ((matcher (nth 0 keywords)) (lowdarks (nthcdr 3 keywords)) highlights
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1431 ;; Evaluate PRE-MATCH-FORM.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1432 (pre-match-value (eval (nth 1 keywords))))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1433 ;; Set LIMIT to value of PRE-MATCH-FORM or the end of line.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1434 (if (and (numberp pre-match-value) (> pre-match-value (point)))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1435 (setq limit pre-match-value)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1436 (save-excursion (end-of-line) (setq limit (point))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1437 (save-match-data
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1438 ;; Find an occurrence of `matcher' before `limit'.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1439 (while (if (stringp matcher)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1440 (re-search-forward matcher limit t)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1441 (funcall matcher limit))
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1442 ;; Apply each highlight to this instance of `matcher'.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1443 (setq highlights lowdarks)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1444 (while highlights
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1445 (font-lock-apply-highlight (car highlights))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1446 (setq highlights (cdr highlights)))))
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1447 ;; Evaluate POST-MATCH-FORM.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1448 (eval (nth 2 keywords))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1449
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1450 (defun font-lock-fontify-keywords-region (start end &optional loudly)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1451 "Fontify according to `font-lock-keywords' between START and END.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1452 START should be at the beginning of a line."
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1453 (unless (eq (car font-lock-keywords) t)
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1454 (setq font-lock-keywords (font-lock-compile-keywords font-lock-keywords)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1455 (let ((case-fold-search font-lock-keywords-case-fold-search)
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1456 (keywords (cdr font-lock-keywords))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1457 (bufname (buffer-name)) (count 0)
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1458 keyword matcher highlights)
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1459 ;;
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1460 ;; Fontify each item in `font-lock-keywords' from `start' to `end'.
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1461 (while keywords
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1462 (if loudly (message "Fontifying %s... (regexps..%s)" bufname
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1463 (make-string (incf count) ?.)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1464 ;;
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1465 ;; Find an occurrence of `matcher' from `start' to `end'.
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1466 (setq keyword (car keywords) matcher (car keyword))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1467 (goto-char start)
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1468 (while (if (stringp matcher)
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1469 (re-search-forward matcher end t)
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1470 (funcall matcher end))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1471 ;; Apply each highlight to this instance of `matcher', which may be
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1472 ;; specific highlights or more keywords anchored to `matcher'.
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1473 (setq highlights (cdr keyword))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1474 (while highlights
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1475 (if (numberp (car (car highlights)))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1476 (font-lock-apply-highlight (car highlights))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1477 (font-lock-fontify-anchored-keywords (car highlights) end))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1478 (setq highlights (cdr highlights))))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1479 (setq keywords (cdr keywords)))))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1480
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1481 ;;; End of Keyword regexp fontification functions.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1482
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1483 ;; Various functions.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1484
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1485 (defun font-lock-compile-keywords (keywords)
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1486 ;; Compile KEYWORDS into the form (t KEYWORD ...) where KEYWORD is of the
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1487 ;; form (MATCHER HIGHLIGHT ...) as shown in `font-lock-keywords' doc string.
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1488 (if (eq (car-safe keywords) t)
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1489 keywords
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1490 (cons t (mapcar 'font-lock-compile-keyword keywords))))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1491
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1492 (defun font-lock-compile-keyword (keyword)
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1493 (cond ((nlistp keyword) ; MATCHER
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1494 (list keyword '(0 font-lock-keyword-face)))
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1495 ((eq (car keyword) 'eval) ; (eval . FORM)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1496 (font-lock-compile-keyword (eval (cdr keyword))))
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1497 ((eq (car-safe (cdr keyword)) 'quote) ; (MATCHER . 'FORM)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1498 ;; If FORM is a FACENAME then quote it. Otherwise ignore the quote.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1499 (if (symbolp (nth 2 keyword))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1500 (list (car keyword) (list 0 (cdr keyword)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1501 (font-lock-compile-keyword (cons (car keyword) (nth 2 keyword)))))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1502 ((numberp (cdr keyword)) ; (MATCHER . MATCH)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1503 (list (car keyword) (list (cdr keyword) 'font-lock-keyword-face)))
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1504 ((symbolp (cdr keyword)) ; (MATCHER . FACENAME)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1505 (list (car keyword) (list 0 (cdr keyword))))
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1506 ((nlistp (nth 1 keyword)) ; (MATCHER . HIGHLIGHT)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1507 (list (car keyword) (cdr keyword)))
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1508 (t ; (MATCHER HIGHLIGHT ...)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1509 keyword)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1510
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1511 (defun font-lock-eval-keywords (keywords)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1512 ;; Evalulate KEYWORDS if a function (funcall) or variable (eval) name.
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1513 (if (listp keywords)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1514 keywords
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1515 (font-lock-eval-keywords (if (fboundp keywords)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1516 (funcall keywords)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1517 (eval keywords)))))
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1518
14708
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1519 (defun font-lock-value-in-major-mode (alist)
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1520 ;; Return value in ALIST for `major-mode', or ALIST if it is not an alist.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1521 ;; Structure is ((MAJOR-MODE . VALUE) ...) where MAJOR-MODE may be t.
14708
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1522 (if (consp alist)
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1523 (cdr (or (assq major-mode alist) (assq t alist)))
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1524 alist))
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1525
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1526 (defun font-lock-choose-keywords (keywords level)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1527 ;; Return LEVELth element of KEYWORDS. A LEVEL of nil is equal to a
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1528 ;; LEVEL of 0, a LEVEL of t is equal to (1- (length KEYWORDS)).
14708
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1529 (cond ((symbolp keywords)
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1530 keywords)
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1531 ((numberp level)
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1532 (or (nth level keywords) (car (reverse keywords))))
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1533 ((eq level t)
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1534 (car (reverse keywords)))
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1535 (t
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1536 (car keywords))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1537
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1538 (defvar font-lock-set-defaults nil) ; Whether we have set up defaults.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1539
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1540 (defun font-lock-set-defaults ()
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1541 "Set fontification defaults appropriately for this mode.
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1542 Sets various variables using `font-lock-defaults' (or, if nil, using
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1543 `font-lock-defaults-alist') and `font-lock-maximum-decoration'."
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1544 ;; Set fontification defaults.
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1545 (make-local-variable 'font-lock-fontified)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1546 ;; Set iff not previously set.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1547 (unless font-lock-set-defaults
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1548 (set (make-local-variable 'font-lock-set-defaults) t)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1549 (set (make-local-variable 'font-lock-cache-state) nil)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1550 (set (make-local-variable 'font-lock-cache-position) (make-marker))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1551 (let* ((defaults (or font-lock-defaults
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1552 (cdr (assq major-mode font-lock-defaults-alist))))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1553 (keywords
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1554 (font-lock-choose-keywords (nth 0 defaults)
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1555 (font-lock-value-in-major-mode font-lock-maximum-decoration)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1556 (local (cdr (assq major-mode font-lock-keywords-alist))))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1557 ;; Regexp fontification?
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1558 (set (make-local-variable 'font-lock-keywords)
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1559 (font-lock-compile-keywords (font-lock-eval-keywords keywords)))
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1560 ;; Local fontification?
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1561 (while local
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1562 (font-lock-add-keywords nil (car (car local)) (cdr (car local)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1563 (setq local (cdr local)))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1564 ;; Syntactic fontification?
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1565 (when (nth 1 defaults)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1566 (set (make-local-variable 'font-lock-keywords-only) t))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1567 ;; Case fold during regexp fontification?
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1568 (when (nth 2 defaults)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1569 (set (make-local-variable 'font-lock-keywords-case-fold-search) t))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1570 ;; Syntax table for regexp and syntactic fontification?
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1571 (when (nth 3 defaults)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1572 (let ((slist (nth 3 defaults)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1573 (set (make-local-variable 'font-lock-syntax-table)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1574 (copy-syntax-table (syntax-table)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1575 (while slist
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1576 ;; The character to modify may be a single CHAR or a STRING.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1577 (let ((chars (if (numberp (car (car slist)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1578 (list (car (car slist)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1579 (mapcar 'identity (car (car slist)))))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1580 (syntax (cdr (car slist))))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1581 (while chars
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1582 (modify-syntax-entry (car chars) syntax
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1583 font-lock-syntax-table)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1584 (setq chars (cdr chars)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1585 (setq slist (cdr slist))))))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1586 ;; Syntax function for syntactic fontification?
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1587 (when (nth 4 defaults)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1588 (set (make-local-variable 'font-lock-beginning-of-syntax-function)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1589 (nth 4 defaults)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1590 ;; Variable alist?
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1591 (let ((alist (nthcdr 5 defaults)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1592 (while alist
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1593 (let ((variable (car (car alist))) (value (cdr (car alist))))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1594 (unless (boundp variable)
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1595 (set variable nil))
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1596 (set (make-local-variable variable) value)
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1597 (setq alist (cdr alist))))))))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1598
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1599 (defun font-lock-unset-defaults ()
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1600 "Unset fontification defaults. See `font-lock-set-defaults'."
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1601 (setq font-lock-set-defaults nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1602 font-lock-keywords nil
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1603 font-lock-keywords-only nil
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1604 font-lock-keywords-case-fold-search nil
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1605 font-lock-syntax-table nil
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1606 font-lock-beginning-of-syntax-function nil)
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1607 (let* ((defaults (or font-lock-defaults
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1608 (cdr (assq major-mode font-lock-defaults-alist))))
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1609 (alist (nthcdr 5 defaults)))
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1610 (while alist
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1611 (set (car (car alist)) (default-value (car (car alist))))
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1612 (setq alist (cdr alist)))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1613
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1614 ;;; Colour etc. support.
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1615
19846
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1616 ;; Originally these variable values were face names such as `bold' etc.
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1617 ;; Now we create our own faces, but we keep these variables for compatibility
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1618 ;; and they give users another mechanism for changing face appearance.
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1619 ;; We now allow a FACENAME in `font-lock-keywords' to be any expression that
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1620 ;; returns a face. So the easiest thing is to continue using these variables,
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1621 ;; rather than sometimes evaling FACENAME and sometimes not. sm.
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1622 (defvar font-lock-comment-face 'font-lock-comment-face
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1623 "Face name to use for comments.")
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1624
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1625 (defvar font-lock-string-face 'font-lock-string-face
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1626 "Face name to use for strings.")
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1627
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1628 (defvar font-lock-keyword-face 'font-lock-keyword-face
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1629 "Face name to use for keywords.")
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1630
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1631 (defvar font-lock-builtin-face 'font-lock-builtin-face
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1632 "Face name to use for builtins.")
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1633
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1634 (defvar font-lock-function-name-face 'font-lock-function-name-face
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1635 "Face name to use for function names.")
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1636
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1637 (defvar font-lock-variable-name-face 'font-lock-variable-name-face
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1638 "Face name to use for variable names.")
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1639
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1640 (defvar font-lock-type-face 'font-lock-type-face
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1641 "Face name to use for type and class names.")
19846
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1642
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1643 (defvar font-lock-constant-face 'font-lock-constant-face
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1644 "Face name to use for constant and label names.")
19846
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1645
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1646 (defvar font-lock-warning-face 'font-lock-warning-face
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
1647 "Face name to use for things that should stand out.")
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1648
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1649 (defvar font-lock-reference-face 'font-lock-constant-face
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1650 "This variable is obsolete. Use font-lock-constant-face.")
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1651
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1652 ;; Originally face attributes were specified via `font-lock-face-attributes'.
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
1653 ;; Users then changed the default face attributes by setting that variable.
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1654 ;; However, we try and be back-compatible and respect its value if set except
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1655 ;; for faces where M-x customize has been used to save changes for the face.
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1656 (when (boundp 'font-lock-face-attributes)
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1657 (let ((face-attributes font-lock-face-attributes))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1658 (while face-attributes
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1659 (let* ((face-attribute (pop face-attributes))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1660 (face (car face-attribute)))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1661 ;; Rustle up a `defface' SPEC from a `font-lock-face-attributes' entry.
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1662 (unless (get face 'saved-face)
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1663 (let ((foreground (nth 1 face-attribute))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1664 (background (nth 2 face-attribute))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1665 (bold-p (nth 3 face-attribute))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1666 (italic-p (nth 4 face-attribute))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1667 (underline-p (nth 5 face-attribute))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1668 face-spec)
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1669 (when foreground
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1670 (setq face-spec (cons ':foreground (cons foreground face-spec))))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1671 (when background
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1672 (setq face-spec (cons ':background (cons background face-spec))))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1673 (when bold-p
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1674 (setq face-spec (append '(:bold t) face-spec)))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1675 (when italic-p
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1676 (setq face-spec (append '(:italic t) face-spec)))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1677 (when underline-p
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1678 (setq face-spec (append '(:underline t) face-spec)))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1679 (custom-declare-face face (list (list t face-spec)) nil)))))))
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1680
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1681 ;; But now we do it the custom way. Note that `defface' will not overwrite any
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1682 ;; faces declared above via `custom-declare-face'.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1683 (defface font-lock-comment-face
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1684 '((((class grayscale) (background light))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1685 (:foreground "DimGray" :bold t :italic t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1686 (((class grayscale) (background dark))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1687 (:foreground "LightGray" :bold t :italic t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1688 (((class color) (background light)) (:foreground "Firebrick"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1689 (((class color) (background dark)) (:foreground "OrangeRed"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1690 (t (:bold t :italic t)))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1691 "Font Lock mode face used to highlight comments."
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1692 :group 'font-lock-highlighting-faces)
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1693
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1694 (defface font-lock-string-face
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1695 '((((class grayscale) (background light)) (:foreground "DimGray" :italic t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1696 (((class grayscale) (background dark)) (:foreground "LightGray" :italic t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1697 (((class color) (background light)) (:foreground "RosyBrown"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1698 (((class color) (background dark)) (:foreground "LightSalmon"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1699 (t (:italic t)))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1700 "Font Lock mode face used to highlight strings."
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1701 :group 'font-lock-highlighting-faces)
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1702
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1703 (defface font-lock-keyword-face
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1704 '((((class grayscale) (background light)) (:foreground "LightGray" :bold t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1705 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1706 (((class color) (background light)) (:foreground "Purple"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1707 (((class color) (background dark)) (:foreground "Cyan"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1708 (t (:bold t)))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1709 "Font Lock mode face used to highlight keywords."
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1710 :group 'font-lock-highlighting-faces)
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1711
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1712 (defface font-lock-builtin-face
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1713 '((((class grayscale) (background light)) (:foreground "LightGray" :bold t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1714 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1715 (((class color) (background light)) (:foreground "Orchid"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1716 (((class color) (background dark)) (:foreground "LightSteelBlue"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1717 (t (:bold t)))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1718 "Font Lock mode face used to highlight builtins."
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1719 :group 'font-lock-highlighting-faces)
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1720
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1721 (defface font-lock-function-name-face
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1722 '((((class color) (background light)) (:foreground "Blue"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1723 (((class color) (background dark)) (:foreground "LightSkyBlue"))
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1724 (t (:inverse-video t :bold t)))
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1725 "Font Lock mode face used to highlight function names."
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1726 :group 'font-lock-highlighting-faces)
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1727
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1728 (defface font-lock-variable-name-face
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1729 '((((class grayscale) (background light))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1730 (:foreground "Gray90" :bold t :italic t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1731 (((class grayscale) (background dark))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1732 (:foreground "DimGray" :bold t :italic t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1733 (((class color) (background light)) (:foreground "DarkGoldenrod"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1734 (((class color) (background dark)) (:foreground "LightGoldenrod"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1735 (t (:bold t :italic t)))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1736 "Font Lock mode face used to highlight variable names."
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1737 :group 'font-lock-highlighting-faces)
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1738
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1739 (defface font-lock-type-face
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1740 '((((class grayscale) (background light)) (:foreground "Gray90" :bold t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1741 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t))
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1742 (((class color) (background light)) (:foreground "ForestGreen"))
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1743 (((class color) (background dark)) (:foreground "PaleGreen"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1744 (t (:bold t :underline t)))
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1745 "Font Lock mode face used to highlight type and classes."
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1746 :group 'font-lock-highlighting-faces)
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1747
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1748 (defface font-lock-constant-face
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1749 '((((class grayscale) (background light))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1750 (:foreground "LightGray" :bold t :underline t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1751 (((class grayscale) (background dark))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1752 (:foreground "Gray50" :bold t :underline t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1753 (((class color) (background light)) (:foreground "CadetBlue"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1754 (((class color) (background dark)) (:foreground "Aquamarine"))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1755 (t (:bold t :underline t)))
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1756 "Font Lock mode face used to highlight constants and labels."
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1757 :group 'font-lock-highlighting-faces)
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1758
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1759 (defface font-lock-warning-face
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1760 '((((class color) (background light)) (:foreground "Red" :bold t))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1761 (((class color) (background dark)) (:foreground "Pink" :bold t))
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1762 (t (:inverse-video t :bold t)))
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1763 "Font Lock mode face used to highlight warnings."
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
1764 :group 'font-lock-highlighting-faces)
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1765
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1766 ;;; End of Colour etc. support.
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1767
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1768 ;;; Menu support.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1769
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1770 ;; This section of code is commented out because Emacs does not have real menu
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1771 ;; buttons. (We can mimic them by putting "( ) " or "(X) " at the beginning of
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1772 ;; the menu entry text, but with Xt it looks both ugly and embarrassingly
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1773 ;; amateur.) If/When Emacs gets real menus buttons, put in menu-bar.el after
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1774 ;; the entry for "Text Properties" something like:
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1775 ;;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1776 ;; (define-key menu-bar-edit-menu [font-lock]
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
1777 ;; (cons "Syntax Highlighting" font-lock-menu))
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1778 ;;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1779 ;; and remove a single ";" from the beginning of each line in the rest of this
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1780 ;; section. Probably the mechanism for telling the menu code what are menu
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1781 ;; buttons and when they are on or off needs tweaking. I have assumed that the
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1782 ;; mechanism is via `menu-toggle' and `menu-selected' symbol properties. sm.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1783
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1784 ;;;;###autoload
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1785 ;(progn
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1786 ; ;; Make the Font Lock menu.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1787 ; (defvar font-lock-menu (make-sparse-keymap "Syntax Highlighting"))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1788 ; ;; Add the menu items in reverse order.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1789 ; (define-key font-lock-menu [fontify-less]
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1790 ; '("Less In Current Buffer" . font-lock-fontify-less))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1791 ; (define-key font-lock-menu [fontify-more]
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1792 ; '("More In Current Buffer" . font-lock-fontify-more))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1793 ; (define-key font-lock-menu [font-lock-sep]
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1794 ; '("--"))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1795 ; (define-key font-lock-menu [font-lock-mode]
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1796 ; '("In Current Buffer" . font-lock-mode))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1797 ; (define-key font-lock-menu [global-font-lock-mode]
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1798 ; '("In All Buffers" . global-font-lock-mode)))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1799 ;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1800 ;;;;###autoload
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1801 ;(progn
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1802 ; ;; We put the appropriate `menu-enable' etc. symbol property values on when
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1803 ; ;; font-lock.el is loaded, so we don't need to autoload the three variables.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1804 ; (put 'global-font-lock-mode 'menu-toggle t)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1805 ; (put 'font-lock-mode 'menu-toggle t)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1806 ; (put 'font-lock-fontify-more 'menu-enable '(identity))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1807 ; (put 'font-lock-fontify-less 'menu-enable '(identity)))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1808 ;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1809 ;;; Put the appropriate symbol property values on now. See above.
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
1810 ;(put 'global-font-lock-mode 'menu-selected 'global-font-lock-mode)
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1811 ;(put 'font-lock-mode 'menu-selected 'font-lock-mode)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1812 ;(put 'font-lock-fontify-more 'menu-enable '(nth 2 font-lock-fontify-level))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1813 ;(put 'font-lock-fontify-less 'menu-enable '(nth 1 font-lock-fontify-level))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1814 ;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1815 ;(defvar font-lock-fontify-level nil) ; For less/more fontification.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1816 ;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1817 ;(defun font-lock-fontify-level (level)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1818 ; (let ((font-lock-maximum-decoration level))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1819 ; (when font-lock-mode
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1820 ; (font-lock-mode))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1821 ; (font-lock-mode)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1822 ; (when font-lock-verbose
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1823 ; (message "Fontifying %s... level %d" (buffer-name) level))))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1824 ;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1825 ;(defun font-lock-fontify-less ()
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1826 ; "Fontify the current buffer with less decoration.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1827 ;See `font-lock-maximum-decoration'."
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1828 ; (interactive)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1829 ; ;; Check in case we get called interactively.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1830 ; (if (nth 1 font-lock-fontify-level)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1831 ; (font-lock-fontify-level (1- (car font-lock-fontify-level)))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1832 ; (error "No less decoration")))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1833 ;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1834 ;(defun font-lock-fontify-more ()
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1835 ; "Fontify the current buffer with more decoration.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1836 ;See `font-lock-maximum-decoration'."
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1837 ; (interactive)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1838 ; ;; Check in case we get called interactively.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1839 ; (if (nth 2 font-lock-fontify-level)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1840 ; (font-lock-fontify-level (1+ (car font-lock-fontify-level)))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1841 ; (error "No more decoration")))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1842 ;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1843 ;;; This should be called by `font-lock-set-defaults'.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1844 ;(defun font-lock-set-menu ()
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1845 ; ;; Activate less/more fontification entries if there are multiple levels for
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1846 ; ;; the current buffer. Sets `font-lock-fontify-level' to be of the form
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1847 ; ;; (CURRENT-LEVEL IS-LOWER-LEVEL-P IS-HIGHER-LEVEL-P) for menu activation.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1848 ; (let ((keywords (or (nth 0 font-lock-defaults)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1849 ; (nth 1 (assq major-mode font-lock-defaults-alist))))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1850 ; (level (font-lock-value-in-major-mode font-lock-maximum-decoration)))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1851 ; (make-local-variable 'font-lock-fontify-level)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1852 ; (if (or (symbolp keywords) (= (length keywords) 1))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1853 ; (font-lock-unset-menu)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1854 ; (cond ((eq level t)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1855 ; (setq level (1- (length keywords))))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1856 ; ((or (null level) (zerop level))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1857 ; ;; The default level is usually, but not necessarily, level 1.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1858 ; (setq level (- (length keywords)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1859 ; (length (member (eval (car keywords))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1860 ; (mapcar 'eval (cdr keywords))))))))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1861 ; (setq font-lock-fontify-level (list level (> level 1)
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1862 ; (< level (1- (length keywords))))))))
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1863 ;
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1864 ;;; This should be called by `font-lock-unset-defaults'.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1865 ;(defun font-lock-unset-menu ()
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1866 ; ;; Deactivate less/more fontification entries.
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1867 ; (setq font-lock-fontify-level nil))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1868
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1869 ;;; End of Menu support.
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1870
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1871 ;;; Various regexp information shared by several modes.
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1872 ;;; Information specific to a single mode should go in its load library.
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1873
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1874 ;; Font Lock support for C, C++, Objective-C and Java modes will one day be in
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1875 ;; some cc-font.el (and required by cc-mode.el). However, the below function
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1876 ;; should stay in font-lock.el, since it is used by other libraries. sm.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1877
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1878 (defun font-lock-match-c-style-declaration-item-and-skip-to-next (limit)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1879 "Match, and move over, any declaration/definition item after point.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1880 Matches after point, but ignores leading whitespace and `*' characters.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1881 Does not move further than LIMIT.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1882
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1883 The expected syntax of a declaration/definition item is `word' (preceded by
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1884 optional whitespace and `*' characters and proceeded by optional whitespace)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1885 optionally followed by a `('. Everything following the item (but belonging to
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1886 it) is expected to by skip-able by `scan-sexps', and items are expected to be
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1887 separated with a `,' and to be terminated with a `;'.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1888
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1889 Thus the regexp matches after point: word (
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1890 ^^^^ ^
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1891 Where the match subexpressions are: 1 2
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1892
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1893 The item is delimited by (match-beginning 1) and (match-end 1).
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1894 If (match-beginning 2) is non-nil, the item is followed by a `('.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1895
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1896 This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item."
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1897 (when (looking-at "[ \t*]*\\(\\sw+\\)[ \t]*\\((\\)?")
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1898 (save-match-data
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1899 (condition-case nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1900 (save-restriction
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1901 ;; Restrict to the end of line, currently guaranteed to be LIMIT.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1902 (narrow-to-region (point-min) limit)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1903 (goto-char (match-end 1))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1904 ;; Move over any item value, etc., to the next item.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1905 (while (not (looking-at "[ \t]*\\(\\(,\\)\\|;\\|$\\)"))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1906 (goto-char (or (scan-sexps (point) 1) (point-max))))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1907 (goto-char (match-end 2)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1908 (error t)))))
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1909
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1910 ;; Lisp.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1911
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1912 (defconst lisp-font-lock-keywords-1
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1913 (eval-when-compile
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1914 (list
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1915 ;;
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1916 ;; Definitions.
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1917 (list (concat "(\\(def\\("
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1918 ;; Function declarations.
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
1919 "\\(advice\\|alias\\|generic\\|macro\\*?\\|method\\|"
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
1920 "setf\\|subst\\*?\\|un\\*?\\|"
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
1921 "ine-\\(derived-mode\\|function\\|"
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
1922 "skeleton\\|widget\\)\\)\\|"
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1923 ;; Variable declarations.
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1924 "\\(const\\|custom\\|face\\|var\\)\\|"
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1925 ;; Structure declarations.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1926 "\\(class\\|group\\|struct\\|type\\)"
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1927 "\\)\\)\\>"
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1928 ;; Any whitespace and defined object.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1929 "[ \t'\(]*"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1930 "\\(\\sw+\\)?")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1931 '(1 font-lock-keyword-face)
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1932 '(7 (cond ((match-beginning 3) font-lock-function-name-face)
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1933 ((match-beginning 5) font-lock-variable-name-face)
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
1934 (t font-lock-type-face))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1935 nil t))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1936 ;;
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1937 ;; Emacs Lisp autoload cookies.
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1938 '("^;;;###\\(autoload\\)\\>" 1 font-lock-warning-face prepend)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1939 ))
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
1940 "Subdued level highlighting for Lisp modes.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1941
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1942 (defconst lisp-font-lock-keywords-2
10879
73ce8261c2ce Added font-lock-maximum-decoration; use it to set lisp-font-lock-keywords, and
Simon Marshall <simon@gnu.org>
parents: 10545
diff changeset
1943 (append lisp-font-lock-keywords-1
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1944 (eval-when-compile
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1945 (list
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1946 ;;
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1947 ;; Control structures. Emacs Lisp forms.
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1948 (cons (concat
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1949 "(" (regexp-opt
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1950 '("cond" "if" "while" "catch" "throw" "let" "let*"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1951 "prog" "progn" "progv" "prog1" "prog2" "prog*"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1952 "inline" "save-restriction" "save-excursion"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1953 "save-window-excursion" "save-selected-window"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1954 "save-match-data" "save-current-buffer" "unwind-protect"
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
1955 "condition-case" "track-mouse"
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1956 "eval-after-load" "eval-and-compile" "eval-when-compile"
20190
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
1957 "eval-when"
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
1958 "with-current-buffer" "with-electric-help"
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
1959 "with-output-to-string" "with-output-to-temp-buffer"
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
1960 "with-temp-buffer" "with-temp-file"
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
1961 "with-timeout") t)
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1962 "\\>")
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1963 1)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1964 ;;
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1965 ;; Control structures. Common Lisp forms.
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1966 (cons (concat
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1967 "(" (regexp-opt
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1968 '("when" "unless" "case" "ecase" "typecase" "etypecase"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1969 "loop" "do" "do*" "dotimes" "dolist"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1970 "proclaim" "declaim" "declare"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1971 "lexical-let" "lexical-let*" "flet" "labels"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1972 "return" "return-from") t)
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
1973 "\\>")
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1974 1)
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
1975 ;;
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1976 ;; Feature symbols as constants.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1977 '("(\\(featurep\\|provide\\|require\\)\\>[ \t']*\\(\\sw+\\)?"
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1978 (1 font-lock-keyword-face) (2 font-lock-constant-face nil t))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1979 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1980 ;; Words inside \\[] tend to be for `substitute-command-keys'.
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1981 '("\\\\\\\\\\[\\(\\sw+\\)]" 1 font-lock-constant-face prepend)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1982 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1983 ;; Words inside `' tend to be symbol names.
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
1984 '("`\\(\\sw\\sw+\\)'" 1 font-lock-constant-face prepend)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1985 ;;
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
1986 ;; Constant values.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1987 '("\\<:\\sw\\sw+\\>" 0 font-lock-builtin-face)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1988 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1989 ;; ELisp and CLisp `&' keywords as types.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1990 '("\\<\\&\\sw+\\>" . font-lock-type-face)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1991 )))
12385
c80966dc0b60 Specify in font-lock-defaults/font-lock-defaults-alist which keywords we can
Simon Marshall <simon@gnu.org>
parents: 12268
diff changeset
1992 "Gaudy level highlighting for Lisp modes.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1993
12385
c80966dc0b60 Specify in font-lock-defaults/font-lock-defaults-alist which keywords we can
Simon Marshall <simon@gnu.org>
parents: 12268
diff changeset
1994 (defvar lisp-font-lock-keywords lisp-font-lock-keywords-1
c80966dc0b60 Specify in font-lock-defaults/font-lock-defaults-alist which keywords we can
Simon Marshall <simon@gnu.org>
parents: 12268
diff changeset
1995 "Default expressions to highlight in Lisp modes.")
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1996
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1997 ;; Scheme.
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1998
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
1999 (defconst scheme-font-lock-keywords-1
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2000 (eval-when-compile
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2001 (list
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2002 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2003 ;; Declarations. Hannes Haug <hannes.haug@student.uni-tuebingen.de> says
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2004 ;; this works for SOS, STklos, SCOOPS, Meroon and Tiny CLOS.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2005 (list (concat "(\\(define\\("
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2006 ;; Function names.
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
2007 "\\(\\|-method\\|-generic\\(-procedure\\)?\\)\\|"
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2008 ;; Macro names, as variable names. A bit dubious, this.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2009 "\\(-syntax\\)\\|"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2010 ;; Class names.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2011 "-class"
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2012 "\\)\\)\\>"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2013 ;; Any whitespace and declared object.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2014 "[ \t]*(?"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2015 "\\(\\sw+\\)?")
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2016 '(1 font-lock-keyword-face)
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
2017 '(6 (cond ((match-beginning 3) font-lock-function-name-face)
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
2018 ((match-beginning 5) font-lock-variable-name-face)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2019 (t font-lock-type-face))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2020 nil t))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2021 ))
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2022 "Subdued expressions to highlight in Scheme modes.")
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
2023
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2024 (defconst scheme-font-lock-keywords-2
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2025 (append scheme-font-lock-keywords-1
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2026 (eval-when-compile
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2027 (list
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2028 ;;
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2029 ;; Control structures.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2030 (cons
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2031 (concat
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2032 "(" (regexp-opt
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2033 '("begin" "call-with-current-continuation" "call/cc"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2034 "call-with-input-file" "call-with-output-file" "case" "cond"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2035 "do" "else" "for-each" "if" "lambda"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2036 "let" "let*" "let-syntax" "letrec" "letrec-syntax"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2037 ;; Hannes Haug <hannes.haug@student.uni-tuebingen.de> wants:
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2038 "and" "or" "delay"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2039 ;; Stefan Monnier <stefan.monnier@epfl.ch> says don't bother:
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2040 ;;"quasiquote" "quote" "unquote" "unquote-splicing"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2041 "map" "syntax" "syntax-rules") t)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2042 "\\>") 1)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2043 ;;
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2044 ;; David Fox <fox@graphics.cs.nyu.edu> for SOS/STklos class specifiers.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2045 '("\\<<\\sw+>\\>" . font-lock-type-face)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2046 ;;
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
2047 ;; Scheme `:' keywords as builtins.
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
2048 '("\\<:\\sw+\\>" . font-lock-builtin-face)
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2049 )))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2050 "Gaudy expressions to highlight in Scheme modes.")
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
2051
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2052 (defvar scheme-font-lock-keywords scheme-font-lock-keywords-1
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2053 "Default expressions to highlight in Scheme modes.")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2054
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2055 ;; TeX.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2056
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2057 ;(defvar tex-font-lock-keywords
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2058 ; ;; Regexps updated with help from Ulrik Dickow <dickow@nbi.dk>.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2059 ; '(("\\\\\\(begin\\|end\\|newcommand\\){\\([a-zA-Z0-9\\*]+\\)}"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2060 ; 2 font-lock-function-name-face)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2061 ; ("\\\\\\(cite\\|label\\|pageref\\|ref\\){\\([^} \t\n]+\\)}"
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2062 ; 2 font-lock-constant-face)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2063 ; ;; It seems a bit dubious to use `bold' and `italic' faces since we might
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2064 ; ;; not be able to display those fonts.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2065 ; ("{\\\\bf\\([^}]+\\)}" 1 'bold keep)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2066 ; ("{\\\\\\(em\\|it\\|sl\\)\\([^}]+\\)}" 2 'italic keep)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2067 ; ("\\\\\\([a-zA-Z@]+\\|.\\)" . font-lock-keyword-face)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2068 ; ("^[ \t\n]*\\\\def[\\\\@]\\(\\w+\\)" 1 font-lock-function-name-face keep))
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2069 ; ;; Rewritten and extended for LaTeX2e by Ulrik Dickow <dickow@nbi.dk>.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2070 ; '(("\\\\\\(begin\\|end\\|newcommand\\){\\([a-zA-Z0-9\\*]+\\)}"
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2071 ; 2 font-lock-function-name-face)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2072 ; ("\\\\\\(cite\\|label\\|pageref\\|ref\\){\\([^} \t\n]+\\)}"
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2073 ; 2 font-lock-constant-face)
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2074 ; ("^[ \t]*\\\\def\\\\\\(\\(\\w\\|@\\)+\\)" 1 font-lock-function-name-face)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2075 ; "\\\\\\([a-zA-Z@]+\\|.\\)"
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2076 ; ;; It seems a bit dubious to use `bold' and `italic' faces since we might
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2077 ; ;; not be able to display those fonts.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2078 ; ;; LaTeX2e: \emph{This is emphasized}.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2079 ; ("\\\\emph{\\([^}]+\\)}" 1 'italic keep)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2080 ; ;; LaTeX2e: \textbf{This is bold}, \textit{...}, \textsl{...}
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2081 ; ("\\\\text\\(\\(bf\\)\\|it\\|sl\\){\\([^}]+\\)}"
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2082 ; 3 (if (match-beginning 2) 'bold 'italic) keep)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2083 ; ;; Old-style bf/em/it/sl. Stop at `\\' and un-escaped `&', for tables.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2084 ; ("\\\\\\(\\(bf\\)\\|em\\|it\\|sl\\)\\>\\(\\([^}&\\]\\|\\\\[^\\]\\)+\\)"
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2085 ; 3 (if (match-beginning 2) 'bold 'italic) keep))
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2086
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2087 ;; Rewritten with the help of Alexandra Bac <abac@welcome.disi.unige.it>.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2088 (defconst tex-font-lock-keywords-1
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2089 (eval-when-compile
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2090 (let* (;;
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2091 ;; Names of commands whose arg should be fontified as heading, etc.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2092 (headings (regexp-opt '("title" "begin" "end") t))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2093 ;; These commands have optional args.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2094 (headings-opt (regexp-opt
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2095 '("chapter" "part"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2096 "section" "subsection" "subsubsection"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2097 "section*" "subsection*" "subsubsection*"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2098 "paragraph" "subparagraph" "subsubparagraph"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2099 "paragraph*" "subparagraph*" "subsubparagraph*"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2100 "newcommand" "renewcommand" "newenvironment"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2101 "newtheorem"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2102 "newcommand*" "renewcommand*" "newenvironment*"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2103 "newtheorem*")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2104 t))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2105 (variables (regexp-opt
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2106 '("newcounter" "newcounter*" "setcounter" "addtocounter"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2107 "setlength" "addtolength" "settowidth")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2108 t))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2109 (includes (regexp-opt
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2110 '("input" "include" "includeonly" "bibliography"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2111 "epsfig" "psfig" "epsf")
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2112 t))
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2113 (includes-opt (regexp-opt
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2114 '("nofiles" "usepackage"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2115 "includegraphics" "includegraphics*")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2116 t))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2117 ;; Miscellany.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2118 (slash "\\\\")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2119 (opt "\\(\\[[^]]*\\]\\)?")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2120 (arg "{\\([^}]+\\)")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2121 (opt-depth (regexp-opt-depth opt))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2122 (arg-depth (regexp-opt-depth arg))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2123 )
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2124 (list
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2125 ;;
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2126 ;; Heading args.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2127 (list (concat slash headings arg)
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2128 (+ (regexp-opt-depth headings) arg-depth)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2129 'font-lock-function-name-face)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2130 (list (concat slash headings-opt opt arg)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2131 (+ (regexp-opt-depth headings-opt) opt-depth arg-depth)
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2132 'font-lock-function-name-face)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2133 ;;
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2134 ;; Variable args.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2135 (list (concat slash variables arg)
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2136 (+ (regexp-opt-depth variables) arg-depth)
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2137 'font-lock-variable-name-face)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2138 ;;
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2139 ;; Include args.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2140 (list (concat slash includes arg)
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2141 (+ (regexp-opt-depth includes) arg-depth)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2142 'font-lock-builtin-face)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2143 (list (concat slash includes-opt opt arg)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2144 (+ (regexp-opt-depth includes-opt) opt-depth arg-depth)
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2145 'font-lock-builtin-face)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2146 ;;
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2147 ;; Definitions. I think.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2148 '("^[ \t]*\\\\def\\\\\\(\\(\\w\\|@\\)+\\)"
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2149 1 font-lock-function-name-face)
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2150 )))
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2151 "Subdued expressions to highlight in TeX modes.")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2152
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2153 (defconst tex-font-lock-keywords-2
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2154 (append tex-font-lock-keywords-1
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2155 (eval-when-compile
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2156 (let* (;;
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2157 ;; Names of commands whose arg should be fontified with fonts.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2158 (bold (regexp-opt '("bf" "textbf" "textsc" "textup"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2159 "boldsymbol" "pmb") t))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2160 (italic (regexp-opt '("it" "textit" "textsl" "emph") t))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2161 (type (regexp-opt '("texttt" "textmd" "textrm" "textsf") t))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2162 ;;
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2163 ;; Names of commands whose arg should be fontified as a citation.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2164 (citations (regexp-opt
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2165 '("label" "ref" "pageref" "vref" "eqref")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2166 t))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2167 (citations-opt (regexp-opt
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2168 '("cite" "caption" "index" "glossary"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2169 "footnote" "footnotemark" "footnotetext")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2170 t))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2171 ;;
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2172 ;; Names of commands that should be fontified.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2173 (specials (regexp-opt
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2174 '("\\"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2175 "linebreak" "nolinebreak" "pagebreak" "nopagebreak"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2176 "newline" "newpage" "clearpage" "cleardoublepage"
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2177 "displaybreak" "allowdisplaybreaks" "enlargethispage")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2178 t))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2179 (general "\\([a-zA-Z@]+\\**\\|[^ \t\n]\\)")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2180 ;;
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2181 ;; Miscellany.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2182 (slash "\\\\")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2183 (opt "\\(\\[[^]]*\\]\\)?")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2184 (arg "{\\([^}]+\\)")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2185 (opt-depth (regexp-opt-depth opt))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2186 (arg-depth (regexp-opt-depth arg))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2187 )
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2188 (list
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2189 ;;
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2190 ;; Citation args.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2191 (list (concat slash citations arg)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2192 (+ (regexp-opt-depth citations) arg-depth)
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2193 'font-lock-constant-face)
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2194 (list (concat slash citations-opt opt arg)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2195 (+ (regexp-opt-depth citations-opt) opt-depth arg-depth)
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2196 'font-lock-constant-face)
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2197 ;;
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2198 ;; Command names, special and general.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2199 (cons (concat slash specials) 'font-lock-warning-face)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2200 (concat slash general)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2201 ;;
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2202 ;; Font environments. It seems a bit dubious to use `bold' etc. faces
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2203 ;; since we might not be able to display those fonts.
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2204 (list (concat slash bold arg)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2205 (+ (regexp-opt-depth bold) arg-depth)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2206 '(quote bold) 'keep)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2207 (list (concat slash italic arg)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2208 (+ (regexp-opt-depth italic) arg-depth)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2209 '(quote italic) 'keep)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2210 (list (concat slash type arg)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2211 (+ (regexp-opt-depth type) arg-depth)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2212 '(quote bold-italic) 'keep)
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2213 ;;
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2214 ;; Old-style bf/em/it/sl. Stop at `\\' and un-escaped `&', for tables.
19935
e7e61f0cc9f4 Don't fontify \item like \it.
Simon Marshall <simon@gnu.org>
parents: 19846
diff changeset
2215 (list (concat "\\\\\\(\\(bf\\)\\|em\\|it\\|sl\\)\\>"
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2216 "\\(\\([^}&\\]\\|\\\\[^\\]\\)+\\)")
19935
e7e61f0cc9f4 Don't fontify \item like \it.
Simon Marshall <simon@gnu.org>
parents: 19846
diff changeset
2217 3 '(if (match-beginning 2) 'bold 'italic) 'keep)
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2218 ))))
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2219 "Gaudy expressions to highlight in TeX modes.")
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2220
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2221 (defvar tex-font-lock-keywords tex-font-lock-keywords-1
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2222 "Default expressions to highlight in TeX modes.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2223
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2224 ;;; User choices.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2225
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2226 ;; These provide a means to fontify types not defined by the language. Those
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2227 ;; types might be the user's own or they might be generally accepted and used.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2228 ;; Generally accepted types are used to provide default variable values.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2229
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2230 (define-widget 'font-lock-extra-types-widget 'radio
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2231 "Widget `:type' for members of the custom group `font-lock-extra-types'.
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2232 Members should `:load' the package `font-lock' to use this widget."
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2233 :args '((const :tag "none" nil)
18463
4f630b3e8f43 split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents: 18332
diff changeset
2234 (repeat :tag "types" regexp)))
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2235
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2236 (defcustom c-font-lock-extra-types '("FILE" "\\sw+_t")
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2237 "*List of extra types to fontify in C mode.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2238 Each list item should be a regexp not containing word-delimiters.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2239 For example, a value of (\"FILE\" \"\\\\sw+_t\") means the word FILE and words
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2240 ending in _t are treated as type names.
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2241
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2242 The value of this variable is used when Font Lock mode is turned on."
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2243 :type 'font-lock-extra-types-widget
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2244 :group 'font-lock-extra-types)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2245
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2246 (defcustom c++-font-lock-extra-types
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
2247 '("\\([iof]\\|str\\)+stream\\(buf\\)?" "ios"
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2248 "string" "rope"
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2249 "list" "slist"
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2250 "deque" "vector" "bit_vector"
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2251 "set" "multiset"
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2252 "map" "multimap"
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2253 "hash\\(_\\(m\\(ap\\|ulti\\(map\\|set\\)\\)\\|set\\)\\)?"
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2254 "stack" "queue" "priority_queue"
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2255 "iterator" "const_iterator" "reverse_iterator" "const_reverse_iterator")
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2256 "*List of extra types to fontify in C++ mode.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2257 Each list item should be a regexp not containing word-delimiters.
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2258 For example, a value of (\"string\") means the word string is treated as a type
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2259 name.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2260
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2261 The value of this variable is used when Font Lock mode is turned on."
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2262 :type 'font-lock-extra-types-widget
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2263 :group 'font-lock-extra-types)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2264
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2265 (defcustom objc-font-lock-extra-types '("Class" "BOOL" "IMP" "SEL")
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2266 "*List of extra types to fontify in Objective-C mode.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2267 Each list item should be a regexp not containing word-delimiters.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2268 For example, a value of (\"Class\" \"BOOL\" \"IMP\" \"SEL\") means the words
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2269 Class, BOOL, IMP and SEL are treated as type names.
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2270
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2271 The value of this variable is used when Font Lock mode is turned on."
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2272 :type 'font-lock-extra-types-widget
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2273 :group 'font-lock-extra-types)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2274
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2275 (defcustom java-font-lock-extra-types '("[A-Z\300-\326\330-\337]\\sw+")
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2276 "*List of extra types to fontify in Java mode.
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2277 Each list item should be a regexp not containing word-delimiters.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2278 For example, a value of (\"[A-Z\300-\326\330-\337]\\\\sw+\") means capitalised
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2279 words (and words conforming to the Java id spec) are treated as type names.
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2280
17543
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2281 The value of this variable is used when Font Lock mode is turned on."
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2282 :type 'font-lock-extra-types-widget
9b75a01e03e5 Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents: 17507
diff changeset
2283 :group 'font-lock-extra-types)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2284
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2285 ;;; C.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2286
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2287 ;; [Murmur murmur murmur] Maestro, drum-roll please... [Murmur murmur murmur.]
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2288 ;; Ahem. [Murmur murmur murmur] Lay-dees an Gennel-men. [Murmur murmur shhh!]
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2289 ;; I am most proud and humbly honoured today [murmur murmur cough] to present
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2290 ;; to you good people, the winner of the Second Millennium Award for The Most
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2291 ;; Hairy Language Syntax. [Ahhh!] All rise please. [Shuffle shuffle
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2292 ;; shuffle.] And a round of applause please. For... The C Language! [Roar.]
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2293 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2294 ;; Thank you... You are too kind... It is with a feeling of great privilege
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2295 ;; and indeed emotion [sob] that I accept this award. It has been a long hard
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2296 ;; road. But we know our destiny. And our future. For we must not rest.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2297 ;; There are more tokens to overload, more shoehorn, more methodologies. But
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2298 ;; more is a plus! [Ha ha ha.] And more means plus! [Ho ho ho.] The future
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
2299 ;; is C++! [Ohhh!] The Third Millennium Award... Will be ours! [Roar.]
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2300
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2301 (defconst c-font-lock-keywords-1 nil
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2302 "Subdued level highlighting for C mode.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2303
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2304 (defconst c-font-lock-keywords-2 nil
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2305 "Medium level highlighting for C mode.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2306 See also `c-font-lock-extra-types'.")
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2307
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2308 (defconst c-font-lock-keywords-3 nil
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2309 "Gaudy level highlighting for C mode.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2310 See also `c-font-lock-extra-types'.")
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2311
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2312 (let* ((c-keywords
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2313 (eval-when-compile
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2314 (regexp-opt '("break" "continue" "do" "else" "for" "if" "return"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2315 "switch" "while") t)))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2316 (c-type-types
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2317 `(mapconcat 'identity
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2318 (cons
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2319 (,@ (eval-when-compile
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2320 (regexp-opt
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2321 '("auto" "extern" "register" "static" "typedef" "struct"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2322 "union" "enum" "signed" "unsigned" "short" "long"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2323 "int" "char" "float" "double" "void" "volatile" "const"))))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2324 c-font-lock-extra-types)
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2325 "\\|"))
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2326 (c-type-depth `(regexp-opt-depth (,@ c-type-types)))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2327 )
6093
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2328 (setq c-font-lock-keywords-1
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2329 (list
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2330 ;;
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2331 ;; These are all anchored at the beginning of line for speed.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2332 ;; Note that `c++-font-lock-keywords-1' depends on `c-font-lock-keywords-1'.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2333 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2334 ;; Fontify function name definitions (GNU style; without type on line).
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2335 '("^\\(\\sw+\\)[ \t]*(" 1 font-lock-function-name-face)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2336 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2337 ;; Fontify error directives.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2338 '("^#[ \t]*error[ \t]+\\(.+\\)" 1 font-lock-warning-face prepend)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2339 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2340 ;; Fontify filenames in #include <...> preprocessor directives as strings.
20923
c6e733c90ed8 Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents: 20851
diff changeset
2341 '("^#[ \t]*\\(import\\|include\\)[ \t]*\\(<[^>\"\n]*>?\\)"
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2342 2 font-lock-string-face)
6093
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2343 ;;
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2344 ;; Fontify function macro names.
13701
1dab6f0d9239 Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents: 13641
diff changeset
2345 '("^#[ \t]*define[ \t]+\\(\\sw+\\)(" 1 font-lock-function-name-face)
6093
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2346 ;;
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
2347 ;; Fontify symbol names in #elif or #if ... defined preprocessor directives.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
2348 '("^#[ \t]*\\(elif\\|if\\)\\>"
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2349 ("\\<\\(defined\\)\\>[ \t]*(?\\(\\sw+\\)?" nil nil
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2350 (1 font-lock-builtin-face) (2 font-lock-variable-name-face nil t)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2351 ;;
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2352 ;; Fontify otherwise as symbol names, and the preprocessor directive names.
20646
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2353 '("^#[ \t]*\\(\\sw+\\)\\>[ \t!]*\\(\\sw+\\)?"
a951fec2326c (c++-font-lock-extra-types): Add some container classes.
Simon Marshall <simon@gnu.org>
parents: 20645
diff changeset
2354 (1 font-lock-builtin-face) (2 font-lock-variable-name-face nil t))
6093
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2355 ))
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2356
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2357 (setq c-font-lock-keywords-2
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2358 (append c-font-lock-keywords-1
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2359 (list
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2360 ;;
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2361 ;; Simple regexps for speed.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2362 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2363 ;; Fontify all type specifiers.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2364 `(eval .
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2365 (cons (concat "\\<\\(" (,@ c-type-types) "\\)\\>") 'font-lock-type-face))
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2366 ;;
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2367 ;; Fontify all builtin keywords (except case, default and goto; see below).
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2368 (concat "\\<" c-keywords "\\>")
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
2369 ;;
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2370 ;; Fontify case/goto keywords and targets, and case default/goto tags.
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
2371 '("\\<\\(case\\|goto\\)\\>[ \t]*\\(-?\\sw+\\)?"
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2372 (1 font-lock-keyword-face) (2 font-lock-constant-face nil t))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2373 ;; Anders Lindgren <andersl@csd.uu.se> points out that it is quicker to use
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2374 ;; MATCH-ANCHORED to effectively anchor the regexp on the left.
19846
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
2375 ;; This must come after the one for keywords and targets.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2376 '(":" ("^[ \t]*\\(\\sw+\\)[ \t]*:"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2377 (beginning-of-line) (end-of-line)
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2378 (1 font-lock-constant-face)))
6093
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2379 )))
6219
d960f0463014 (c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6093
diff changeset
2380
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2381 (setq c-font-lock-keywords-3
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2382 (append c-font-lock-keywords-2
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2383 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2384 ;; More complicated regexps for more complete highlighting for types.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2385 ;; We still have to fontify type specifiers individually, as C is so hairy.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2386 (list
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2387 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2388 ;; Fontify all storage classes and type specifiers, plus their items.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2389 `(eval .
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2390 (list (concat "\\<\\(" (,@ c-type-types) "\\)\\>"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2391 "\\([ \t*&]+\\sw+\\>\\)*")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2392 ;; Fontify each declaration item.
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2393 (list 'font-lock-match-c-style-declaration-item-and-skip-to-next
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2394 ;; Start with point after all type specifiers.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2395 (list 'goto-char (list 'or (list 'match-beginning
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2396 (+ (,@ c-type-depth) 2))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2397 '(match-end 1)))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2398 ;; Finish with point after first type specifier.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2399 '(goto-char (match-end 1))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2400 ;; Fontify as a variable or function name.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2401 '(1 (if (match-beginning 2)
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2402 font-lock-function-name-face
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2403 font-lock-variable-name-face)))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2404 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2405 ;; Fontify structures, or typedef names, plus their items.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2406 '("\\(}\\)[ \t*]*\\sw"
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2407 (font-lock-match-c-style-declaration-item-and-skip-to-next
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2408 (goto-char (match-end 1)) nil
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2409 (1 (if (match-beginning 2)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2410 font-lock-function-name-face
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2411 font-lock-variable-name-face))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2412 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2413 ;; Fontify anything at beginning of line as a declaration or definition.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2414 '("^\\(\\sw+\\)\\>\\([ \t*]+\\sw+\\>\\)*"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2415 (1 font-lock-type-face)
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2416 (font-lock-match-c-style-declaration-item-and-skip-to-next
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2417 (goto-char (or (match-beginning 2) (match-end 1))) nil
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2418 (1 (if (match-beginning 2)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2419 font-lock-function-name-face
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2420 font-lock-variable-name-face))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2421 )))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2422 )
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2423
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2424 (defvar c-font-lock-keywords c-font-lock-keywords-1
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2425 "Default expressions to highlight in C mode.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2426 See also `c-font-lock-extra-types'.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2427
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2428 ;;; C++.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2429
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2430 (defconst c++-font-lock-keywords-1 nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2431 "Subdued level highlighting for C++ mode.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2432
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2433 (defconst c++-font-lock-keywords-2 nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2434 "Medium level highlighting for C++ mode.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2435 See also `c++-font-lock-extra-types'.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2436
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2437 (defconst c++-font-lock-keywords-3 nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2438 "Gaudy level highlighting for C++ mode.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2439 See also `c++-font-lock-extra-types'.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2440
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2441 (defun font-lock-match-c++-style-declaration-item-and-skip-to-next (limit)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2442 ;; Regexp matches after point: word<word>::word (
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2443 ;; ^^^^ ^^^^ ^^^^ ^
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2444 ;; Where the match subexpressions are: 1 3 5 6
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2445 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2446 ;; Item is delimited by (match-beginning 1) and (match-end 1).
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2447 ;; If (match-beginning 3) is non-nil, that part of the item incloses a `<>'.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2448 ;; If (match-beginning 5) is non-nil, that part of the item follows a `::'.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2449 ;; If (match-beginning 6) is non-nil, the item is followed by a `('.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2450 (when (looking-at (eval-when-compile
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2451 (concat
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2452 ;; Skip any leading whitespace.
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2453 "[ \t*&]*"
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2454 ;; This is `c++-type-spec' from below. (Hint hint!)
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2455 "\\(\\sw+\\)" ; The instance?
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2456 "\\([ \t]*<\\([^>\n]+\\)[ \t*&]*>\\)?" ; Or template?
20190
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
2457 "\\([ \t]*::[ \t*~]*\\(\\sw+\\)\\)*" ; Or member?
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2458 ;; Match any trailing parenthesis.
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2459 "[ \t]*\\((\\)?")))
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2460 (save-match-data
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2461 (condition-case nil
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2462 (save-restriction
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2463 ;; Restrict to the end of line, currently guaranteed to be LIMIT.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2464 (narrow-to-region (point-min) limit)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2465 (goto-char (match-end 1))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2466 ;; Move over any item value, etc., to the next item.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2467 (while (not (looking-at "[ \t]*\\(\\(,\\)\\|;\\|$\\)"))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2468 (goto-char (or (scan-sexps (point) 1) (point-max))))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2469 (goto-char (match-end 2)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2470 (error t)))))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2471
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2472 (let* ((c++-keywords
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2473 (eval-when-compile
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2474 (regexp-opt
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2475 '("break" "continue" "do" "else" "for" "if" "return" "switch"
19846
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
2476 "while" "asm" "catch" "delete" "new" "sizeof" "this" "throw" "try"
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2477 ;; Eric Hopper <hopper@omnifarious.mn.org> says these are new.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2478 "static_cast" "dynamic_cast" "const_cast" "reinterpret_cast") t)))
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2479 (c++-operators
18332
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2480 (eval-when-compile
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2481 (regexp-opt
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2482 ;; Taken from Stroustrup, minus keywords otherwise fontified.
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2483 '("+" "-" "*" "/" "%" "^" "&" "|" "~" "!" "=" "<" ">" "+=" "-="
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2484 "*=" "/=" "%=" "^=" "&=" "|=" "<<" ">>" ">>=" "<<=" "==" "!="
ee997de5b74b Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents: 18025
diff changeset
2485 "<=" ">=" "&&" "||" "++" "--" "->*" "," "->" "[]" "()"))))
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2486 (c++-type-types
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2487 `(mapconcat 'identity
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2488 (cons
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2489 (,@ (eval-when-compile
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2490 (regexp-opt
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2491 '("auto" "extern" "register" "static" "typedef" "struct"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2492 "union" "enum" "signed" "unsigned" "short" "long"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2493 "int" "char" "float" "double" "void" "volatile" "const"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2494 "inline" "friend" "bool" "virtual" "complex" "template"
18979
ec31453a9196 Add type specs "explicit" "mutable".
Simon Marshall <simon@gnu.org>
parents: 18463
diff changeset
2495 "namespace" "using"
ec31453a9196 Add type specs "explicit" "mutable".
Simon Marshall <simon@gnu.org>
parents: 18463
diff changeset
2496 ;; Mark Mitchell <mmitchell@usa.net> says these are new.
ec31453a9196 Add type specs "explicit" "mutable".
Simon Marshall <simon@gnu.org>
parents: 18463
diff changeset
2497 "explicit" "mutable"))))
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2498 c++-font-lock-extra-types)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2499 "\\|"))
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2500 ;;
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2501 ;; A brave attempt to match templates following a type and/or match
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2502 ;; class membership. See and sync the above function
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2503 ;; `font-lock-match-c++-style-declaration-item-and-skip-to-next'.
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2504 (c++-type-suffix (concat "\\([ \t]*<\\([^>\n]+\\)[ \t*&]*>\\)?"
20190
bc7fabb22520 Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents: 19935
diff changeset
2505 "\\([ \t]*::[ \t*~]*\\(\\sw+\\)\\)*"))
17495
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2506 ;; If the string is a type, it may be followed by the cruft above.
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2507 (c++-type-spec (concat "\\(\\sw+\\)\\>" c++-type-suffix))
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2508 ;;
83dabcc0a796 Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents: 17468
diff changeset
2509 ;; Parenthesis depth of user-defined types not forgetting their cruft.
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2510 (c++-type-depth `(regexp-opt-depth
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2511 (concat (,@ c++-type-types) (,@ c++-type-suffix))))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2512 )
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2513 (setq c++-font-lock-keywords-1
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2514 (append
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2515 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2516 ;; The list `c-font-lock-keywords-1' less that for function names.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2517 (cdr c-font-lock-keywords-1)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2518 (list
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2519 ;;
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2520 ;; Class names etc.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2521 (list (concat "\\<\\(class\\|public\\|private\\|protected\\)\\>[ \t]*"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2522 "\\(" c++-type-spec "\\)?")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2523 '(1 font-lock-type-face)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2524 '(3 (if (match-beginning 6)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2525 font-lock-type-face
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2526 font-lock-function-name-face) nil t)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2527 '(5 font-lock-function-name-face nil t)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2528 '(7 font-lock-function-name-face nil t))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2529 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2530 ;; Fontify function name definitions, possibly incorporating class names.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2531 (list (concat "^" c++-type-spec "[ \t]*(")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2532 '(1 (if (or (match-beginning 2) (match-beginning 4))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2533 font-lock-type-face
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2534 font-lock-function-name-face))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2535 '(3 font-lock-function-name-face nil t)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2536 '(5 font-lock-function-name-face nil t))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2537 )))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2538
6219
d960f0463014 (c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6093
diff changeset
2539 (setq c++-font-lock-keywords-2
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
2540 (append c++-font-lock-keywords-1
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2541 (list
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2542 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2543 ;; The list `c-font-lock-keywords-2' for C++ plus operator overloading.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2544 `(eval .
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2545 (cons (concat "\\<\\(" (,@ c++-type-types) "\\)\\>")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2546 'font-lock-type-face))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2547 ;;
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2548 ;; Fontify operator overloading.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2549 (list (concat "\\<\\(operator\\)\\>[ \t]*\\(" c++-operators "\\)?")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2550 '(1 font-lock-keyword-face)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2551 '(2 font-lock-builtin-face nil t))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2552 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2553 ;; Fontify case/goto keywords and targets, and case default/goto tags.
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
2554 '("\\<\\(case\\|goto\\)\\>[ \t]*\\(-?\\sw+\\)?"
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2555 (1 font-lock-keyword-face) (2 font-lock-constant-face nil t))
19846
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
2556 ;; This must come after the one for keywords and targets.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2557 '(":" ("^[ \t]*\\(\\sw+\\)[ \t]*:\\($\\|[^:]\\)"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2558 (beginning-of-line) (end-of-line)
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2559 (1 font-lock-constant-face)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2560 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2561 ;; Fontify other builtin keywords.
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2562 (concat "\\<" c++-keywords "\\>")
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2563 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2564 ;; Eric Hopper <hopper@omnifarious.mn.org> says `true' and `false' are new.
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2565 '("\\<\\(false\\|true\\)\\>" . font-lock-constant-face)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2566 )))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2567
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2568 (setq c++-font-lock-keywords-3
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2569 (append c++-font-lock-keywords-2
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2570 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2571 ;; More complicated regexps for more complete highlighting for types.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2572 (list
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2573 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2574 ;; Fontify all storage classes and type specifiers, plus their items.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2575 `(eval .
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2576 (list (concat "\\<\\(" (,@ c++-type-types) "\\)\\>" (,@ c++-type-suffix)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2577 "\\([ \t*&]+" (,@ c++-type-spec) "\\)*")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2578 ;; Fontify each declaration item.
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2579 (list 'font-lock-match-c++-style-declaration-item-and-skip-to-next
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2580 ;; Start with point after all type specifiers.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2581 (list 'goto-char (list 'or (list 'match-beginning
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2582 (+ (,@ c++-type-depth) 2))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2583 '(match-end 1)))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2584 ;; Finish with point after first type specifier.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2585 '(goto-char (match-end 1))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2586 ;; Fontify as a variable or function name.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2587 '(1 (cond ((or (match-beginning 2) (match-beginning 4))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2588 font-lock-type-face)
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2589 ((match-beginning 6) font-lock-function-name-face)
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2590 (t font-lock-variable-name-face)))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2591 '(3 font-lock-function-name-face nil t)
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2592 '(5 (if (match-beginning 6)
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2593 font-lock-function-name-face
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2594 font-lock-variable-name-face) nil t))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2595 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2596 ;; Fontify structures, or typedef names, plus their items.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2597 '("\\(}\\)[ \t*]*\\sw"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2598 (font-lock-match-c++-style-declaration-item-and-skip-to-next
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2599 (goto-char (match-end 1)) nil
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2600 (1 (if (match-beginning 6)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2601 font-lock-function-name-face
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2602 font-lock-variable-name-face))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2603 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2604 ;; Fontify anything at beginning of line as a declaration or definition.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2605 (list (concat "^\\(" c++-type-spec "[ \t*&]*\\)+")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2606 '(font-lock-match-c++-style-declaration-item-and-skip-to-next
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2607 (goto-char (match-beginning 1))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2608 (goto-char (match-end 1))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2609 (1 (cond ((or (match-beginning 2) (match-beginning 4))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2610 font-lock-type-face)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2611 ((match-beginning 6) font-lock-function-name-face)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2612 (t font-lock-variable-name-face)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2613 (3 font-lock-function-name-face nil t)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2614 (5 (if (match-beginning 6)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2615 font-lock-function-name-face
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2616 font-lock-variable-name-face) nil t)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2617 )))
6093
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2618 )
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2619
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2620 (defvar c++-font-lock-keywords c++-font-lock-keywords-1
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2621 "Default expressions to highlight in C++ mode.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2622 See also `c++-font-lock-extra-types'.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2623
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2624 ;;; Objective-C.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2625
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2626 (defconst objc-font-lock-keywords-1 nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2627 "Subdued level highlighting for Objective-C mode.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2628
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2629 (defconst objc-font-lock-keywords-2 nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2630 "Medium level highlighting for Objective-C mode.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2631 See also `objc-font-lock-extra-types'.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2632
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2633 (defconst objc-font-lock-keywords-3 nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2634 "Gaudy level highlighting for Objective-C mode.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2635 See also `objc-font-lock-extra-types'.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2636
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2637 ;; Regexps written with help from Stephen Peters <speters@us.oracle.com> and
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2638 ;; Jacques Duthen Prestataire <duthen@cegelec-red.fr>.
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2639 (let* ((objc-keywords
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2640 (eval-when-compile
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2641 (regexp-opt '("break" "continue" "do" "else" "for" "if" "return"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2642 "switch" "while" "sizeof" "self" "super") t)))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2643 (objc-type-types
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2644 `(mapconcat 'identity
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2645 (cons
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2646 (,@ (eval-when-compile
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2647 (regexp-opt
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2648 '("auto" "extern" "register" "static" "typedef" "struct"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2649 "union" "enum" "signed" "unsigned" "short" "long"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2650 "int" "char" "float" "double" "void" "volatile" "const"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2651 "id" "oneway" "in" "out" "inout" "bycopy" "byref"))))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2652 objc-font-lock-extra-types)
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2653 "\\|"))
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2654 (objc-type-depth `(regexp-opt-depth (,@ objc-type-types)))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2655 )
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2656 (setq objc-font-lock-keywords-1
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2657 (append
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2658 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2659 ;; The list `c-font-lock-keywords-1' less that for function names.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2660 (cdr c-font-lock-keywords-1)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2661 (list
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2662 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2663 ;; Fontify compiler directives.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2664 '("@\\(\\sw+\\)\\>"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2665 (1 font-lock-keyword-face)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2666 ("\\=[ \t:<(,]*\\(\\sw+\\)" nil nil
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2667 (1 font-lock-function-name-face)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2668 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2669 ;; Fontify method names and arguments. Oh Lordy!
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2670 ;; First, on the same line as the function declaration.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2671 '("^[+-][ \t]*\\(PRIVATE\\)?[ \t]*\\((\\([^)\n]+\\))\\)?[ \t]*\\(\\sw+\\)"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2672 (1 font-lock-type-face nil t)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2673 (3 font-lock-type-face nil t)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2674 (4 font-lock-function-name-face)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2675 ("\\=[ \t]*\\(\\sw+\\)?:[ \t]*\\((\\([^)\n]+\\))\\)?[ \t]*\\(\\sw+\\)"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2676 nil nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2677 (1 font-lock-function-name-face nil t)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2678 (3 font-lock-type-face nil t)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2679 (4 font-lock-variable-name-face)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2680 ;; Second, on lines following the function declaration.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2681 '(":" ("^[ \t]*\\(\\sw+\\)?:[ \t]*\\((\\([^)\n]+\\))\\)?[ \t]*\\(\\sw+\\)"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2682 (beginning-of-line) (end-of-line)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2683 (1 font-lock-function-name-face nil t)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2684 (3 font-lock-type-face nil t)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2685 (4 font-lock-variable-name-face)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2686 )))
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2687
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2688 (setq objc-font-lock-keywords-2
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2689 (append objc-font-lock-keywords-1
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2690 (list
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2691 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2692 ;; Simple regexps for speed.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2693 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2694 ;; Fontify all type specifiers.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2695 `(eval .
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2696 (cons (concat "\\<\\(" (,@ objc-type-types) "\\)\\>")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2697 'font-lock-type-face))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2698 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2699 ;; Fontify all builtin keywords (except case, default and goto; see below).
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2700 (concat "\\<" objc-keywords "\\>")
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2701 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2702 ;; Fontify case/goto keywords and targets, and case default/goto tags.
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
2703 '("\\<\\(case\\|goto\\)\\>[ \t]*\\(-?\\sw+\\)?"
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2704 (1 font-lock-keyword-face) (2 font-lock-constant-face nil t))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2705 ;; Fontify tags iff sole statement on line, otherwise we detect selectors.
19846
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
2706 ;; This must come after the one for keywords and targets.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2707 '(":" ("^[ \t]*\\(\\sw+\\)[ \t]*:[ \t]*$"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2708 (beginning-of-line) (end-of-line)
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2709 (1 font-lock-constant-face)))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2710 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2711 ;; Fontify null object pointers.
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2712 '("\\<[Nn]il\\>" . font-lock-constant-face)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2713 )))
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2714
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2715 (setq objc-font-lock-keywords-3
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2716 (append objc-font-lock-keywords-2
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2717 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2718 ;; More complicated regexps for more complete highlighting for types.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2719 ;; We still have to fontify type specifiers individually, as C is so hairy.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2720 (list
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2721 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2722 ;; Fontify all storage classes and type specifiers, plus their items.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2723 `(eval .
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2724 (list (concat "\\<\\(" (,@ objc-type-types) "\\)\\>"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2725 "\\([ \t*&]+\\sw+\\>\\)*")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2726 ;; Fontify each declaration item.
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2727 (list 'font-lock-match-c-style-declaration-item-and-skip-to-next
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2728 ;; Start with point after all type specifiers.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2729 (list 'goto-char (list 'or (list 'match-beginning
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2730 (+ (,@ objc-type-depth) 2))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2731 '(match-end 1)))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2732 ;; Finish with point after first type specifier.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2733 '(goto-char (match-end 1))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2734 ;; Fontify as a variable or function name.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2735 '(1 (if (match-beginning 2)
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2736 font-lock-function-name-face
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2737 font-lock-variable-name-face)))))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2738 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2739 ;; Fontify structures, or typedef names, plus their items.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2740 '("\\(}\\)[ \t*]*\\sw"
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2741 (font-lock-match-c-style-declaration-item-and-skip-to-next
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2742 (goto-char (match-end 1)) nil
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2743 (1 (if (match-beginning 2)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2744 font-lock-function-name-face
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2745 font-lock-variable-name-face))))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2746 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2747 ;; Fontify anything at beginning of line as a declaration or definition.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2748 '("^\\(\\sw+\\)\\>\\([ \t*]+\\sw+\\>\\)*"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2749 (1 font-lock-type-face)
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2750 (font-lock-match-c-style-declaration-item-and-skip-to-next
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2751 (goto-char (or (match-beginning 2) (match-end 1))) nil
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2752 (1 (if (match-beginning 2)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2753 font-lock-function-name-face
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2754 font-lock-variable-name-face))))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2755 )))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2756 )
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2757
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2758 (defvar objc-font-lock-keywords objc-font-lock-keywords-1
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2759 "Default expressions to highlight in Objective-C mode.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2760 See also `objc-font-lock-extra-types'.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2761
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2762 ;;; Java.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2763
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2764 (defconst java-font-lock-keywords-1 nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2765 "Subdued level highlighting for Java mode.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2766
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2767 (defconst java-font-lock-keywords-2 nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2768 "Medium level highlighting for Java mode.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2769 See also `java-font-lock-extra-types'.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2770
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2771 (defconst java-font-lock-keywords-3 nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2772 "Gaudy level highlighting for Java mode.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2773 See also `java-font-lock-extra-types'.")
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
2774
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2775 ;; Regexps written with help from Fred White <fwhite@bbn.com> and
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2776 ;; Anders Lindgren <andersl@csd.uu.se>.
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2777 (let* ((java-keywords
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2778 (eval-when-compile
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2779 (regexp-opt
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2780 '("catch" "do" "else" "super" "this" "finally" "for" "if"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2781 ;; Anders Lindgren <andersl@csd.uu.se> says these have gone.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2782 ;; "cast" "byvalue" "future" "generic" "operator" "var"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2783 ;; "inner" "outer" "rest"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2784 "interface" "return" "switch" "throw" "try" "while") t)))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2785 ;;
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2786 ;; These are immediately followed by an object name.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2787 (java-minor-types
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2788 (eval-when-compile
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2789 (regexp-opt '("boolean" "char" "byte" "short" "int" "long"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2790 "float" "double" "void"))))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2791 ;;
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2792 ;; These are eventually followed by an object name.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2793 (java-major-types
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2794 (eval-when-compile
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2795 (regexp-opt
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2796 '("abstract" "const" "final" "synchronized" "transient" "static"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2797 ;; Anders Lindgren <andersl@csd.uu.se> says this has gone.
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2798 ;; "threadsafe"
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2799 "volatile" "public" "private" "protected" "native"))))
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2800 ;;
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2801 ;; Random types immediately followed by an object name.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2802 (java-other-types
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2803 '(mapconcat 'identity (cons "\\sw+\\.\\sw+" java-font-lock-extra-types)
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2804 "\\|"))
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2805 (java-other-depth `(regexp-opt-depth (,@ java-other-types)))
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2806 )
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2807 (setq java-font-lock-keywords-1
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2808 (list
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2809 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2810 ;; Fontify class names.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2811 '("\\<\\(class\\)\\>[ \t]*\\(\\sw+\\)?"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2812 (1 font-lock-type-face) (2 font-lock-function-name-face nil t))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2813 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2814 ;; Fontify package names in import directives.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2815 '("\\<\\(import\\|package\\)\\>[ \t]*\\(\\sw+\\)?"
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2816 (1 font-lock-keyword-face) (2 font-lock-constant-face nil t))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2817 ))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2818
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2819 (setq java-font-lock-keywords-2
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2820 (append java-font-lock-keywords-1
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2821 (list
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2822 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2823 ;; Fontify all builtin type specifiers.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2824 (cons (concat "\\<\\(" java-minor-types "\\|" java-major-types "\\)\\>")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2825 'font-lock-type-face)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2826 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2827 ;; Fontify all builtin keywords (except below).
18025
9f9f522cdc27 Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents: 17543
diff changeset
2828 (concat "\\<" java-keywords "\\>")
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2829 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2830 ;; Fontify keywords and targets, and case default/goto tags.
17055
f0f8005780cc 1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents: 16852
diff changeset
2831 (list "\\<\\(break\\|case\\|continue\\|goto\\)\\>[ \t]*\\(-?\\sw+\\)?"
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2832 '(1 font-lock-keyword-face) '(2 font-lock-constant-face nil t))
19846
f5f2feb0bd0f Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents: 19788
diff changeset
2833 ;; This must come after the one for keywords and targets.
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2834 '(":" ("^[ \t]*\\(\\sw+\\)[ \t]*:"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2835 (beginning-of-line) (end-of-line)
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2836 (1 font-lock-constant-face)))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2837 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2838 ;; Fontify keywords and types; the first can be followed by a type list.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2839 (list (concat "\\<\\("
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2840 "implements\\|throws\\|"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2841 "\\(extends\\|instanceof\\|new\\)"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2842 "\\)\\>[ \t]*\\(\\sw+\\)?")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2843 '(1 font-lock-keyword-face) '(3 font-lock-type-face nil t)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2844 '("\\=[ \t]*,[ \t]*\\(\\sw+\\)"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2845 (if (match-beginning 2) (goto-char (match-end 2))) nil
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2846 (1 font-lock-type-face)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2847 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2848 ;; Fontify all constants.
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2849 '("\\<\\(false\\|null\\|true\\)\\>" . font-lock-constant-face)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2850 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2851 ;; Javadoc tags within comments.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2852 '("@\\(author\\|exception\\|return\\|see\\|version\\)\\>"
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2853 (1 font-lock-constant-face prepend))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2854 '("@\\(param\\)\\>[ \t]*\\(\\sw+\\)?"
20951
ae0c93b9ac1f Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 20923
diff changeset
2855 (1 font-lock-constant-face prepend)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2856 (2 font-lock-variable-name-face prepend t))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2857 )))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2858
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2859 (setq java-font-lock-keywords-3
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2860 (append java-font-lock-keywords-2
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2861 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2862 ;; More complicated regexps for more complete highlighting for types.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2863 ;; We still have to fontify type specifiers individually, as Java is hairy.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2864 (list
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2865 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2866 ;; Fontify random types in casts.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2867 `(eval .
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2868 (list (concat "(\\(" (,@ java-other-types) "\\))"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2869 "[ \t]*\\(\\sw\\|[\"\(]\\)")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2870 ;; Fontify the type name.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2871 '(1 font-lock-type-face)))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2872 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2873 ;; Fontify random types immediately followed by an item or items.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2874 `(eval .
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2875 (list (concat "\\<\\(" (,@ java-other-types) "\\)\\>"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2876 "\\([ \t]*\\[[ \t]*\\]\\)*"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2877 "[ \t]*\\sw")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2878 ;; Fontify the type name.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2879 '(1 font-lock-type-face)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2880 `(eval .
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2881 (list (concat "\\<\\(" (,@ java-other-types) "\\)\\>"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2882 "\\([ \t]*\\[[ \t]*\\]\\)*"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2883 "\\([ \t]*\\sw\\)")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2884 ;; Fontify each declaration item.
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2885 (list 'font-lock-match-c-style-declaration-item-and-skip-to-next
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2886 ;; Start and finish with point after the type specifier.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2887 (list 'goto-char (list 'match-beginning
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2888 (+ (,@ java-other-depth) 3)))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2889 (list 'goto-char (list 'match-beginning
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2890 (+ (,@ java-other-depth) 3)))
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2891 ;; Fontify as a variable or function name.
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2892 '(1 (if (match-beginning 2)
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2893 font-lock-function-name-face
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2894 font-lock-variable-name-face)))))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2895 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2896 ;; Fontify those that are immediately followed by an item or items.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2897 (list (concat "\\<\\(" java-minor-types "\\)\\>"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2898 "\\([ \t]*\\[[ \t]*\\]\\)*")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2899 ;; Fontify each declaration item.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2900 '(font-lock-match-c-style-declaration-item-and-skip-to-next
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2901 ;; Start and finish with point after the type specifier.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2902 nil (goto-char (match-end 0))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2903 ;; Fontify as a variable or function name.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2904 (1 (if (match-beginning 2)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2905 font-lock-function-name-face
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2906 font-lock-variable-name-face))))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2907 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2908 ;; Fontify those that are eventually followed by an item or items.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2909 (list (concat "\\<\\(" java-major-types "\\)\\>"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2910 "\\([ \t]+\\sw+\\>"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2911 "\\([ \t]*\\[[ \t]*\\]\\)*"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2912 "\\)*")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2913 ;; Fontify each declaration item.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2914 '(font-lock-match-c-style-declaration-item-and-skip-to-next
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2915 ;; Start with point after all type specifiers.
17161
a2d3b455c6f4 Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents: 17055
diff changeset
2916 (goto-char (or (match-beginning 5) (match-end 1)))
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2917 ;; Finish with point after first type specifier.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2918 (goto-char (match-end 1))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2919 ;; Fontify as a variable or function name.
16578
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2920 (1 (if (match-beginning 2)
16456
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2921 font-lock-function-name-face
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2922 font-lock-variable-name-face))))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2923 )))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2924 )
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2925
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2926 (defvar java-font-lock-keywords java-font-lock-keywords-1
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2927 "Default expressions to highlight in Java mode.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2928 See also `java-font-lock-extra-types'.")
12813
c9ed95ec05b6 Functionality for font-lock-beginning-of-syntax-function to be used by font-lock-fontify-region when calculating the cache state. Also wrap value of buffer-file-truename to guard against clash detection. Also add scheme-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 12626
diff changeset
2929
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2930 ;; Install ourselves:
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2931
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
2932 (unless (assq 'font-lock-mode minor-mode-alist)
19033
b1e77e91eaae don't add text for the modeline.
Simon Marshall <simon@gnu.org>
parents: 18979
diff changeset
2933 (push '(font-lock-mode nil) minor-mode-alist))
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2934
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2935 ;; Provide ourselves:
7491
621c162a80db (font-lock-no-comments): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
2936
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2937 (provide 'font-lock)
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2938
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2939 ;;; font-lock.el ends here