annotate lisp/font-lock.el @ 17055:f0f8005780cc

1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT. 2. Commented out menu code.
author Simon Marshall <simon@gnu.org>
date Fri, 21 Feb 1997 09:36:18 +0000
parents 70e9b1d69d0d
children a2d3b455c6f4
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
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
3 ;; Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
5 ;; Author: jwz, then rms, then sm <simon@gnu.ai.mit.edu>
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
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
63 ;; regexp (i.e., keywords and everything else) passes. The syntactic pass
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
64 ;; involves a syntax table and a syntax parsing function to determine 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
65 ;; context of different parts of a region of text. It is necessary because
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
66 ;; generally strings and/or comments can span lines, and so the context of a
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
67 ;; given region is not necessarily apparent from the content of that 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
68 ;; Because the regexp pass only works within a given region, it is not
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
69 ;; generally appropriate for syntactic fontification. The regexp pass involves
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
70 ;; searching for given regexps (or calling given functions) within the given
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
71 ;; region. For each match of the regexp (or non-nil value of the called
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
72 ;; function), `face' text properties are added 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
73
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
74 ;;; 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
75
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
76 ;; 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
77 ;; 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
78 ;; 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
79 ;; 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
80 ;; 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
81 ;; 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
82 ;; 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
83 ;; 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
84 ;; (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
85 ;; 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
86 ;; 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
87 ;;
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
88 ;; 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
89 ;; 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
90
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
91 ;;; 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
92
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
93 ;; 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
94 ;;
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
95 ;; Nasty regexps of the form "bar\\(\\|lo\\)\\|f\\(oo\\|u\\(\\|bar\\)\\)\\|lo"
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
96 ;; are made thusly: (make-regexp '("foo" "fu" "fubar" "bar" "barlo" "lo")) for
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
97 ;; efficiency. See /pub/gnu/emacs/elisp-archive/functions/make-regexp.el.Z on
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
98 ;; archive.cis.ohio-state.edu for this and other functions not just by sm.
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
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 ;;; 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
101
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
102 ;; 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
103 ;; 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
104 ;; 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
105 ;; `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
106 ;; 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
107 ;; 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
108 ;;
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
109 ;; (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
110 ;;
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
111 ;; 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
112 ;; 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
113 ;; 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
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 ;;; 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
116
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
117 ;; 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
118 ;; 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
119 ;; 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
120 ;; 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
121 ;; 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
122 ;; 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
123 ;; 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
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 ;; (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
126 ;; '(("\\<\\(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
127 ;; ("\\<\\(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
128 ;; "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
129 ;;
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
130 ;; (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
131 ;; (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
132 ;; (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
133 ;; (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
134
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 ;;; 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
136
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 ;; 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
138 ;; 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
139 ;; 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
140 ;; 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
141 ;; 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
142 ;; 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
143 ;; 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
144 ;; 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
145 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 ;; (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
147 ;; '(("\\<\\(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
148 ;; ("\\<\\(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
149 ;; "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
150 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 ;; 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
152 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
153 ;; (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
154 ;; (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
155
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
156 ;; 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
157 ;; 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
158 ;; 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
159 ;; 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
160 ;; 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
161 ;; 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
162 ;; 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
163 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
164 ;; So, here are my opinions/advice/guidelines:
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
165 ;;
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
166 ;; - 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
167 ;; 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
168 ;; 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
169 ;; - 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
170 ;; i.e., (a) above.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
171 ;; - 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
172 ;; 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
173 ;; 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
174 ;; - 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
175 ;; 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
176 ;; 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
177 ;; 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
178 ;; - 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
179 ;; 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
180 ;; 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
181 ;; 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
182 ;; - Err, that's it.
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
183
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
184 ;;; 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
185
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
186 ;; User variables.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
187
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
188 (defvar font-lock-verbose (* 0 1024)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
189 "*If non-nil, means show status messages for buffer fontification.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
190 If a number, only buffers greater than this size have fontification messages.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
192 ;;;###autoload
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
193 (defvar font-lock-maximum-decoration nil
14780
1d10e4a2fb51 Treat font-lock-keywords of (t) the same as nil.
Simon Marshall <simon@gnu.org>
parents: 14778
diff changeset
194 "*Maximum decoration level for fontification.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
195 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
196 If t, use the maximum decoration available.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
197 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
198 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
199 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
200 ((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
201 means use the maximum decoration available for buffers in C mode, level 2
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
202 decoration for buffers in C++ mode, and level 1 decoration otherwise.")
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
203
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
204 ;;;###autoload
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
205 (defvar font-lock-maximum-size (* 250 1024)
14780
1d10e4a2fb51 Treat font-lock-keywords of (t) the same as nil.
Simon Marshall <simon@gnu.org>
parents: 14778
diff changeset
206 "*Maximum size of a buffer for buffer fontification.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
207 Only buffers less than this can be fontified when Font Lock mode is turned on.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
208 If nil, means size is irrelevant.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
209 If a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE),
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
210 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
211 ((c-mode . 256000) (c++-mode . 256000) (rmail-mode . 1048576))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
212 means that the maximum size is 250K for buffers in C or C++ modes, one megabyte
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
213 for buffers in Rmail mode, and size is irrelevant otherwise.")
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
214
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
215 ;; Fontification variables:
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
216
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
217 ;; Originally these variable values were face names such as `bold' etc.
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
218 ;; Now we create our own faces, but we keep these variables for compatibility
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
219 ;; and they give users another mechanism for changing face appearance.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
220 ;; We now allow a FACENAME in `font-lock-keywords' to be any expression that
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
221 ;; returns a face. So the easiest thing is to continue using these variables,
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
222 ;; rather than sometimes evaling FACENAME and sometimes not. sm.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
223 (defvar font-lock-comment-face 'font-lock-comment-face
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 "Face to use for comments.")
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
226 (defvar font-lock-string-face 'font-lock-string-face
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
227 "Face to use for strings.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
229 (defvar font-lock-keyword-face 'font-lock-keyword-face
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
230 "Face to use for keywords.")
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
231
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
232 (defvar font-lock-builtin-face 'font-lock-builtin-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
233 "Face to use for builtins.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
234
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
235 (defvar font-lock-function-name-face 'font-lock-function-name-face
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 "Face to use for function names.")
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
238 (defvar font-lock-variable-name-face 'font-lock-variable-name-face
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
239 "Face to use for variable names.")
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
240
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
241 (defvar font-lock-type-face 'font-lock-type-face
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
242 "Face to use for type names.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
244 (defvar font-lock-reference-face 'font-lock-reference-face
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
245 "Face to use for reference names.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246
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
247 (defvar font-lock-warning-face 'font-lock-warning-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
248 "Face to use for things that should stand out.")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
249
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 (defvar font-lock-keywords 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
251 "*A list of the keywords to highlight.
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
252 Each element should be of the form:
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
253
11515
0ebfc7701ebf Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents: 11467
diff changeset
254 MATCHER
0ebfc7701ebf Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents: 11467
diff changeset
255 (MATCHER . MATCH)
0ebfc7701ebf Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents: 11467
diff changeset
256 (MATCHER . FACENAME)
0ebfc7701ebf Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents: 11467
diff changeset
257 (MATCHER . HIGHLIGHT)
0ebfc7701ebf Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents: 11467
diff changeset
258 (MATCHER HIGHLIGHT ...)
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
259 (eval . FORM)
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
261 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
262
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
263 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
264 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
265 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
266
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
267 For highlighting single items, typically only MATCH-HIGHLIGHT is required.
13982
baba81b17362 (font-lock-keywords): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13701
diff changeset
268 However, if an item or (typically) items are to be highlighted following the
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
269 instance of another item (the anchor) then MATCH-ANCHORED may be required.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
270
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
271 MATCH-HIGHLIGHT should be of the form:
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
272
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
273 (MATCH FACENAME OVERRIDE LAXMATCH)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
274
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
275 Where MATCHER can be either the regexp to search for, or the function name to
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
276 call to make the search (called with one argument, the limit of the search).
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
277 MATCH is the subexpression of MATCHER to be highlighted. FACENAME is an
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
278 expression whose value is the face name to use. FACENAME's default attributes
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
279 may be defined in `font-lock-face-attributes'.
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
281 OVERRIDE and LAXMATCH are flags. If OVERRIDE is t, existing fontification may
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
282 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
283 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
284 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
285 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
286
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
287 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
288
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
289 \"\\\\\\=<foo\\\\\\=>\" Discrete occurrences of \"foo\" in the value of the
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
290 variable `font-lock-keyword-face'.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
291 (\"fu\\\\(bar\\\\)\" . 1) Substring \"bar\" within all occurrences of \"fubar\" in
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
292 the value of `font-lock-keyword-face'.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
293 (\"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
294 (\"foo\\\\|bar\" 0 foo-bar-face t)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
295 Occurrences of either \"foo\" or \"bar\" in the value
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
296 of `foo-bar-face', even if already highlighted.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
297
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
298 MATCH-ANCHORED should be of the form:
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
300 (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
301
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
302 Where MATCHER is as for MATCH-HIGHLIGHT with one exception; see below.
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
303 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
304 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
305 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
306 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
307 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
308 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
309
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
310 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
311
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
312 (\"\\\\\\=<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
313
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
314 Discrete occurrences of \"anchor\" in the value of `anchor-face', and subsequent
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
315 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
316 (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
317 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
318 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
319 for \"item\" concluded.)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
320
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
321 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
322 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
323 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
324 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
325 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
326 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
327
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
328 Note that the MATCH-ANCHORED feature is experimental; in the future, we may
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
329 replace it with other ways of providing this functionality.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
330
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
331 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
332 \\[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
333 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
334
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
335 Be very careful composing regexps for this list;
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
336 the wrong pattern can dramatically slow things down!")
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
337 (make-variable-buffer-local 'font-lock-keywords)
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338
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
339 ;; 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
340 ;; 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
341 ;; 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
342 (defvar font-lock-defaults nil
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
343 "If set by a major mode, should be the defaults for Font Lock mode.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
344 The value should be like the `cdr' of an item in `font-lock-defaults-alist'.")
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
345
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
346 ;; 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
347 (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
348 (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
349 ;; 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
350 ;; 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
351 (c-mode-defaults
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
352 '((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
353 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
354 nil nil ((?_ . "w")) beginning-of-defun
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
355 (font-lock-comment-start-regexp . "/[*/]")
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
356 (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
357 (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
358 '((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
359 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
360 nil nil ((?_ . "w") (?~ . "w")) beginning-of-defun
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
361 (font-lock-comment-start-regexp . "/[*/]")
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
362 (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
363 (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
364 '((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
365 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
366 nil nil ((?_ . "w") (?$ . "w")) 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
367 (font-lock-comment-start-regexp . "/[*/]")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
368 (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
369 (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
370 '((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
371 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
372 nil nil ((?_ . "w") (?$ . "w") (?. . "w")) 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
373 (font-lock-comment-start-regexp . "/[*/]")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
374 (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
375 (lisp-mode-defaults
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
376 '((lisp-font-lock-keywords
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
377 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
378 nil nil (("+-*/.<>=!?$%_&~^:" . "w")) beginning-of-defun
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
379 (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
380 (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
381 (scheme-mode-defaults
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
382 '(scheme-font-lock-keywords
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
383 nil t (("+-*/.<>=!?$%_&~^:" . "w")) beginning-of-defun
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
384 (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
385 (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
386 ;; 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
387 ;; 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
388 ;; 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
389 ;; 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
390 ;; 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
391 (tex-mode-defaults
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
392 '(tex-font-lock-keywords nil nil ((?$ . "\"")) nil
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
393 (font-lock-comment-start-regexp . "%")
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
394 (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
395 )
11515
0ebfc7701ebf Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents: 11467
diff changeset
396 (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
397 (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
398 (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
399 (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
400 (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
401 (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
402 (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
403 (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
404 (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
405 (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
406 (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
407 (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
408 (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
409 (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
410 (cons 'tex-mode tex-mode-defaults)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
411 "Alist of default major mode and 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
412 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
413
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
414 (MAJOR-MODE . (KEYWORDS KEYWORDS-ONLY CASE-FOLD SYNTAX-ALIST SYNTAX-BEGIN
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
415 ...))
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
416
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
417 where MAJOR-MODE is a symbol. KEYWORDS may be a symbol (a variable or function
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
418 whose value is the keywords to use for fontification) or a list of symbols.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
419 If KEYWORDS-ONLY is non-nil, syntactic fontification (strings and comments) is
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
420 not performed. If CASE-FOLD is non-nil, the case of the keywords is ignored
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
421 when fontifying. If SYNTAX-ALIST is non-nil, it should be a list of cons pairs
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
422 of the form (CHAR-OR-STRING . STRING) used to set the local Font Lock syntax
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
423 table, for keyword and syntactic fontification (see `modify-syntax-entry').
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
424
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
425 If SYNTAX-BEGIN is non-nil, it should be a function with no args used to move
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
426 backwards outside any enclosing syntactic block, for syntactic fontification.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
427 Typical values are `beginning-of-line' (i.e., the start of the line is known to
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
428 be outside a syntactic block), or `beginning-of-defun' for programming modes or
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
429 `backward-paragraph' for textual modes (i.e., the mode-dependent function is
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
430 known to move outside a syntactic block). If nil, the beginning of the buffer
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
431 is used as a position outside of a syntactic block, 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
432
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
433 These item elements are used by Font Lock mode to set the variables
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
434 `font-lock-keywords', `font-lock-keywords-only',
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
435 `font-lock-keywords-case-fold-search', `font-lock-syntax-table' and
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
436 `font-lock-beginning-of-syntax-function', respectively.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
437
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
438 Further item elements are alists of the form (VARIABLE . VALUE) and are in no
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
439 particular order. Each VARIABLE is made buffer-local before set to VALUE.
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
440
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
441 Currently, appropriate variables include `font-lock-mark-block-function'.
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
442 If this is non-nil, it should be a function with no args used to mark any
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
443 enclosing block of text, for fontification via \\[font-lock-fontify-block].
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
444 Typical values are `mark-defun' for programming modes or `mark-paragraph' for
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
445 textual modes (i.e., the mode-dependent function is known to put point and mark
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
446 around a text block relevant to that mode).
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
447
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
448 Other variables include those for buffer-specialised fontification functions,
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
449 `font-lock-fontify-buffer-function', `font-lock-unfontify-buffer-function',
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
450 `font-lock-fontify-region-function', `font-lock-unfontify-region-function',
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
451 `font-lock-comment-start-regexp', `font-lock-inhibit-thing-lock' and
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
452 `font-lock-maximum-size'.")
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
453
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
454 (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
455 "*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
456 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
457
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
458 (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
459 "*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
460 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
461
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 (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
463 "*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
464 This is normally set via `font-lock-defaults'.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465
8457
c0492d7043b2 (font-lock-syntax-table): New syntax table.
Richard M. Stallman <rms@gnu.org>
parents: 7915
diff changeset
466 (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
467 "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
468 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
469 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
470
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
471 ;; 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
472 ;; `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
473 (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
474 "*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
475 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
476 enclosing syntactic block.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
477 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
478 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
479
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
480 (defvar font-lock-mark-block-function nil
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
481 "*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
482 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
483 enclosing textual block and mark at the end.
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
484 This is normally set via `font-lock-defaults'.")
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
485
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
486 (defvar font-lock-comment-start-regexp nil
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
487 "*Regexp to match the start of a comment.
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 This need not discriminate between genuine comments and quoted comment
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
489 characters or comment characters within strings.
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
490 If nil, `comment-start-skip' is used instead; see that variable for more info.
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
491 This is normally set via `font-lock-defaults'.")
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
492
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
493 (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
494 "Function to use for fontifying the buffer.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
495 This is normally set via `font-lock-defaults'.")
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
496
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
497 (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
498 "Function to use for unfontifying the buffer.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
499 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
500 This is normally set via `font-lock-defaults'.")
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
501
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
502 (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
503 "Function to use for fontifying a region.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
504 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
505 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
506 This is normally set via `font-lock-defaults'.")
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
507
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
508 (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
509 "Function to use for unfontifying a region.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
510 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
511 This is normally set via `font-lock-defaults'.")
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
512
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
513 (defvar font-lock-inhibit-thing-lock nil
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
514 "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
515 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
516 This is normally set via `font-lock-defaults'.")
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
517
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
518 (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
519 (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
520
73ce8261c2ce Added font-lock-maximum-decoration; use it to set lisp-font-lock-keywords, and
Simon Marshall <simon@gnu.org>
parents: 10545
diff changeset
521 ;;;###autoload
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 (defvar font-lock-mode-hook nil
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 "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
524
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
525 ;; Font Lock mode.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
526
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
527 (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
528 ;;
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
529 ;; 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
530 (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
531 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
532 ;; 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
533 ;; 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
534 (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
535 "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
536 (` (let* ((,@ (append varlist
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
537 '((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
538 (inhibit-read-only t) (buffer-undo-list 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
539 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
540 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
541 (,@ 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
542 (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
543 (set-buffer-modified-p 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
544 (put 'save-buffer-state 'lisp-indent-function 1))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
545
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
546 ;;;###autoload
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
547 (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
548 "Toggle Font Lock mode.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
549 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
550
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
551 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
552
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
553 - Comments are displayed in `font-lock-comment-face';
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
554 - Strings are displayed in `font-lock-string-face';
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
555 - 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
556 value of the variable `font-lock-keywords'.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
557
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
558 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
559 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
560
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
561 (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
562
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
563 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
564 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
565 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
566
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
567 (global-font-lock-mode t)
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
568
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
569 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
570 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
571 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
572 `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
573 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
574 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
575
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
576 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
577 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
578
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
579 (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
580 (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
581
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
582 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
583 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
584 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
585
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
586 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
587 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
588
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
589 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
590 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
591 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
592
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
593 The default Font Lock mode faces and their attributes are defined in the
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
594 variable `font-lock-face-attributes', and Font Lock mode default settings in
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
595 the variable `font-lock-defaults-alist'. You can set your own default settings
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
596 for some mode, by setting a buffer local value for `font-lock-defaults', via
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
597 its mode hook."
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
598 (interactive "P")
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
599 ;; 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
600 ;; 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
601 (let ((on-p (and (not noninteractive)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
602 (not (eq (aref (buffer-name) 0) ?\ ))
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
603 (if arg
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
604 (> (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
605 (not font-lock-mode)))))
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
606 (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
607 ;; Turn on Font Lock mode.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
608 (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
609 (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
610 (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
611 (font-lock-set-defaults)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
612 (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
613 (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
614 ;; 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
615 (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
616 (cond (font-lock-fontified
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
617 nil)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
618 ((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
619 (font-lock-fontify-buffer))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
620 (font-lock-verbose
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
621 (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
622 ;; 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
623 (unless on-p
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
624 (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
625 (font-lock-unfontify-buffer)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
626 (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
627 (font-lock-unset-defaults))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
628 (force-mode-line-update)))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
629
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
630 ;;;###autoload
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
631 (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
632 "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
633 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
634 (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
635 (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
636
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
637 ;;;###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
638 (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
639 "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
640 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
641 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
642 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
643 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
644 If optional argument APPEND is `set', they are used to replace the current
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
645 highlighting list. If APPEND has any other value, e.g., t, they are added at
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
646 the end 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
647
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
648 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
649
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
650 (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
651 '((\"\\\\\\=<\\\\(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
652 (\"\\\\\\=<\\\\(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
653
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
654 adds two fontification patterns for C mode, to fontify `FIXME:' words, even in
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
655 comments, and to fontify `and', `or' and `not' words as 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
656 (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
657 ;; 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
658 ;; `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
659 (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
660 (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
661 (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
662 (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
663 (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
664 ;; 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
665 (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
666 (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
667 (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
668 (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
669 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
670 (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
671 (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
672 (append keywords old))))))))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
673
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
674 ;; Global Font Lock mode.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
675 ;;
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
676 ;; 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
677 ;; 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
678 ;; 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
679 ;; 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
680 ;; 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
681 ;; 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
682 ;; 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
683
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
684 ;; Implementation.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
685 ;;
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
686 ;; 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
687 ;; 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
688 ;; 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
689 ;; 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
690 ;; 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
691 ;; 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
692 ;; 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
693 ;; 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
694 ;; `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
695 ;; `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
696 ;; 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
697 ;; 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
698 ;; 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
699 ;;
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
700 ;; 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
701 ;; 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
702 ;; 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
703 ;; 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
704 ;; 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
705 ;; 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
706 ;;
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
707 ;; 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
708 ;; 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
709 ;; 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
710 ;; 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
711 ;; come up with another solution?
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
712
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
713 ;; User interface.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
714 ;;
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
715 ;; 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
716 ;; 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
717 ;; 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
718 ;; 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
719 ;;
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
720 ;; 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
721 ;; 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
722 ;; (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
723 ;; 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
724 ;; 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
725 ;; 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
726
14780
1d10e4a2fb51 Treat font-lock-keywords of (t) the same as nil.
Simon Marshall <simon@gnu.org>
parents: 14778
diff changeset
727 (defvar font-lock-buffers nil) ; For remembering buffers.
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
728 (defvar global-font-lock-mode nil)
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
729
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
730 ;;;###autoload
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
731 (defvar font-lock-global-modes t
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
732 "*Modes for which Font Lock mode is automagically turned on.
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
733 Global Font Lock mode is controlled by the `global-font-lock-mode' command.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
734 If nil, means no modes have Font Lock mode automatically turned on.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
735 If t, all modes that support Font Lock mode have it automatically turned on.
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
736 If a list, it should be a list of `major-mode' symbol names for which Font Lock
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
737 mode should be automatically turned on. The sense of the list is negated if it
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
738 begins with `not'. For example:
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
739 (c-mode c++-mode)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
740 means that Font Lock mode is turned on for buffers in C and C++ modes only.")
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
741
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
742 ;;;###autoload
14708
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
743 (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
744 "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
745 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
746 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
747 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
748
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
749 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
750 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
751 (interactive "P\np")
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
752 (let ((off-p (if arg
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
753 (<= (prefix-numeric-value arg) 0)
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
754 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
755 (if off-p
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
756 (remove-hook 'find-file-hooks '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
757 (add-hook 'find-file-hooks 'turn-on-font-lock-if-enabled)
14708
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
758 (add-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
759 (setq font-lock-buffers (buffer-list)))
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
760 (when message
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
761 (message "Global Font Lock mode is now %s." (if off-p "OFF" "ON")))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
762 (setq global-font-lock-mode (not off-p))))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
763
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
764 (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
765 ;; 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
766 (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
767 (font-lock-mode))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
768 ;; 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
769 ;; 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
770 ;; 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
771 ;; 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
772 (when global-font-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
773 (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
774 (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
775
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
776 (defun turn-on-font-lock-if-enabled ()
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
777 ;; 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
778 ;; 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
779 ;; 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
780 (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
781 (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
782 (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
783 (save-excursion
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
784 (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
785 (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
786 (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
787 (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
788 (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
789 (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
790 (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
791 (let (inhibit-quit)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
792 (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
793 (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
794
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
795 (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
796
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
797 ;; End of Global Font Lock mode.
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
798
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
799 ;; Font Lock Support mode.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
800 ;;
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
801 ;; 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
802 ;; 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
803 ;; 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
804 ;; `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
805 ;; themselves.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
806
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
807 ;;;###autoload
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
808 (defvar font-lock-support-mode nil
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
809 "*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
810 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
811 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
812 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
813 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
814 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
815 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
816 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
817 ((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
818 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
819 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
820
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
821 The value of this variable is used when Font Lock mode is turned on.")
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
822
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
823 (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
824 (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
825
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
826 (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
827 (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
828 (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
829 (fast-lock-mode t))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
830 ((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
831 (lazy-lock-mode t)))))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
832
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
833 (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
834 (cond (fast-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
835 (fast-lock-mode nil))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
836 (lazy-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
837 (lazy-lock-mode nil))))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
838
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
839 (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
840 (cond (fast-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
841 (fast-lock-after-fontify-buffer))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
842 (lazy-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
843 (lazy-lock-after-fontify-buffer))))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
844
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
845 (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
846 (cond (fast-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
847 (fast-lock-after-unfontify-buffer))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
848 (lazy-lock-mode
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
849 (lazy-lock-after-unfontify-buffer))))
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
850
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
851 ;; End of Font Lock Support mode.
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
852
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
853 ;; Fontification functions.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
854
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
855 ;; 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
856 ;; 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
857 ;; 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
858 ;; 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
859 ;; 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
860 ;; 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
861 ;; 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
862 ;; 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
863 ;; 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
864 ;; 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
865 ;;
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
866 ;; 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
867 ;; 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
868 ;; 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
869 ;; 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
870 ;; 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
871 ;; 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
872 ;; 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
873 ;;
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
874 ;; 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
875 ;; 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
876 ;; 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
877 ;; 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
878 ;; 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
879 ;;
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
880 ;; 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
881 ;; 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
882 ;; is not flexible enough for a particular major mode. For example, perhaps
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
883 ;; comments are just too hairy for `font-lock-fontify-syntactically-region' 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
884 ;; `font-lock-comment-start-regexp' to cope with. You need to write your own
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
885 ;; version of that function, e.g., `hairy-fontify-syntactically-region', 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
886 ;; make your own version of `hairy-fontify-region' call it before calling
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
887 ;; `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
888 ;; 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
889 ;; would call your region fontification function instead of its own. 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
890 ;; example, TeX modes could fontify {\foo ...} and \bar{...} etc. multi-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
891 ;; 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
892 ;; 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
893
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
894 ;;;###autoload
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
895 (defun font-lock-fontify-buffer ()
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
896 "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
897 (interactive)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
898 (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
899 (funcall font-lock-fontify-buffer-function)))
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
900
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
901 (defun font-lock-unfontify-buffer ()
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
902 (funcall font-lock-unfontify-buffer-function))
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
903
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
904 (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
905 (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
906
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
907 (defun font-lock-unfontify-region (beg end)
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
908 (funcall font-lock-unfontify-region-function beg end))
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
909
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
910 (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
911 (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
912 (> (buffer-size) font-lock-verbose)
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
913 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
914 (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
915 (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
916 ;; 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
917 (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
918 (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
919 ;; 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
920 (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
921 (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
922 (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
923 (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
924 (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
925 (font-lock-fontify-region (point-min) (point-max) verbose)
14374
e2423983be05 Support for local fontification.
Simon Marshall <simon@gnu.org>
parents: 14365
diff changeset
926 (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
927 (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
928 ;; 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
929 (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
930 ;; 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
931 (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
932 (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
933 (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
934 (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
935
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
936 (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
937 ;; 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
938 (save-restriction
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
939 (widen)
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
940 (font-lock-unfontify-region (point-min) (point-max))
14374
e2423983be05 Support for local fontification.
Simon Marshall <simon@gnu.org>
parents: 14365
diff changeset
941 (font-lock-after-unfontify-buffer)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
942 (setq font-lock-fontified nil)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
943
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
944 (defun font-lock-default-fontify-region (beg end loudly)
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
945 (save-buffer-state ((old-syntax-table (syntax-table)))
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
946 (unwind-protect
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
947 (save-restriction
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
948 (widen)
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
949 ;; 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
950 (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
951 (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
952 ;; 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
953 (font-lock-unfontify-region beg end)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
954 (unless font-lock-keywords-only
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
955 (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
956 (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
957 ;; 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
958 (set-syntax-table old-syntax-table))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
959
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
960 ;; 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
961 ; ;; 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
962 ; (or (and (not font-lock-keywords-only)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
963 ; (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
964 ; font-lock-cache-state)))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
965 ; (or (nth 4 state) (nth 7 state))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
966 ; (font-lock-fontify-keywords-region beg end))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
967
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
968 (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
969 (save-buffer-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
970 (remove-text-properties beg end '(face nil))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
971
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
972 ;; 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
973 (defun font-lock-after-change-function (beg end old-len)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
974 (save-excursion
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
975 (save-match-data
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
976 ;; Rescan between start of lines enclosing the region.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
977 (font-lock-fontify-region
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
978 (progn (goto-char beg) (beginning-of-line) (point))
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
979 (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
980
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
981 (defun font-lock-fontify-block (&optional arg)
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
982 "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
983 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
984 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
985 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
986 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
987 delimit the region to fontify."
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
988 (interactive "P")
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
989 (let (font-lock-beginning-of-syntax-function deactivate-mark)
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
990 ;; 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
991 (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
992 (save-excursion
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
993 (save-match-data
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
994 (condition-case error-data
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
995 (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
996 (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
997 (font-lock-fontify-region
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
998 (save-excursion (forward-line (- lines)) (point))
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
999 (save-excursion (forward-line lines) (point))))
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1000 (funcall font-lock-mark-block-function)
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1001 (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
1002 ((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
1003
14778
af95abc39d75 (font-lock-fontify-block): Use facemenu-keymap to make the binding.
Richard M. Stallman <rms@gnu.org>
parents: 14735
diff changeset
1004 (define-key facemenu-keymap "\M-g" 'font-lock-fontify-block)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1005
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1006 ;; Syntactic fontification functions.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1007
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1008 ;; These record the parse state at a particular position, always the start of a
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1009 ;; line. Used to make `font-lock-fontify-syntactically-region' faster.
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
1010 ;; Previously, `font-lock-cache-position' was just a buffer position. However,
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1011 ;; under certain situations, this occasionally resulted in mis-fontification.
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1012 ;; I think the "situations" were deletion with Lazy Lock mode's deferral. sm.
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1013 (defvar font-lock-cache-state 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
1014 (defvar font-lock-cache-position nil)
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1015
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1016 (defun font-lock-fontify-syntactically-region (start end &optional loudly)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1017 "Put proper face on each string and comment between START and END.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1018 START should be at the beginning of a line."
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
1019 (let ((synstart (cond (font-lock-comment-start-regexp
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
1020 (concat "\\s\"\\|" font-lock-comment-start-regexp))
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
1021 (comment-start-skip
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
1022 (concat "\\s\"\\|" comment-start-skip))
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
1023 (t
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
1024 "\\s\"")))
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
1025 (cache (marker-position font-lock-cache-position))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1026 state prev here beg)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1027 (if loudly (message "Fontifying %s... (syntactically...)" (buffer-name)))
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1028 (goto-char start)
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1029 ;;
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1030 ;; Find the state at the `beginning-of-line' before `start'.
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
1031 (if (eq start cache)
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1032 ;; Use the cache for the state of `start'.
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1033 (setq state font-lock-cache-state)
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1034 ;; Find the state of `start'.
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1035 (if (null font-lock-beginning-of-syntax-function)
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1036 ;; Use the state at the previous cache position, if any, or
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1037 ;; otherwise calculate from `point-min'.
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
1038 (if (or (null cache) (< start cache))
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1039 (setq state (parse-partial-sexp (point-min) start))
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
1040 (setq state (parse-partial-sexp cache start 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
1041 font-lock-cache-state)))
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1042 ;; Call the function to move outside any syntactic block.
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1043 (funcall font-lock-beginning-of-syntax-function)
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1044 (setq state (parse-partial-sexp (point) start)))
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1045 ;; Cache the state and position of `start'.
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
1046 (setq font-lock-cache-state 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
1047 (set-marker font-lock-cache-position start))
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1048 ;;
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1049 ;; If the region starts inside a string, show the extent of it.
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
1050 (when (nth 3 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
1051 (setq here (point))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1052 (while (and (re-search-forward "\\s\"" end 'move)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1053 ;; Verify the state so we don't get fooled by quoting.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1054 (nth 3 (parse-partial-sexp here (point) nil nil 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
1055 (put-text-property here (point) 'face font-lock-string-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
1056 (setq state (parse-partial-sexp here (point) nil nil state)))
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1057 ;;
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1058 ;; Likewise for a comment.
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
1059 (when (or (nth 4 state) (nth 7 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
1060 (let ((comstart (cond (font-lock-comment-start-regexp
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1061 font-lock-comment-start-regexp)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1062 (comment-start-skip
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1063 (concat "\\s<\\|" comment-start-skip))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1064 (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
1065 "\\s<")))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1066 (count 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
1067 (setq here (point))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1068 (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
1069 (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
1070 (narrow-to-region (point-min) end)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1071 ;; Go back to the real start of the comment.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1072 (re-search-backward comstart)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1073 (forward-comment 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
1074 ;; If there is more than one comment type, then the previous
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1075 ;; comment start might not be the real comment start.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1076 ;; For example, in C++ code, `here' might be on a line following
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1077 ;; a // comment that is actually within a /* */ comment.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1078 (while (<= (point) here)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1079 (goto-char here)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1080 (re-search-backward comstart nil nil (incf count))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 (forward-comment 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
1082 ;; Go back to the real end of the comment.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1083 (skip-chars-backward " \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
1084 (error (goto-char end)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1085 (put-text-property here (point) 'face font-lock-comment-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
1086 (setq state (parse-partial-sexp here (point) nil nil state))))
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1087 ;;
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1088 ;; Find each interesting place between here and `end'.
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1089 (while (and (< (point) 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
1090 (setq prev (point))
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1091 (re-search-forward synstart end 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
1092 (setq state (parse-partial-sexp prev (point) nil nil 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
1093 (cond ((nth 3 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
1094 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1095 ;; Found a real string start.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1096 (setq here (point) beg (match-beginning 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
1097 (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
1098 (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
1099 (narrow-to-region (point-min) end)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 (goto-char (scan-sexps beg 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
1101 (error (goto-char end)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 (put-text-property beg (point) 'face font-lock-string-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
1103 (setq state (parse-partial-sexp here (point) nil nil 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
1104 ((or (nth 4 state) (nth 7 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
1105 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1106 ;; Found a real comment start.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1107 (setq here (point) beg (or (match-end 1) (match-beginning 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
1108 (goto-char beg)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 (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
1110 (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
1111 (narrow-to-region (point-min) end)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1112 (forward-comment 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
1113 (skip-chars-backward " \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
1114 (error (goto-char end)))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1115 (put-text-property beg (point) 'face font-lock-comment-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
1116 (setq state (parse-partial-sexp here (point) nil nil state)))))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1117
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1118 ;;; Additional text property functions.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1119
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1120 ;; 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
1121 ;; 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
1122 ;; 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
1123 ;; 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
1124 ;; in Lisp below and commented out. sm.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1125
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1126 (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
1127 "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
1128 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
1129 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
1130 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
1131 (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
1132 (while (/= start end)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1133 (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
1134 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
1135 (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
1136 (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
1137 object)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1138 (setq start next))))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1139
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1140 (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
1141 "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
1142 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
1143 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
1144 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
1145 (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
1146 (while (/= start end)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1147 (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
1148 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
1149 (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
1150 (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
1151 object)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1152 (setq start next))))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1153
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1154 (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
1155 "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
1156 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
1157 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
1158 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
1159 (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
1160 (while start
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1161 (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
1162 (put-text-property start next prop value object)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1163 (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
1164
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1165 ;; 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
1166 ;; 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
1167 ;(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
1168 ; "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
1169 ;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
1170 ;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
1171 ;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
1172 ; (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
1173
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1174 ;; 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
1175 ;; `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
1176 ;(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
1177 ; "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
1178 ;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
1179 ;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
1180 ;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
1181 ; (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
1182 ; (while start
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1183 ; (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
1184 ; 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
1185 ; (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
1186 ; (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
1187 ; ((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
1188 ; (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
1189 ; (cond ((null new)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1190 ; (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
1191 ; ((= (length new) 1)
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 (car new) object))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1193 ; (t
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1194 ; (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
1195 ; (setq start (text-property-not-all next end prop nil object)))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1196
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1197 ;;; Regexp fontification functions.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1198
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1199 (defsubst font-lock-apply-highlight (highlight)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1200 "Apply HIGHLIGHT following a match.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1201 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
1202 (let* ((match (nth 0 highlight))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1203 (start (match-beginning match)) (end (match-end match))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1204 (override (nth 2 highlight)))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1205 (cond ((not start)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1206 ;; 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
1207 (or (nth 3 highlight)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1208 (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
1209 ((not override)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1210 ;; Cannot override existing fontification.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1211 (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
1212 (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
1213 ((eq override t)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1214 ;; Override existing fontification.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1215 (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
1216 ((eq override 'prepend)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1217 ;; 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
1218 (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
1219 ((eq override 'append)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1220 ;; 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
1221 (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
1222 ((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
1223 ;; Keep existing fontification.
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1224 (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
1225
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1226 (defsubst font-lock-fontify-anchored-keywords (keywords limit)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1227 "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
1228 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
1229 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
1230 (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
1231 ;; 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
1232 (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
1233 ;; 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
1234 (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
1235 (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
1236 (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
1237 (save-match-data
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1238 ;; Find an occurrence of `matcher' before `limit'.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1239 (while (if (stringp matcher)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1240 (re-search-forward matcher limit t)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1241 (funcall matcher limit))
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1242 ;; 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
1243 (setq highlights lowdarks)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1244 (while highlights
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1245 (font-lock-apply-highlight (car highlights))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1246 (setq highlights (cdr highlights)))))
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1247 ;; Evaluate POST-MATCH-FORM.
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1248 (eval (nth 2 keywords))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1249
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1250 (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
1251 "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
1252 START should be at the beginning of a line."
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1253 (let ((case-fold-search font-lock-keywords-case-fold-search)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1254 (keywords (cdr (if (eq (car-safe font-lock-keywords) t)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1255 font-lock-keywords
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1256 (font-lock-compile-keywords))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1257 (bufname (buffer-name)) (count 0)
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1258 keyword matcher highlights)
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1259 ;;
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1260 ;; 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
1261 (while keywords
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1262 (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
1263 (make-string (incf count) ?.)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1264 ;;
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1265 ;; 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
1266 (setq keyword (car keywords) matcher (car keyword))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1267 (goto-char start)
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1268 (while (if (stringp matcher)
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1269 (re-search-forward matcher end t)
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1270 (funcall matcher end))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1271 ;; 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
1272 ;; 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
1273 (setq highlights (cdr keyword))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1274 (while highlights
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1275 (if (numberp (car (car highlights)))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1276 (font-lock-apply-highlight (car highlights))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1277 (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
1278 (setq highlights (cdr highlights))))
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1279 (setq keywords (cdr keywords)))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1280
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1281 ;; Various functions.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1282
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1283 (defun font-lock-compile-keywords (&optional keywords)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1284 ;; Compile `font-lock-keywords' into the form (t KEYWORD ...) where KEYWORD
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1285 ;; is the (MATCHER HIGHLIGHT ...) shown in the variable's doc string.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1286 (let ((keywords (or keywords font-lock-keywords)))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1287 (setq font-lock-keywords
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1288 (if (eq (car-safe keywords) t)
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1289 keywords
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1290 (cons t (mapcar 'font-lock-compile-keyword keywords))))))
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1291
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1292 (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
1293 (cond ((nlistp keyword) ; MATCHER
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1294 (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
1295 ((eq (car keyword) 'eval) ; (eval . FORM)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1296 (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
1297 ((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
1298 ;; 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
1299 (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
1300 (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
1301 (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
1302 ((numberp (cdr keyword)) ; (MATCHER . MATCH)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1303 (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
1304 ((symbolp (cdr keyword)) ; (MATCHER . FACENAME)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1305 (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
1306 ((nlistp (nth 1 keyword)) ; (MATCHER . HIGHLIGHT)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1307 (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
1308 (t ; (MATCHER HIGHLIGHT ...)
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1309 keyword)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1310
14708
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1311 (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
1312 ;; 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
1313 ;; 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
1314 (if (consp alist)
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1315 (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
1316 alist))
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1317
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1318 (defun font-lock-choose-keywords (keywords level)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1319 ;; 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
1320 ;; 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
1321 (cond ((symbolp keywords)
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1322 keywords)
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1323 ((numberp level)
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1324 (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
1325 ((eq level t)
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1326 (car (reverse keywords)))
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1327 (t
da278f255507 Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents: 14516
diff changeset
1328 (car keywords))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1329
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
1330 (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
1331
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1332 (defun font-lock-set-defaults ()
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1333 "Set fontification defaults appropriately for this mode.
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1334 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
1335 `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
1336 ;; Set face defaults.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1337 (font-lock-make-faces)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1338 ;; Set fontification defaults.
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1339 (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
1340 ;; 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
1341 (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
1342 (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
1343 (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
1344 (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
1345 (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
1346 (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
1347 (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
1348 (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
1349 (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
1350 (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
1351 ;; 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
1352 (setq font-lock-keywords (if (fboundp 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
1353 (funcall 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
1354 (eval 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
1355 ;; 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
1356 (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
1357 (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
1358 (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
1359 ;; 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
1360 (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
1361 (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
1362 ;; 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
1363 (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
1364 (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
1365 ;; 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
1366 (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
1367 (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
1368 (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
1369 (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
1370 (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
1371 ;; 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
1372 (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
1373 (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
1374 (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
1375 (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
1376 (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
1377 (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
1378 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
1379 (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
1380 (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
1381 ;; 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
1382 (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
1383 (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
1384 (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
1385 ;; 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
1386 (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
1387 (while 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
1388 (set (make-local-variable (car (car alist))) (cdr (car 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
1389 (setq alist (cdr alist)))))))
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1390
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1391 (defun font-lock-unset-defaults ()
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1392 "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
1393 (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
1394 font-lock-keywords nil
14365
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1395 font-lock-keywords-only nil
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1396 font-lock-keywords-case-fold-search nil
ef148b168aad Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents: 14266
diff changeset
1397 font-lock-syntax-table nil
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1398 font-lock-beginning-of-syntax-function nil)
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1399 (let* ((defaults (or font-lock-defaults
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1400 (cdr (assq major-mode font-lock-defaults-alist))))
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1401 (alist (nthcdr 5 defaults)))
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1402 (while alist
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1403 (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
1404 (setq alist (cdr alist)))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1405
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1406 ;; Colour etc. support.
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1407
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1408 ;; This section of code is crying out for revision. Come on down, custom.el?
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1409
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1410 ;; To begin with, `display-type' and `background-mode' are `frame-parameters'
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1411 ;; so we don't have to calculate them here anymore. But all the face stuff
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1412 ;; should be frame-local (and thus display-local) anyway. Because we're not
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1413 ;; sure what support Emacs is going to have for general frame-local face
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1414 ;; attributes, we leave this section of code as it is. For now. sm.
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1415
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1416 (defvar font-lock-display-type nil
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1417 "A symbol indicating the display Emacs is running under.
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1418 The symbol should be one of `color', `grayscale' or `mono'.
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1419 If Emacs guesses this display attribute wrongly, either set this variable in
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1420 your `~/.emacs' or set the resource `Emacs.displayType' in your `~/.Xdefaults'.
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1421 See also `font-lock-background-mode' and `font-lock-face-attributes'.")
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1422
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1423 (defvar font-lock-background-mode nil
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1424 "A symbol indicating the Emacs background brightness.
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1425 The symbol should be one of `light' or `dark'.
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1426 If Emacs guesses this frame attribute wrongly, either set this variable in
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1427 your `~/.emacs' or set the resource `Emacs.backgroundMode' in your
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1428 `~/.Xdefaults'.
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1429 See also `font-lock-display-type' and `font-lock-face-attributes'.")
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1430
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1431 (defvar font-lock-face-attributes nil
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1432 "A list of default attributes to use for face attributes.
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1433 Each element of the list should be of the form
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1434
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1435 (FACE FOREGROUND BACKGROUND BOLD-P ITALIC-P UNDERLINE-P)
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1436
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
1437 where FACE could be one of the face symbols `font-lock-comment-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
1438 `font-lock-string-face', `font-lock-keyword-face', `font-lock-builtin-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
1439 `font-lock-type-face', `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
1440 `font-lock-variable-name-face', `font-lock-reference-face' and
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1441 `font-lock-warning-face', or any other face symbols and attributes may 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
1442 specified here and used in `font-lock-keywords'.
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1443
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1444 Subsequent element items should be the attributes for the corresponding
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1445 Font Lock mode faces. Attributes FOREGROUND and BACKGROUND should be strings
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1446 \(default if nil), while BOLD-P, ITALIC-P, and UNDERLINE-P should specify the
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1447 corresponding face attributes (yes if non-nil). For example:
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1448
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1449 (setq font-lock-face-attributes '((font-lock-warning-face \"HotPink\" nil t t)
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1450 (font-lock-comment-face \"Red\")))
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1451
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1452 in your ~/.emacs makes a garish bold-italic warning face and red comment face.
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1453
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1454 Emacs uses default attributes based on display type and background brightness.
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1455 See variables `font-lock-display-type' and `font-lock-background-mode'.
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1456
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1457 Resources can be used to over-ride these face attributes. For example, the
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1458 resource `Emacs.font-lock-comment-face.attributeUnderline' can be used to
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1459 specify the UNDERLINE-P attribute for face `font-lock-comment-face'.")
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1460
12268
f22803cfdc5c Change so font-lock-make-faces doesn't stomp all over user Font Lock faces.
Simon Marshall <simon@gnu.org>
parents: 12047
diff changeset
1461 (defun font-lock-make-faces (&optional override)
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1462 "Make faces from `font-lock-face-attributes'.
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1463 A default list is used if this is nil.
12268
f22803cfdc5c Change so font-lock-make-faces doesn't stomp all over user Font Lock faces.
Simon Marshall <simon@gnu.org>
parents: 12047
diff changeset
1464 If optional OVERRIDE is non-nil, faces that already exist are reset.
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1465 See `font-lock-make-face' and `list-faces-display'."
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1466 ;; We don't need to `setq' any of these variables, but the user can see what
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1467 ;; is being used if we do.
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
1468 (unless font-lock-display-type
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1469 (setq font-lock-display-type
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1470 (let ((display-resource (x-get-resource ".displayType" "DisplayType")))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1471 (cond (display-resource (intern (downcase display-resource)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1472 ((x-display-color-p) 'color)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1473 ((x-display-grayscale-p) 'grayscale)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1474 (t 'mono)))))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1475 (unless font-lock-background-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
1476 (setq font-lock-background-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
1477 (let ((bg-resource (x-get-resource ".backgroundMode" "BackgroundMode"))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1478 (params (frame-parameters)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1479 (cond (bg-resource (intern (downcase bg-resource)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1480 ((eq system-type 'ms-dos)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1481 (if (string-match "light" (cdr (assq 'background-color params)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1482 'light
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1483 'dark))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1484 ((< (apply '+ (x-color-values
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1485 (cdr (assq 'background-color params))))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1486 (* (apply '+ (x-color-values "white")) .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
1487 'dark)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1488 (t 'light)))))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1489 (let ((face-attributes
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1490 (let ((light-bg (eq font-lock-background-mode 'light)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1491 (cond ((memq font-lock-display-type '(mono monochrome))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1492 ;; Emacs 19.25's 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
1493 ;;'((font-lock-comment-face nil nil nil t 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
1494 ;; (font-lock-string-face nil nil nil 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
1495 ;; (font-lock-keyword-face nil nil t nil 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
1496 ;; (font-lock-function-name-face nil nil t t 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
1497 ;; (font-lock-type-face nil nil nil t 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
1498 (list '(font-lock-comment-face nil nil t t 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
1499 '(font-lock-string-face nil nil nil t 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
1500 '(font-lock-keyword-face nil nil t nil 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
1501 '(font-lock-builtin-face nil nil t nil 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
1502 (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
1503 '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
1504 (cdr (assq 'background-color (frame-parameters)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1505 (cdr (assq 'foreground-color (frame-parameters)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 t nil 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
1507 '(font-lock-variable-name-face nil nil t t 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
1508 '(font-lock-type-face nil nil t 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
1509 '(font-lock-reference-face nil nil t 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
1510 (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
1511 'font-lock-warning-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
1512 (cdr (assq 'background-color (frame-parameters)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1513 (cdr (assq 'foreground-color (frame-parameters)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1514 t nil 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
1515 ((memq font-lock-display-type '(grayscale greyscale
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1516 grayshade greyshade))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1517 (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
1518 (list 'font-lock-comment-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
1519 (if light-bg "DimGray" "LightGray") nil t t 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
1520 (list 'font-lock-string-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
1521 (if light-bg "DimGray" "LightGray") nil nil t 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
1522 (list '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
1523 nil (if light-bg "LightGray" "DimGray") t nil 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
1524 (list 'font-lock-builtin-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
1525 nil (if light-bg "LightGray" "DimGray") t nil 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
1526 (list '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
1527 (cdr (assq 'background-color (frame-parameters)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1528 (cdr (assq 'foreground-color (frame-parameters)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1529 t nil 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
1530 (list '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
1531 nil (if light-bg "Gray90" "DimGray") t t 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
1532 (list '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
1533 nil (if light-bg "Gray80" "DimGray") t nil 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
1534 (list 'font-lock-reference-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
1535 nil (if light-bg "LightGray" "Gray50") t 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
1536 (list 'font-lock-warning-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
1537 (cdr (assq 'background-color (frame-parameters)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1538 (cdr (assq 'foreground-color (frame-parameters)))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1539 t nil 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
1540 (light-bg ; light colour background
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1541 '((font-lock-comment-face "Firebrick")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1542 (font-lock-string-face "RosyBrown")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1543 (font-lock-keyword-face "Purple")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1544 (font-lock-builtin-face "Orchid")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1545 (font-lock-function-name-face "Blue")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1546 (font-lock-variable-name-face "DarkGoldenrod")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1547 (font-lock-type-face "DarkOliveGreen")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1548 (font-lock-reference-face "CadetBlue")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1549 (font-lock-warning-face "Red" nil t nil 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
1550 (t ; dark colour background
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1551 '((font-lock-comment-face "OrangeRed")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1552 (font-lock-string-face "LightSalmon")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1553 (font-lock-keyword-face "Cyan")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1554 (font-lock-builtin-face "LightSteelBlue")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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-function-name-face "LightSkyBlue")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 (font-lock-variable-name-face "LightGoldenrod")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1557 (font-lock-type-face "PaleGreen")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1558 (font-lock-reference-face "Aquamarine")
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1559 (font-lock-warning-face "Pink" nil t nil 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
1560 (while face-attributes
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 (unless (assq (car (car face-attributes)) font-lock-face-attributes)
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 (push (car face-attributes) font-lock-face-attributes))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 face-attributes (cdr face-attributes))))
12268
f22803cfdc5c Change so font-lock-make-faces doesn't stomp all over user Font Lock faces.
Simon Marshall <simon@gnu.org>
parents: 12047
diff changeset
1564 ;; Now make the faces if we have to.
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
1565 (mapcar (function
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
1566 (lambda (face-attributes)
12268
f22803cfdc5c Change so font-lock-make-faces doesn't stomp all over user Font Lock faces.
Simon Marshall <simon@gnu.org>
parents: 12047
diff changeset
1567 (let ((face (nth 0 face-attributes)))
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
1568 (cond (override
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
1569 ;; We can stomp all over it anyway. Get outta my face!
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
1570 (font-lock-make-face face-attributes))
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
1571 ((and (boundp face) (facep (symbol-value face)))
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
1572 ;; The variable exists and is already bound to a face.
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
1573 nil)
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
1574 ((facep face)
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
1575 ;; We already have a face so we bind the variable to it.
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
1576 (set face face))
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
1577 (t
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
1578 ;; No variable or no face.
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
1579 (font-lock-make-face face-attributes))))))
12268
f22803cfdc5c Change so font-lock-make-faces doesn't stomp all over user Font Lock faces.
Simon Marshall <simon@gnu.org>
parents: 12047
diff changeset
1580 font-lock-face-attributes))
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1581
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1582 (defun font-lock-make-face (face-attributes)
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1583 "Make a face from FACE-ATTRIBUTES.
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1584 FACE-ATTRIBUTES should be like an element `font-lock-face-attributes', so that
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1585 the face name is the first item in the list. A variable with the same name as
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1586 the face is also set; its value is the face name."
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1587 (let* ((face (nth 0 face-attributes))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1588 (face-name (symbol-name face))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1589 (set-p (function (lambda (face-name resource)
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1590 (x-get-resource (concat face-name ".attribute" resource)
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1591 (concat "Face.Attribute" resource)))))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1592 (on-p (function (lambda (face-name resource)
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1593 (let ((set (funcall set-p face-name resource)))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1594 (and set (member (downcase set) '("on" "true"))))))))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1595 (make-face face)
13440
e8cd2c9309c8 1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents: 13337
diff changeset
1596 (add-to-list 'facemenu-unlisted-faces face)
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1597 ;; Set attributes not set from X resources (and therefore `make-face').
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1598 (or (funcall set-p face-name "Foreground")
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1599 (condition-case nil
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1600 (set-face-foreground face (nth 1 face-attributes))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1601 (error nil)))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1602 (or (funcall set-p face-name "Background")
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1603 (condition-case nil
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1604 (set-face-background face (nth 2 face-attributes))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1605 (error nil)))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1606 (if (funcall set-p face-name "Bold")
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1607 (and (funcall on-p face-name "Bold") (make-face-bold face nil t))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1608 (and (nth 3 face-attributes) (make-face-bold face nil t)))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1609 (if (funcall set-p face-name "Italic")
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1610 (and (funcall on-p face-name "Italic") (make-face-italic face nil t))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1611 (and (nth 4 face-attributes) (make-face-italic face nil t)))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1612 (or (funcall set-p face-name "Underline")
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1613 (set-face-underline-p face (nth 5 face-attributes)))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1614 (set face face)))
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1615
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
1616 ;;; 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
1617
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
1618 ;; 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
1619 ;; 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
1620 ;; 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
1621 ;; 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
1622 ;; 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
1623 ;;
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
1624 ;; (define-key menu-bar-edit-menu [font-lock]
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
1625 ;; '("Syntax Highlighting" . 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
1626 ;;
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
1627 ;; 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
1628 ;; 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
1629 ;; 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
1630 ;; 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
1631
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
1632 ;;;;###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
1633 ;(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
1634 ; ;; 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
1635 ; (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
1636 ; ;; 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
1637 ; (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
1638 ; '("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
1639 ; (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
1640 ; '("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
1641 ; (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
1642 ; '("--"))
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
1643 ; (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
1644 ; '("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
1645 ; (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
1646 ; '("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
1647 ;
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
1648 ;;;;###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
1649 ;(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
1650 ; ;; 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
1651 ; ;; 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
1652 ; (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
1653 ; (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
1654 ; (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
1655 ; (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
1656 ;
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
1657 ;;; Put the appropriate symbol property values on now. See above.
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
1658 ;(put 'global-font-lock-mode 'menu-selected '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
1659 ;(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
1660 ;(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
1661 ;(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
1662 ;
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
1663 ;(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
1664 ;
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
1665 ;(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
1666 ; (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
1667 ; (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
1668 ; (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
1669 ; (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
1670 ; (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
1671 ; (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
1672 ;
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
1673 ;(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
1674 ; "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
1675 ;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
1676 ; (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
1677 ; ;; 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
1678 ; (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
1679 ; (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
1680 ; (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
1681 ;
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
1682 ;(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
1683 ; "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
1684 ;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
1685 ; (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
1686 ; ;; 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
1687 ; (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
1688 ; (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
1689 ; (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
1690 ;
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
1691 ;;; 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
1692 ;(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
1693 ; ;; 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
1694 ; ;; 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
1695 ; ;; (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
1696 ; (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
1697 ; (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
1698 ; (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
1699 ; (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
1700 ; (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
1701 ; (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
1702 ; (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
1703 ; (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
1704 ; ((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
1705 ; ;; 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
1706 ; (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
1707 ; (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
1708 ; (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
1709 ; (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
1710 ; (< 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
1711 ;
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
1712 ;;; 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
1713 ;(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
1714 ; ;; 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
1715 ; (setq font-lock-fontify-level nil))
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
1716
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1717 ;;; Various regexp information shared by several modes.
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1718 ;;; 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
1719
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
1720 ;; 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
1721 ;; 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
1722 ;; 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
1723
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
1724 (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
1725 "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
1726 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
1727 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
1728
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1729 The expected syntax of a declaration/definition item is `word', possibly ending
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1730 with optional whitespace and a `('. Everything following the item (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
1731 belonging to it) is expected to by skip-able by `scan-sexps', and items are
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1732 expected to be 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
1733
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
1734 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
1735 ^^^^ ^
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1736 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
1737
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
1738 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
1739 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
1740
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
1741 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
1742 (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
1743 (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
1744 (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
1745 (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
1746 ;; 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
1747 (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
1748 (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
1749 ;; 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
1750 (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
1751 (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
1752 (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
1753 (error 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
1754
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1755
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1756 (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
1757 (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
1758 (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
1759 ;; Anything not a variable or type declaration is fontified as a 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
1760 ;; It would be cleaner to allow preceding whitespace, but it would also 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
1761 ;; about five times slower.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1762 (list (concat "^(\\(def\\("
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1763 ;; 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
1764 "\\(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
1765 ;; Structure 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
1766 "\\(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
1767 ;; Everything else is a 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
1768 "\\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
1769 "\\)\\)\\>"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1770 ;; Any whitespace and declared object.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1771 "[ \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
1772 "\\(\\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
1773 '(1 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
1774 '(5 (cond ((match-beginning 3) 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
1775 ((match-beginning 4) 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
1776 (t 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
1777 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
1778 ))
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
1779 "Subdued level highlighting for Lisp modes.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1780
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1781 (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
1782 (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
1783 (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
1784 (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
1785 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1786 ;; Control structures. Common ELisp and CLisp forms combined.
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
1787 ; (make-regexp
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
1788 ; '("cond" "if" "while" "let\\*?" "prog[nv12*]?" "inline" "catch" "throw"
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
1789 ; "save-restriction" "save-excursion" "save-window-excursion"
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
1790 ; "save-selected-window" "save-match-data" "save-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
1791 ; "unwind-protect" "condition-case" "track-mouse" "dont-compile"
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
1792 ; "eval-after-load" "eval-and-compile" "eval-when-compile"
14468
e41a60d26291 Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents: 14374
diff changeset
1793 ; "when" "unless" "do" "flet" "labels" "return" "return-from"
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
1794 ; "with-output-to-temp-buffer" "with-timeout" "with-current-buffer"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1795 ; "with-temp-buffer" "with-temp-file"))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1796 (cons (concat "(\\("
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
1797 "c\\(atch\\|ond\\(\\|ition-case\\)\\)\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1798 "do\\(\\|nt-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
1799 "eval-\\(a\\(fter-load\\|nd-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
1800 "when-compile\\)\\|flet\\|i\\(f\\|nline\\)\\|"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1801 "l\\(abels\\|et\\*?\\)\\|prog[nv12*]?\\|"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1802 "return\\(\\|-from\\)\\|"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1803 "save-\\(current-buffer\\|excursion\\|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
1804 "restriction\\|selected-window\\|window-excursion\\)\\|"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1805 "t\\(hrow\\|rack-mouse\\)\\|un\\(less\\|wind-protect\\)\\|"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1806 "w\\(h\\(en\\|ile\\)\\|ith-\\(current-buffer\\|"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1807 "output-to-temp-buffer\\|"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1808 "t\\(emp-\\(buffer\\|file\\)\\|imeout\\)\\)\\)"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1809 "\\)\\>")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1810 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
1811 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1812 ;; Feature symbols as references.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1813 '("(\\(featurep\\|provide\\|require\\)\\>[ \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
1814 (1 font-lock-keyword-face) (2 font-lock-reference-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
1815 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1816 ;; Words inside \\[] tend to be for `substitute-command-keys'.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1817 '("\\\\\\\\\\[\\(\\sw+\\)]" 1 font-lock-reference-face prepend)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1818 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1819 ;; Words inside `' tend to be symbol 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
1820 '("`\\(\\sw\\sw+\\)'" 1 font-lock-reference-face prepend)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1821 ;;
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
1822 ;; CLisp `:' keywords as builtins.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1823 '("\\<:\\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
1824 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1825 ;; 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
1826 '("\\<\\&\\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
1827 )))
12385
c80966dc0b60 Specify in font-lock-defaults/font-lock-defaults-alist which keywords we can
Simon Marshall <simon@gnu.org>
parents: 12268
diff changeset
1828 "Gaudy level highlighting for Lisp modes.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1829
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
1830
12385
c80966dc0b60 Specify in font-lock-defaults/font-lock-defaults-alist which keywords we can
Simon Marshall <simon@gnu.org>
parents: 12268
diff changeset
1831 (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
1832 "Default expressions to highlight in Lisp modes.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1833
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1834
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
1835 (defvar scheme-font-lock-keywords
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1836 (eval-when-compile
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1837 (list
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1838 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1839 ;; 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
1840 ;; 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
1841 (list (concat "(\\(define\\("
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1842 ;; Function names.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1843 "\\(\\|-\\(generic\\(\\|-procedure\\)\\|method\\)\\)\\|"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1844 ;; 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
1845 "\\(-syntax\\)\\|"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1846 ;; 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
1847 "-class"
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1848 "\\)\\)\\>"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1849 ;; Any whitespace and declared object.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1850 "[ \t]*(?"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1851 "\\(\\sw+\\)?")
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1852 '(1 font-lock-keyword-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
1853 '(7 (cond ((match-beginning 3) font-lock-function-name-face)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1854 ((match-beginning 6) font-lock-variable-name-face)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1855 (t font-lock-type-face))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1856 nil t))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1857 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1858 ;; Control structures.
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
1859 ;(make-regexp '("begin" "call-with-current-continuation" "call/cc"
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
1860 ; "call-with-input-file" "call-with-output-file" "case" "cond"
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1861 ; "do" "else" "for-each" "if" "lambda"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1862 ; "let\\*?" "let-syntax" "letrec" "letrec-syntax"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1863 ; ;; Hannes Haug <hannes.haug@student.uni-tuebingen.de> wants:
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1864 ; "and" "or" "delay"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1865 ; ;; Stefan Monnier <stefan.monnier@epfl.ch> says don't bother:
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
1866 ; ;;"quasiquote" "quote" "unquote" "unquote-splicing"
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
1867 ; "map" "syntax" "syntax-rules"))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1868 (cons
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1869 (concat "(\\("
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1870 "and\\|begin\\|c\\(a\\(ll\\(-with-\\(current-continuation\\|"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1871 "input-file\\|output-file\\)\\|/cc\\)\\|se\\)\\|ond\\)\\|"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1872 "d\\(elay\\|o\\)\\|else\\|for-each\\|if\\|"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1873 "l\\(ambda\\|et\\(-syntax\\|\\*?\\|rec\\(\\|-syntax\\)\\)\\)\\|"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1874 "map\\|or\\|syntax\\(\\|-rules\\)"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1875 "\\)\\>") 1)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1876 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1877 ;; David Fox <fox@graphics.cs.nyu.edu> for SOS/STklos class specifiers.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1878 '("\\<<\\sw+>\\>" . font-lock-type-face)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1879 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1880 ;; Scheme `:' keywords as references.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1881 '("\\<:\\sw+\\>" . font-lock-reference-face)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1882 ))
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
1883 "Default 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
1884
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
1885
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
1886 (defvar tex-font-lock-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
1887 ; ;; 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
1888 ; '(("\\\\\\(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
1889 ; 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
1890 ; ("\\\\\\(cite\\|label\\|pageref\\|ref\\){\\([^} \t\n]+\\)}"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1891 ; 2 font-lock-reference-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
1892 ; ;; 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
1893 ; ;; 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
1894 ; ("{\\\\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
1895 ; ("{\\\\\\(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
1896 ; ("\\\\\\([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
1897 ; ("^[ \t\n]*\\\\def[\\\\@]\\(\\w+\\)" 1 font-lock-function-name-face 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
1898 ;; Rewritten and extended for LaTeX2e by 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
1899 '(("\\\\\\(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
1900 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
1901 ("\\\\\\(cite\\|label\\|pageref\\|ref\\){\\([^} \t\n]+\\)}"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 2 font-lock-reference-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
1903 ("^[ \t]*\\\\def\\\\\\(\\(\\w\\|@\\)+\\)" 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
1904 "\\\\\\([a-zA-Z@]+\\|.\\)"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 ;; 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
1906 ;; 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
1907 ;; LaTeX2e: \emph{This is emphasized}.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 ("\\\\emph{\\([^}]+\\)}" 1 '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
1909 ;; LaTeX2e: \textbf{This is bold}, \textit{...}, \textsl{...}
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1910 ("\\\\text\\(\\(bf\\)\\|it\\|sl\\){\\([^}]+\\)}"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 3 (if (match-beginning 2) 'bold '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
1912 ;; Old-style bf/em/it/sl. Stop at `\\' and un-escaped `&', for good tables.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 ("\\\\\\(\\(bf\\)\\|em\\|it\\|sl\\)\\>\\(\\([^}&\\]\\|\\\\[^\\]\\)+\\)"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 3 (if (match-beginning 2) 'bold '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
1915 "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
1916
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1917 ;;; 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
1918
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
1919 ;; 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
1920 ;; types might be the user's own or they might be generally accepted and used.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1921 ;; Generally excepted types are used to provide default variable values.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1922
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 (defvar c-font-lock-extra-types '("FILE" "\\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
1924 "*List of extra types to fontify in C 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
1925 Each list item should be a regexp without word-delimiters or parentheses.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1926 For example, a value of (\"FILE\" \"\\\\sw+_t\") means the word FILE and words
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1927 ending in _t are treated as type 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
1928
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 (defvar c++-font-lock-extra-types 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
1930 "*List of extra types to fontify in C++ 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
1931 Each list item should be a regexp without word-delimiters or parentheses.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1932 For example, a value of (\"String\") means the word String is treated as a type
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1933 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
1934
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 (defvar objc-font-lock-extra-types '("Class" "BOOL" "IMP" "SEL")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1936 "*List of extra types to fontify in Objective-C 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
1937 Each list item should be a regexp without word-delimiters or parentheses.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1938 For example, a value of (\"Class\" \"BOOL\" \"IMP\" \"SEL\") means the words
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1939 Class, BOOL, IMP and SEL are treated as type 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
1940
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1941 (defvar java-font-lock-extra-types '("[A-Z\300-\326\330-\337]\\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
1942 "*List of extra types to fontify in Java 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
1943 Each list item should be a regexp without word-delimiters or parentheses.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1944 For example, a value of (\"[A-Z\300-\326\330-\337]\\\\sw+\") means capitalised
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1945 words (and words conforming to the Java id spec) are treated as type 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
1946
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
1947 ;;; 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
1948
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1949 ;; [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
1950 ;; 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
1951 ;; 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
1952 ;; 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
1953 ;; 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
1954 ;; 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
1955 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1956 ;; 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
1957 ;; 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
1958 ;; 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
1959 ;; 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
1960 ;; 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
1961 ;; 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
1962
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1963 (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
1964 "Subdued level highlighting for C mode.")
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1965
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1966 (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
1967 "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
1968 See also `c-font-lock-extra-types'.")
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1969
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1970 (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
1971 "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
1972 See also `c-font-lock-extra-types'.")
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1973
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1974 (let ((c-keywords
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1975 ; ("break" "continue" "do" "else" "for" "if" "return" "switch" "while")
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1976 "break\\|continue\\|do\\|else\\|for\\|if\\|return\\|switch\\|while")
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1977 (c-type-types
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1978 ; ("auto" "extern" "register" "static" "typedef" "struct" "union" "enum"
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
1979 ; "signed" "unsigned" "short" "long" "int" "char" "float" "double"
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
1980 ; "void" "volatile" "const")
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
1981 `(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
1982 (cons
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1983 (,@ (concat "auto\\|c\\(har\\|onst\\)\\|double\\|" ; 6 ()s deep.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1984 "e\\(num\\|xtern\\)\\|float\\|int\\|long\\|register\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1985 "s\\(hort\\|igned\\|t\\(atic\\|ruct\\)\\)\\|typedef\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1986 "un\\(ion\\|signed\\)\\|vo\\(id\\|latile\\)"))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 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
1988 "\\|"))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1989 )
6093
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
1990 (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
1991 (list
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
1992 ;;
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1993 ;; 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
1994 ;; 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
1995 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
1996 ;; 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
1997 '("^\\(\\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
1998 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
1999 ;; 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
2000 '("^#[ \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
2001 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2002 ;; Fontify filenames in #include <...> preprocessor directives as strings.
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
2003 '("^#[ \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
2004 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
2005 ;;
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2006 ;; 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
2007 '("^#[ \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
2008 ;;
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
2009 ;; 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
2010 '("^#[ \t]*\\(elif\\|if\\)\\>"
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2011 ("\\<\\(defined\\)\\>[ \t]*(?\\(\\sw+\\)?" nil nil
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2012 (1 font-lock-reference-face) (2 font-lock-variable-name-face nil t)))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2013 ;;
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2014 ;; Fontify otherwise as symbol names, and the preprocessor directive 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
2015 '("^#[ \t]*\\(\\sw+\\)\\>[ \t]*\\(\\sw+\\)?"
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2016 (1 font-lock-reference-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
2017 ))
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2018
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2019 (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
2020 (append c-font-lock-keywords-1
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2021 (list
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2022 ;;
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2023 ;; Simple regexps for speed.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2024 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2025 ;; 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
2026 `(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
2027 (cons (concat "\\<\\(" (,@ c-type-types) "\\)\\>") 'font-lock-type-face))
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2028 ;;
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2029 ;; Fontify all builtin keywords (except case, default and goto; see below).
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
2030 (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
2031 ;;
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2032 ;; 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
2033 '("\\<\\(case\\|goto\\)\\>[ \t]*\\(-?\\sw+\\)?"
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2034 (1 font-lock-keyword-face) (2 font-lock-reference-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
2035 ;; 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
2036 ;; MATCH-ANCHORED to effectively anchor the regexp on the left.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2037 '(":" ("^[ \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
2038 (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
2039 (1 font-lock-reference-face)))
6093
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2040 )))
6219
d960f0463014 (c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6093
diff changeset
2041
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2042 (setq c-font-lock-keywords-3
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2043 (append c-font-lock-keywords-2
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2044 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2045 ;; 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
2046 ;; 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
2047 (list
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2048 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2049 ;; 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
2050 `(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
2051 (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
2052 "\\([ \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
2053 ;; Fontify each declaration 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
2054 '(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
2055 ;; Start with point after all type specifiers.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2056 (goto-char (or (match-beginning 8) (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
2057 ;; Finish with point after first type specifier.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2058 (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
2059 ;; Fontify as a variable or function 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
2060 (1 (if (match-beginning 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
2061 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
2062 font-lock-variable-name-face)))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2063 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2064 ;; Fontify structures, or typedef names, plus their items.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2065 '("\\(}\\)[ \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
2066 (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
2067 (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
2068 (1 (if (match-beginning 2)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2069 font-lock-function-name-face
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2070 font-lock-variable-name-face))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2071 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2072 ;; 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
2073 '("^\\(\\sw+\\)\\>\\([ \t*]+\\sw+\\>\\)*"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2074 (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
2075 (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
2076 (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
2077 (1 (if (match-beginning 2)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2078 font-lock-function-name-face
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2079 font-lock-variable-name-face))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2080 )))
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
2081 )
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2082
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
2083 (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
2084 "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
2085 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
2086
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2087 ;;; 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
2088
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2089 (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
2090 "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
2091
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2092 (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
2093 "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
2094 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
2095
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2096 (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
2097 "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
2098 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
2099
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
2100 (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
2101 ;; 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
2102 ;; ^^^^ ^^^^ ^^^^ ^
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2103 ;; 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
2104 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2105 ;; 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
2106 ;; 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
2107 ;; 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
2108 ;; 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
2109 (when (looking-at (eval-when-compile
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2110 (concat "[ \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
2111 "\\(<\\(\\sw+\\)[ \t*&]*>\\)?"
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
2112 "\\(::\\*?\\(\\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
2113 "[ \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
2114 (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
2115 (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
2116 (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
2117 ;; 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
2118 (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
2119 (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
2120 ;; 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
2121 (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
2122 (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
2123 (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
2124 (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
2125
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2126 (let* ((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
2127 ; ("break" "continue" "do" "else" "for" "if" "return" "switch" "while"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2128 ; "asm" "catch" "delete" "new" "operator" "sizeof" "this" "throw" "try"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2129 ; ;; Eric Hopper <hopper@omnifarious.mn.org> says these are 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
2130 ; "static_cast" "dynamic_cast" "const_cast" "reinterpret_cast")
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
2131 (concat "asm\\|break\\|c\\(atch\\|on\\(st_cast\\|tinue\\)\\)\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2132 "d\\(elete\\|o\\|ynamic_cast\\)\\|else\\|for\\|if\\|new\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2133 "operator\\|re\\(interpret_cast\\|turn\\)\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2134 "s\\(izeof\\|tatic_cast\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2135 "witch\\)\\|t\\(h\\(is\\|row\\)\\|ry\\)\\|while"))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2136 (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
2137 (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
2138 (mapcar 'regexp-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
2139 ;; Taken from Stroustrup, minus keywords otherwise fontified.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2140 (sort '("+" "-" "*" "/" "%" "^" "&" "|" "~" "!" "=" "<" ">"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2141 "+=" "-=" "*=" "/=" "%=" "^=" "&=" "|=" "<<" ">>"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2142 ">>=" "<<=" "==" "!=" "<=" ">=" "&&" "||" "++" "--"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2143 "->*" "," "->" "[]" "()")
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
2144 #'(lambda (a b) (> (length a) (length b)))))
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
2145 "\\|"))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2146 (c++-type-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
2147 ; ("auto" "extern" "register" "static" "typedef" "struct" "union" "enum"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2148 ; "signed" "unsigned" "short" "long" "int" "char" "float" "double"
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
2149 ; "void" "volatile" "const" "inline" "friend" "bool"
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
2150 ; "virtual" "complex" "template"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2151 ; ;; Eric Hopper <hopper@omnifarious.mn.org> says these are 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
2152 ; "namespace" "using")
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
2153 `(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
2154 (cons
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2155 (,@ (concat "auto\\|bool\\|c\\(har\\|o\\(mplex\\|nst\\)\\)\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2156 "double\\|e\\(num\\|xtern\\)\\|f\\(loat\\|riend\\)\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2157 "in\\(line\\|t\\)\\|long\\|namespace\\|register\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2158 "s\\(hort\\|igned\\|t\\(atic\\|ruct\\)\\)\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2159 "t\\(emplate\\|ypedef\\)\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2160 "u\\(n\\(ion\\|signed\\)\\|sing\\)\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2161 "v\\(irtual\\|o\\(id\\|latile\\)\\)")) ; 12 ()s deep.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2162 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
2163 "\\|"))
16852
70e9b1d69d0d Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents: 16578
diff changeset
2164 (c++-type-suffix "\\(<\\(\\sw+\\)[ \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
2165 (c++-type-spec (concat "\\(\\sw+\\)\\>" c++-type-suffix))
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
2166 )
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2167 (setq c++-font-lock-keywords-1
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2168 (append
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2169 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2170 ;; 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
2171 (cdr c-font-lock-keywords-1)
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2172 (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
2173 ;;
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
2174 ;; 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
2175 (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
2176 "\\(" 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
2177 '(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
2178 '(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
2179 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
2180 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
2181 '(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
2182 '(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
2183 ;;
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2184 ;; 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
2185 (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
2186 '(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
2187 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
2188 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
2189 '(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
2190 '(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
2191 )))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2192
6219
d960f0463014 (c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6093
diff changeset
2193 (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
2194 (append c++-font-lock-keywords-1
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2195 (list
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2196 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2197 ;; 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
2198 `(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
2199 (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
2200 'font-lock-type-face))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2201 ;;
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
2202 ;; 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
2203 (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
2204 '(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
2205 '(2 font-lock-builtin-face nil t))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2206 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2207 ;; 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
2208 '("\\<\\(case\\|goto\\)\\>[ \t]*\\(-?\\sw+\\)?"
9487
f80b2a33df03 * font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents: 9444
diff changeset
2209 (1 font-lock-keyword-face) (2 font-lock-reference-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
2210 '(":" ("^[ \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
2211 (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
2212 (1 font-lock-reference-face)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2213 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2214 ;; Fontify other builtin keywords.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2215 (cons (concat "\\<\\(" c++-keywords "\\)\\>") 'font-lock-keyword-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
2216 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2217 ;; Eric Hopper <hopper@omnifarious.mn.org> says `true' and `false' are 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
2218 '("\\<\\(false\\|true\\)\\>" . font-lock-reference-face)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2219 )))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2220
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2221 (setq c++-font-lock-keywords-3
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2222 (append c++-font-lock-keywords-2
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2223 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2224 ;; 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
2225 (list
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2226 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2227 ;; 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
2228 `(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
2229 (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
2230 "\\([ \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
2231 ;; Fontify each declaration 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
2232 '(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
2233 ;; Start with point after all type specifiers.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2234 (goto-char (or (match-beginning 18) (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
2235 ;; Finish with point after first type specifier.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2236 (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
2237 ;; Fontify as a variable or function 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
2238 (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
2239 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
2240 ((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
2241 (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
2242 (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
2243 (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
2244 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
2245 font-lock-variable-name-face) nil t))))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2246 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2247 ;; Fontify structures, or typedef names, plus their items.
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2248 '("\\(}\\)[ \t*]*\\sw"
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2249 (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
2250 (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
2251 (1 (if (match-beginning 6)
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2252 font-lock-function-name-face
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2253 font-lock-variable-name-face))))
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2254 ;;
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2255 ;; 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
2256 (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
2257 '(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
2258 (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
2259 (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
2260 (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
2261 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
2262 ((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
2263 (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
2264 (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
2265 (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
2266 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
2267 font-lock-variable-name-face) nil t)))
13299
d6bfe124472c General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents: 12813
diff changeset
2268 )))
6093
00cee8387866 Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents: 5878
diff changeset
2269 )
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2270
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
2271 (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
2272 "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
2273 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
2274
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2275 ;;; 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
2276
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2277 (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
2278 "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
2279
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2280 (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
2281 "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
2282 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
2283
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 (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
2285 "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
2286 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
2287
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2288 ;; 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
2289 ;; Jacques Duthen Prestataire <duthen@cegelec-red.fr>.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2290 (let ((objc-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
2291 ; (make-regexp
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2292 ; '("break" "continue" "do" "else" "for" "if" "return" "switch" "while"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2293 ; "sizeof" "self" "super"))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2294 (concat "break\\|continue\\|do\\|else\\|for\\|if\\|return\\|"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2295 "s\\(elf\\|izeof\\|uper\\|witch\\)\\|while"))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2296 (objc-type-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
2297 `(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
2298 (cons
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
2299 ; '("auto" "extern" "register" "static" "typedef" "struct" "union"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2300 ; "enum" "signed" "unsigned" "short" "long" "int" "char"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2301 ; "float" "double" "void" "volatile" "const"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 ; "id" "oneway" "in" "out" "inout" "bycopy" "byref")
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
2303 (,@ (concat "auto\\|by\\(copy\\|ref\\)\\|c\\(har\\|onst\\)\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2304 "double\\|e\\(num\\|xtern\\)\\|float\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2305 "i\\([dn]\\|n\\(out\\|t\\)\\)\\|long\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2306 "o\\(neway\\|ut\\)\\|register\\|s\\(hort\\|igned\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2307 "t\\(atic\\|ruct\\)\\)\\|typedef\\|"
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2308 "un\\(ion\\|signed\\)\\|vo\\(id\\|latile\\)"))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2309 objc-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
2310 "\\|"))
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
2311 )
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2312 (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
2313 (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
2314 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2315 ;; 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
2316 (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
2317 (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
2318 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2319 ;; 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
2320 '("@\\(\\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
2321 (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
2322 ("\\=[ \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
2323 (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
2324 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2325 ;; 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
2326 ;; 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
2327 '("^[+-][ \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
2328 (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
2329 (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
2330 (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
2331 ("\\=[ \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
2332 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
2333 (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
2334 (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
2335 (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
2336 ;; 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
2337 '(":" ("^[ \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
2338 (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
2339 (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
2340 (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
2341 (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
2342 )))
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2343
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
2344 (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
2345 (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
2346 (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
2347 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2348 ;; 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
2349 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2350 ;; 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
2351 `(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
2352 (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
2353 '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
2354 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2355 ;; Fontify all builtin keywords (except case, default and goto; see below).
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2356 (concat "\\<\\(" objc-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
2357 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2358 ;; 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
2359 '("\\<\\(case\\|goto\\)\\>[ \t]*\\(-?\\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
2360 (1 font-lock-keyword-face) (2 font-lock-reference-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
2361 ;; Fontify tags iff sole statement on line, otherwise we detect selectors.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2362 '(":" ("^[ \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
2363 (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
2364 (1 font-lock-reference-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
2365 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2366 ;; Fontify null object pointers.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2367 '("\\<\\(Nil\\|nil\\)\\>" 1 font-lock-reference-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
2368 )))
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2369
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
2370 (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
2371 (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
2372 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 ;; 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
2374 ;; 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
2375 (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
2376 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 ;; 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
2378 `(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
2379 (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
2380 "\\([ \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
2381 ;; Fontify each declaration 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
2382 '(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
2383 ;; Start with point after all type specifiers.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2384 (goto-char (or (match-beginning 2) (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
2385 ;; Finish with point after first type specifier.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents: 16456
diff changeset
2386 (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
2387 ;; Fontify as a variable or function 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
2388 (1 (if (match-beginning 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
2389 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
2390 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
2391 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2392 ;; 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
2393 '("\\(}\\)[ \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
2394 (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
2395 (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
2396 (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
2397 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
2398 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
2399 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2400 ;; 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
2401 '("^\\(\\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
2402 (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
2403 (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
2404 (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
2405 (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
2406 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
2407 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
2408 )))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2409 )
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2410
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2411 (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
2412 "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
2413 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
2414
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2415 ;;; 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
2416
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2417 (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
2418 "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
2419
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2420 (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
2421 "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
2422 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
2423
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 (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
2425 "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
2426 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
2427
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
2428 ;; 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
2429 ;; Anders Lindgren <andersl@csd.uu.se>.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 (let ((java-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
2431 (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
2432 ; (make-regexp
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 ; '("catch" "do" "else" "super" "this" "finally" "for" "if"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 ;; ;; Anders Lindgren <andersl@csd.uu.se> says these have gone.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 ;; "cast" "byvalue" "future" "generic" "operator" "var"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 ;; "inner" "outer" "rest"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 ; "interface" "return" "switch" "throw" "try" "while")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 "catch\\|do\\|else\\|f\\(inally\\|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
2439 "i\\(f\\|nterface\\)\\|return\\|s\\(uper\\|witch\\)\\|"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 "t\\(h\\(is\\|row\\)\\|ry\\)\\|while"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2441 "\\)\\>"))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2442 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2443 ;; These are immediately followed by an object name.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2444 (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
2445 (mapconcat 'identity
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2446 '("boolean" "char" "byte" "short" "int" "long" "float" "double" "void")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2447 "\\|"))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2448 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2449 ;; These are eventually followed by an object name.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2450 (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
2451 ; (make-regexp
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2452 ; '("abstract" "const" "final" "synchronized" "transient" "static"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2453 ;; ;; Anders Lindgren <andersl@csd.uu.se> says this has gone.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2454 ;; "threadsafe"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2455 ; "volatile" "public" "private" "protected" "native")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2456 (concat "abstract\\|const\\|final\\|native\\|"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2457 "p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2458 "s\\(tatic\\|ynchronized\\)\\|transient\\|volatile"))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2459 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2460 ;; Random types immediately followed by an object name.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2461 (java-other-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
2462 '(mapconcat 'identity (cons "\\sw+\\.\\sw+" java-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
2463 "\\|"))
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
2464 )
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2465 (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
2466 (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
2467 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2468 ;; 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
2469 '("\\<\\(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
2470 (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
2471 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2472 ;; 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
2473 '("\\<\\(import\\|package\\)\\>[ \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
2474 (1 font-lock-keyword-face) (2 font-lock-reference-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
2475 ))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2476
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2477 (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
2478 (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
2479 (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
2480 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2481 ;; 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
2482 (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
2483 '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
2484 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2485 ;; Fontify all builtin keywords (except below).
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2486 (concat "\\<\\(" java-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
2487 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2488 ;; 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
2489 (list "\\<\\(break\\|case\\|continue\\|goto\\)\\>[ \t]*\\(-?\\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
2490 '(1 font-lock-keyword-face) '(2 font-lock-reference-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
2491 '(":" ("^[ \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
2492 (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
2493 (1 font-lock-reference-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
2494 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2495 ;; 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
2496 (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
2497 "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
2498 "\\(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
2499 "\\)\\>[ \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
2500 '(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
2501 '("\\=[ \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
2502 (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
2503 (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
2504 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2505 ;; Fontify all constants.
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2506 '("\\<\\(false\\|null\\|true\\)\\>" . font-lock-reference-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
2507 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2508 ;; 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
2509 '("@\\(author\\|exception\\|return\\|see\\|version\\)\\>"
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2510 (1 font-lock-reference-face prepend))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2511 '("@\\(param\\)\\>[ \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
2512 (1 font-lock-reference-face prepend)
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2513 (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
2514 )))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2515
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2516 (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
2517 (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
2518 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position 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 ;; 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
2520 ;; 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
2521 (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
2522 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2523 ;; 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
2524 `(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
2525 (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
2526 "[ \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
2527 ;; 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
2528 '(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
2529 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2530 ;; 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
2531 `(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
2532 (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
2533 "\\([ \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
2534 "[ \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
2535 ;; 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
2536 '(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
2537 `(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
2538 (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
2539 "\\([ \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
2540 "\\([ \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
2541 ;; Fontify each declaration 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
2542 '(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
2543 ;; Start and finish with point after the type specifier.
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 (goto-char (match-beginning 3)) (goto-char (match-beginning 3))
c921b60ee783 (a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 ;; Fontify as a variable or function 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
2546 (1 (if (match-beginning 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
2547 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
2548 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
2549 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2550 ;; 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
2551 (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
2552 "\\([ \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
2553 ;; 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
2554 '(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
2555 ;; 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
2556 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
2557 ;; 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
2558 (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
2559 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
2560 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
2561 ;;
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2562 ;; 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
2563 (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
2564 "\\([ \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
2565 "\\([ \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
2566 "\\)*")
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2567 ;; 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
2568 '(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
2569 ;; Start with point after all 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
2570 (goto-char (or (match-beginning 2) (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
2571 ;; 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
2572 (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
2573 ;; 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
2574 (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
2575 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
2576 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
2577 )))
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2578 )
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2579
63b6583c9e5c Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents: 15814
diff changeset
2580 (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
2581 "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
2582 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
2583
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2584 ;; Install ourselves:
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2585
15492
348f0896b1e7 (font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15485
diff changeset
2586 (unless (assq 'font-lock-mode minor-mode-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
2587 (push '(font-lock-mode " Font") minor-mode-alist))
9389
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2588
fec6bd86e836 (compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents: 9350
diff changeset
2589 ;; Provide ourselves:
7491
621c162a80db (font-lock-no-comments): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
2590
4053
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2591 (provide 'font-lock)
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2592
c142db721726 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2593 ;;; font-lock.el ends here