Mercurial > emacs
annotate lisp/font-lock.el @ 98182:19ec1646fe6c
The Rmail/mbox merge has been abandoned in favor of a restart using
the current rmail.el file. A comprehensive list of changes will be
supplied when pmail.el is morphed back into rmail.el
The current status is that pmail.el supports basic Rmail navigation
(no summary support) and shows the current message in a special
buffer using buffer-swap-text. No decoding is done yet. That is the
next step.
author | Paul Reilly <pmr@pajato.com> |
---|---|
date | Mon, 15 Sep 2008 20:56:53 +0000 |
parents | c3309dba6542 |
children | 31ee18a10bb3 |
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 |
58161
5451548f1bd9
(font-lock-fontify-syntactically-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57433
diff
changeset
|
3 ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, |
92811
2dc33caeb08c
(lisp-font-lock-keywords-1): Support wider range of
Glenn Morris <rgm@gnu.org>
parents:
92148
diff
changeset
|
4 ;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 |
2dc33caeb08c
(lisp-font-lock-keywords-1): Support wider range of
Glenn Morris <rgm@gnu.org>
parents:
92148
diff
changeset
|
5 ;; Free Software Foundation, Inc. |
4053 | 6 |
28874
f2f374d8b0bf
Update copyright. Remove Simon Marshall's email
Gerd Moellmann <gerd@gnu.org>
parents:
28192
diff
changeset
|
7 ;; Author: jwz, then rms, then sm |
4053 | 8 ;; Maintainer: FSF |
9 ;; Keywords: languages, faces | |
10 | |
11 ;; This file is part of GNU Emacs. | |
12 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94157
diff
changeset
|
13 ;; GNU Emacs is free software: you can redistribute it and/or modify |
4053 | 14 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94157
diff
changeset
|
15 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94157
diff
changeset
|
16 ;; (at your option) any later version. |
4053 | 17 |
18 ;; GNU Emacs is distributed in the hope that it will be useful, | |
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 ;; GNU General Public License for more details. | |
22 | |
23 ;; You should have received a copy of the GNU General Public License | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94157
diff
changeset
|
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
4053 | 25 |
26 ;;; Commentary: | |
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 | 30 ;; |
31 ;; Comments will be displayed in `font-lock-comment-face'. | |
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 | 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 | 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 | 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 | 42 ;; |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
43 ;; Or if you want to turn Font Lock mode on in many modes: |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
44 ;; |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
45 ;; (global-font-lock-mode t) |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
46 ;; |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
47 ;; Fontification for a particular mode may be available in a number of levels |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
48 ;; of decoration. The higher the level, the more decoration, but the more time |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
49 ;; it takes to fontify. See the variable `font-lock-maximum-decoration', and |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
50 ;; also the variable `font-lock-maximum-size'. Support modes for Font Lock |
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
51 ;; mode can be used to speed up Font Lock mode. See `font-lock-support-mode'. |
15653
1653d3208c05
1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents:
15500
diff
changeset
|
52 |
17055
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
53 ;;; How Font Lock mode fontifies: |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
54 |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
55 ;; When Font Lock mode is turned on in a buffer, it (a) fontifies the entire |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
56 ;; buffer and (b) installs one of its fontification functions on one of the |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
57 ;; hook variables that are run by Emacs after every buffer change (i.e., an |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
58 ;; insertion or deletion). Fontification means the replacement of `face' text |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
59 ;; properties in a given region; Emacs displays text with these `face' text |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
60 ;; properties appropriately. |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
61 ;; |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
62 ;; Fontification normally involves syntactic (i.e., strings and comments) and |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
63 ;; regexp (i.e., keywords and everything else) passes. There are actually |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
64 ;; three passes; (a) the syntactic keyword pass, (b) the syntactic pass and (c) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
65 ;; the keyword pass. Confused? |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
66 ;; |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
67 ;; The syntactic keyword pass places `syntax-table' text properties in the |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
68 ;; buffer according to the variable `font-lock-syntactic-keywords'. It is |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
69 ;; necessary because Emacs' syntax table is not powerful enough to describe all |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
70 ;; the different syntactic constructs required by the sort of people who decide |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
71 ;; that a single quote can be syntactic or not depending on the time of day. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
72 ;; (What sort of person could decide to overload the meaning of a quote?) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
73 ;; Obviously the syntactic keyword pass must occur before the syntactic pass. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
74 ;; |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
75 ;; The syntactic pass places `face' text properties in the buffer according to |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
76 ;; syntactic context, i.e., according to the buffer's syntax table and buffer |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
77 ;; text's `syntax-table' text properties. It involves using a syntax parsing |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
78 ;; function to determine the context of different parts of a region of text. A |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
79 ;; syntax parsing function is necessary because generally strings and/or |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
80 ;; comments can span lines, and so the context of a given region is not |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
81 ;; necessarily apparent from the content of that region. Because the keyword |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
82 ;; pass only works within a given region, it is not generally appropriate for |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
83 ;; syntactic fontification. This is the first fontification pass that makes |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
84 ;; changes visible to the user; it fontifies strings and comments. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
85 ;; |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
86 ;; The keyword pass places `face' text properties in the buffer according to |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
87 ;; the variable `font-lock-keywords'. It involves searching for given regexps |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
88 ;; (or calling given search functions) within the given region. This is the |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
89 ;; second fontification pass that makes changes visible to the user; it |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
90 ;; fontifies language reserved words, etc. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
91 ;; |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
92 ;; Oh, and the answer is, "Yes, obviously just about everything should be done |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
93 ;; in a single syntactic pass, but the only syntactic parser available |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
94 ;; understands only strings and comments." Perhaps one day someone will write |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
95 ;; some syntactic parsers for common languages and a son-of-font-lock.el could |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
96 ;; use them rather then relying so heavily on the keyword (regexp) pass. |
17055
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
97 |
16578
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
98 ;;; How Font Lock mode supports modes or is supported by modes: |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
99 |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
100 ;; Modes that support Font Lock mode do so by defining one or more variables |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
101 ;; whose values specify the fontification. Font Lock mode knows of these |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
102 ;; variable names from (a) the buffer local variable `font-lock-defaults', if |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
103 ;; non-nil, or (b) the global variable `font-lock-defaults-alist', if the major |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
104 ;; mode has an entry. (Font Lock mode is set up via (a) where a mode's |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
105 ;; patterns are distributed with the mode's package library, and (b) where a |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
106 ;; mode's patterns are distributed with font-lock.el itself. An example of (a) |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
107 ;; is Pascal mode, an example of (b) is Lisp mode. Normally, the mechanism is |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
108 ;; (a); (b) is used where it is not clear which package library should contain |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
109 ;; the pattern definitions.) Font Lock mode chooses which variable to use for |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
110 ;; fontification based on `font-lock-maximum-decoration'. |
17055
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
111 ;; |
96376
c3309dba6542
American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents:
96363
diff
changeset
|
112 ;; Font Lock mode fontification behavior can be modified in a number of ways. |
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
|
113 ;; See the below comments and the comments distributed throughout this file. |
16578
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
114 |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
115 ;;; Constructing patterns: |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
116 |
15653
1653d3208c05
1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents:
15500
diff
changeset
|
117 ;; See the documentation for the variable `font-lock-keywords'. |
1653d3208c05
1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents:
15500
diff
changeset
|
118 ;; |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
119 ;; Efficient regexps for use as MATCHERs for `font-lock-keywords' and |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
120 ;; `font-lock-syntactic-keywords' can be generated via the function |
28087
9ca294cf76c7
(font-lock-keywords): Fix the doc now that regexp-opt-depth is unnecessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28069
diff
changeset
|
121 ;; `regexp-opt'. |
16578
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
122 |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
123 ;;; Adding patterns for modes that already support Font Lock: |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
124 |
16578
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
125 ;; Though Font Lock highlighting patterns already exist for many modes, it's |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
126 ;; likely there's something that you want fontified that currently isn't, even |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
127 ;; at the maximum fontification level. You can add highlighting patterns via |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
128 ;; `font-lock-add-keywords'. For example, say in some C |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
129 ;; header file you #define the token `and' to expand to `&&', etc., to make |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
130 ;; your C code almost readable. In your ~/.emacs there could be: |
15653
1653d3208c05
1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents:
15500
diff
changeset
|
131 ;; |
16578
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
132 ;; (font-lock-add-keywords 'c-mode '("\\<\\(and\\|or\\|not\\)\\>")) |
15653
1653d3208c05
1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents:
15500
diff
changeset
|
133 ;; |
16578
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
134 ;; Some modes provide specific ways to modify patterns based on the values of |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
135 ;; other variables. For example, additional C types can be specified via the |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
136 ;; variable `c-font-lock-extra-types'. |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
137 |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
138 ;;; Adding patterns for modes that do not support Font Lock: |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
139 |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
140 ;; Not all modes support Font Lock mode. If you (as a user of the mode) add |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
141 ;; patterns for a new mode, you must define in your ~/.emacs a variable or |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
142 ;; variables that specify regexp fontification. Then, you should indicate to |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
143 ;; Font Lock mode, via the mode hook setting `font-lock-defaults', exactly what |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
144 ;; support is required. For example, say Foo mode should have the following |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
145 ;; regexps fontified case-sensitively, and comments and strings should not be |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
146 ;; fontified automagically. In your ~/.emacs there could be: |
15653
1653d3208c05
1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents:
15500
diff
changeset
|
147 ;; |
16578
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
148 ;; (defvar foo-font-lock-keywords |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
149 ;; '(("\\<\\(one\\|two\\|three\\)\\>" . font-lock-keyword-face) |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
150 ;; ("\\<\\(four\\|five\\|six\\)\\>" . font-lock-type-face)) |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
151 ;; "Default expressions to highlight in Foo mode.") |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
152 ;; |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
153 ;; (add-hook 'foo-mode-hook |
45712
3d25fe242d2a
(font-lock-set-defaults-1): Variable alist is now set in
Colin Walters <walters@gnu.org>
parents:
45445
diff
changeset
|
154 ;; (lambda () |
67738
f2537ba84319
(font-lock-default-fontify-buffer): Try and set-defaults even if font-lock-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67678
diff
changeset
|
155 ;; (set (make-local-variable 'font-lock-defaults) |
f2537ba84319
(font-lock-default-fontify-buffer): Try and set-defaults even if font-lock-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67678
diff
changeset
|
156 ;; '(foo-font-lock-keywords t)))) |
16578
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
157 |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
158 ;;; Adding Font Lock support for modes: |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
159 |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
160 ;; Of course, it would be better that the mode already supports Font Lock mode. |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
161 ;; The package author would do something similar to above. The mode must |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
162 ;; define at the top-level a variable or variables that specify regexp |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
163 ;; fontification. Then, the mode command should indicate to Font Lock mode, |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
164 ;; via `font-lock-defaults', exactly what support is required. For example, |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
165 ;; say Bar mode should have the following regexps fontified case-insensitively, |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
166 ;; and comments and strings should be fontified automagically. In bar.el there |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
167 ;; could be: |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
168 ;; |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
169 ;; (defvar bar-font-lock-keywords |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
170 ;; '(("\\<\\(uno\\|due\\|tre\\)\\>" . font-lock-keyword-face) |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
171 ;; ("\\<\\(quattro\\|cinque\\|sei\\)\\>" . font-lock-type-face)) |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
172 ;; "Default expressions to highlight in Bar mode.") |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
173 ;; |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
174 ;; and within `bar-mode' there could be: |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
175 ;; |
67738
f2537ba84319
(font-lock-default-fontify-buffer): Try and set-defaults even if font-lock-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67678
diff
changeset
|
176 ;; (set (make-local-variable 'font-lock-defaults) |
f2537ba84319
(font-lock-default-fontify-buffer): Try and set-defaults even if font-lock-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67678
diff
changeset
|
177 ;; '(bar-font-lock-keywords nil t)) |
15653
1653d3208c05
1. Use new font-lock-comment-start-regexp for matching a comment---it can be faster than comment-start-skip.
Simon Marshall <simon@gnu.org>
parents:
15500
diff
changeset
|
178 |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
179 ;; What is fontification for? You might say, "It's to make my code look nice." |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
180 ;; I think it should be for adding information in the form of cues. These cues |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
181 ;; should provide you with enough information to both (a) distinguish between |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
182 ;; different items, and (b) identify the item meanings, without having to read |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
183 ;; the items and think about it. Therefore, fontification allows you to think |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
184 ;; less about, say, the structure of code, and more about, say, why the code |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
185 ;; doesn't work. Or maybe it allows you to think less and drift off to sleep. |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
186 ;; |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
187 ;; So, here are my opinions/advice/guidelines: |
30651
61c2f9fcb8f6
* emacs-lisp/cl-indent.el (toplevel): Indent `defclass',
Sam Steingold <sds@gnu.org>
parents:
29919
diff
changeset
|
188 ;; |
13701
1dab6f0d9239
Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents:
13641
diff
changeset
|
189 ;; - Highlight conceptual objects, such as function and variable names, and |
1dab6f0d9239
Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents:
13641
diff
changeset
|
190 ;; different objects types differently, i.e., (a) and (b) above, highlight |
1dab6f0d9239
Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents:
13641
diff
changeset
|
191 ;; function names differently to variable names. |
1dab6f0d9239
Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents:
13641
diff
changeset
|
192 ;; - Keep the faces distinct from each other as far as possible. |
1dab6f0d9239
Don't turn on in any buffer with a leading space in its name.
Simon Marshall <simon@gnu.org>
parents:
13641
diff
changeset
|
193 ;; i.e., (a) above. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
194 ;; - Use the same face for the same conceptual object, across all modes. |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
195 ;; i.e., (b) above, all modes that have items that can be thought of as, say, |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
196 ;; keywords, should be highlighted with the same face, etc. |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
197 ;; - Make the face attributes fit the concept as far as possible. |
96363
f9d35151b907
American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents:
95545
diff
changeset
|
198 ;; i.e., function names might be a bold color such as blue, comments might |
f9d35151b907
American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents:
95545
diff
changeset
|
199 ;; be a bright color such as red, character strings might be brown, because, |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
200 ;; err, strings are brown (that was not the reason, please believe me). |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
201 ;; - Don't use a non-nil OVERRIDE unless you have a good reason. |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
202 ;; Only use OVERRIDE for special things that are easy to define, such as the |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
203 ;; way `...' quotes are treated in strings and comments in Emacs Lisp mode. |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
204 ;; Don't use it to, say, highlight keywords in commented out code or strings. |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
205 ;; - Err, that's it. |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
206 |
16456
63b6583c9e5c
Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents:
15814
diff
changeset
|
207 ;;; Code: |
63b6583c9e5c
Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents:
15814
diff
changeset
|
208 |
40394
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
209 (require 'syntax) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
210 |
17543
9b75a01e03e5
Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents:
17507
diff
changeset
|
211 ;; Define core `font-lock' group. |
53710
31ae933487b2
(font-lock): Add jit-lock as explicit group member.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
53405
diff
changeset
|
212 (defgroup font-lock '((jit-lock custom-group)) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
213 "Font Lock mode text highlighting package." |
67678
bce97b32175b
(font-lock): Add tags to the links in the defgroup.
Luc Teirlinck <teirllm@auburn.edu>
parents:
67571
diff
changeset
|
214 :link '(custom-manual :tag "Emacs Manual" "(emacs)Font Lock") |
bce97b32175b
(font-lock): Add tags to the links in the defgroup.
Luc Teirlinck <teirllm@auburn.edu>
parents:
67571
diff
changeset
|
215 :link '(custom-manual :tag "Elisp Manual" "(elisp)Font Lock Mode") |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
216 :group 'faces) |
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
217 |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
218 (defgroup font-lock-faces nil |
17543
9b75a01e03e5
Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents:
17507
diff
changeset
|
219 "Faces for highlighting text." |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
220 :prefix "font-lock-" |
17543
9b75a01e03e5
Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents:
17507
diff
changeset
|
221 :group 'font-lock) |
9b75a01e03e5
Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents:
17507
diff
changeset
|
222 |
9b75a01e03e5
Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents:
17507
diff
changeset
|
223 (defgroup font-lock-extra-types nil |
9b75a01e03e5
Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents:
17507
diff
changeset
|
224 "Extra mode-specific type names for highlighting declarations." |
9b75a01e03e5
Respect font-lock-face-attributes and custom fixes.
Simon Marshall <simon@gnu.org>
parents:
17507
diff
changeset
|
225 :group 'font-lock) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
226 |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
227 ;; User variables. |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
228 |
23163
e754d3dcb5e8
(tex-font-lock-keywords-2): Fontify \nocite like \cite.
Simon Marshall <simon@gnu.org>
parents:
22892
diff
changeset
|
229 (defcustom font-lock-maximum-size 256000 |
18332
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
230 "*Maximum size of a buffer for buffer fontification. |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
231 Only buffers less than this can be fontified when Font Lock mode is turned on. |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
232 If nil, means size is irrelevant. |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
233 If a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE), |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
234 where MAJOR-MODE is a symbol or t (meaning the default). For example: |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
235 ((c-mode . 256000) (c++-mode . 256000) (rmail-mode . 1048576)) |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
236 means that the maximum size is 250K for buffers in C or C++ modes, one megabyte |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
237 for buffers in Rmail mode, and size is irrelevant otherwise." |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
238 :type '(choice (const :tag "none" nil) |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
239 (integer :tag "size") |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
240 (repeat :menu-tag "mode specific" :tag "mode specific" |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
241 :value ((t . nil)) |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
242 (cons :tag "Instance" |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
243 (radio :tag "Mode" |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
244 (const :tag "all" t) |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
245 (symbol :tag "name")) |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
246 (radio :tag "Size" |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
247 (const :tag "none" nil) |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
248 (integer :tag "size"))))) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
249 :group 'font-lock) |
4053 | 250 |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
251 (defcustom font-lock-maximum-decoration t |
14780
1d10e4a2fb51
Treat font-lock-keywords of (t) the same as nil.
Simon Marshall <simon@gnu.org>
parents:
14778
diff
changeset
|
252 "*Maximum decoration level for fontification. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
253 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
|
254 If t, use the maximum decoration available. |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
255 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
|
256 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
|
257 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
|
258 ((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
|
259 means use the maximum decoration available for buffers in C mode, level 2 |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
260 decoration for buffers in C++ mode, and level 1 decoration otherwise." |
17507
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
261 :type '(choice (const :tag "default" nil) |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
262 (const :tag "maximum" t) |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
263 (integer :tag "level" 1) |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
264 (repeat :menu-tag "mode specific" :tag "mode specific" |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
265 :value ((t . t)) |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
266 (cons :tag "Instance" |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
267 (radio :tag "Mode" |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
268 (const :tag "all" t) |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
269 (symbol :tag "name")) |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
270 (radio :tag "Decoration" |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
271 (const :tag "default" nil) |
26620 | 272 (const :tag "maximum" t) |
17507
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
273 (integer :tag "level" 1))))) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
274 :group 'font-lock) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
275 |
23163
e754d3dcb5e8
(tex-font-lock-keywords-2): Fontify \nocite like \cite.
Simon Marshall <simon@gnu.org>
parents:
22892
diff
changeset
|
276 (defcustom font-lock-verbose 0 |
18332
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
277 "*If non-nil, means show status messages for buffer fontification. |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
278 If a number, only buffers greater than this size have fontification messages." |
ee997de5b74b
Rearrange custom options. Also enable custom control of Global Font Lock mode.
Simon Marshall <simon@gnu.org>
parents:
18025
diff
changeset
|
279 :type '(choice (const :tag "never" nil) |
23163
e754d3dcb5e8
(tex-font-lock-keywords-2): Fontify \nocite like \cite.
Simon Marshall <simon@gnu.org>
parents:
22892
diff
changeset
|
280 (other :tag "always" t) |
e754d3dcb5e8
(tex-font-lock-keywords-2): Fontify \nocite like \cite.
Simon Marshall <simon@gnu.org>
parents:
22892
diff
changeset
|
281 (integer :tag "size")) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
282 :group 'font-lock) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
283 |
33360
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
284 |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
285 ;; Originally these variable values were face names such as `bold' etc. |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
286 ;; Now we create our own faces, but we keep these variables for compatibility |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
287 ;; and they give users another mechanism for changing face appearance. |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
288 ;; We now allow a FACENAME in `font-lock-keywords' to be any expression that |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
289 ;; returns a face. So the easiest thing is to continue using these variables, |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
290 ;; rather than sometimes evaling FACENAME and sometimes not. sm. |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
291 (defvar font-lock-comment-face 'font-lock-comment-face |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
292 "Face name to use for comments.") |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
293 |
61771
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
294 (defvar font-lock-comment-delimiter-face 'font-lock-comment-delimiter-face |
61813
13d42889189f
(font-lock-comment-delimiter-face): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
61771
diff
changeset
|
295 "Face name to use for comment delimiters.") |
61771
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
296 |
33360
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
297 (defvar font-lock-string-face 'font-lock-string-face |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
298 "Face name to use for strings.") |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
299 |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
300 (defvar font-lock-doc-face 'font-lock-doc-face |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
301 "Face name to use for documentation.") |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
302 |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
303 (defvar font-lock-keyword-face 'font-lock-keyword-face |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
304 "Face name to use for keywords.") |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
305 |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
306 (defvar font-lock-builtin-face 'font-lock-builtin-face |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
307 "Face name to use for builtins.") |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
308 |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
309 (defvar font-lock-function-name-face 'font-lock-function-name-face |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
310 "Face name to use for function names.") |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
311 |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
312 (defvar font-lock-variable-name-face 'font-lock-variable-name-face |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
313 "Face name to use for variable names.") |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
314 |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
315 (defvar font-lock-type-face 'font-lock-type-face |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
316 "Face name to use for type and class names.") |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
317 |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
318 (defvar font-lock-constant-face 'font-lock-constant-face |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
319 "Face name to use for constant and label names.") |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
320 |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
321 (defvar font-lock-warning-face 'font-lock-warning-face |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
322 "Face name to use for things that should stand out.") |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
323 |
62078
82c979abe63f
(font-lock-negation-char-face): New face and variable.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
61910
diff
changeset
|
324 (defvar font-lock-negation-char-face 'font-lock-negation-char-face |
82c979abe63f
(font-lock-negation-char-face): New face and variable.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
61910
diff
changeset
|
325 "Face name to use for easy to overlook negation. |
82c979abe63f
(font-lock-negation-char-face): New face and variable.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
61910
diff
changeset
|
326 This can be an \"!\" or the \"n\" in \"ifndef\".") |
82c979abe63f
(font-lock-negation-char-face): New face and variable.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
61910
diff
changeset
|
327 |
50588
7bfe36160365
(font-lock-preprocessor-face): New var and face.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49615
diff
changeset
|
328 (defvar font-lock-preprocessor-face 'font-lock-preprocessor-face |
7bfe36160365
(font-lock-preprocessor-face): New var and face.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49615
diff
changeset
|
329 "Face name to use for preprocessor directives.") |
7bfe36160365
(font-lock-preprocessor-face): New var and face.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49615
diff
changeset
|
330 |
49615
0ddc2f13992e
(font-lock-reference-face): Add obsolescence declaration and remove redundant
Juanma Barranquero <lekktu@gmail.com>
parents:
49569
diff
changeset
|
331 (defvar font-lock-reference-face 'font-lock-constant-face) |
94157
f4ec8461e0fc
(font-lock-reference-face): Add WHEN to obsolescence declaration.
Juanma Barranquero <lekktu@gmail.com>
parents:
93904
diff
changeset
|
332 (make-obsolete-variable 'font-lock-reference-face 'font-lock-constant-face "20.3") |
33360
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
333 |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
334 ;; Fontification variables: |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
335 |
4053 | 336 (defvar font-lock-keywords nil |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
337 "A list of the keywords to highlight. |
56238
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
338 There are two kinds of values: user-level, and compiled. |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
339 |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
340 A user-level keywords list is what a major mode or the user would |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
341 set up. Normally the list would come from `font-lock-defaults'. |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
342 through selection of a fontification level and evaluation of any |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
343 contained expressions. You can also alter it by calling |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
344 `font-lock-add-keywords' or `font-lock-remove-keywords' with MODE = nil. |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
345 |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
346 Each element in a user-level keywords list should have one of these forms: |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
347 |
11515
0ebfc7701ebf
Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents:
11467
diff
changeset
|
348 MATCHER |
65960
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
349 (MATCHER . SUBEXP) |
11515
0ebfc7701ebf
Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents:
11467
diff
changeset
|
350 (MATCHER . FACENAME) |
0ebfc7701ebf
Make font-lock.el use compiled keywords; added FN as possible matcher.
Simon Marshall <simon@gnu.org>
parents:
11467
diff
changeset
|
351 (MATCHER . HIGHLIGHT) |
76000
8d61685ee62b
Revert the accidental commit of unrelated patches in the previous commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75999
diff
changeset
|
352 (MATCHER HIGHLIGHT ...) |
14468
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
353 (eval . FORM) |
4053 | 354 |
37693
15212455191b
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37522
diff
changeset
|
355 where MATCHER can be either the regexp to search for, or the function name to |
56553
a474fcb6d318
(font-lock-keywords): Docstring improvement.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56447
diff
changeset
|
356 call to make the search (called with one argument, the limit of the search; |
78492
7c8949dbfa0d
Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents:
78236
diff
changeset
|
357 it should return non-nil, move point, and set `match-data' appropriately if |
56553
a474fcb6d318
(font-lock-keywords): Docstring improvement.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56447
diff
changeset
|
358 it succeeds; like `re-search-forward' would). |
37693
15212455191b
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37522
diff
changeset
|
359 MATCHER regexps can be generated via the function `regexp-opt'. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
360 |
14468
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
361 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
|
362 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
|
363 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
|
364 |
37693
15212455191b
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37522
diff
changeset
|
365 HIGHLIGHT should be either MATCH-HIGHLIGHT or MATCH-ANCHORED. |
15212455191b
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37522
diff
changeset
|
366 |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
367 For highlighting single items, for example each instance of the word \"foo\", |
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
368 typically only MATCH-HIGHLIGHT is required. |
13982 | 369 However, if an item or (typically) items are to be highlighted following the |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
370 instance of another item (the anchor), for example each instance of the |
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
371 word \"bar\" following the word \"anchor\" then MATCH-ANCHORED may be required. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
372 |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
373 MATCH-HIGHLIGHT should be of the form: |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
374 |
65960
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
375 (SUBEXP FACENAME [OVERRIDE [LAXMATCH]]) |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
376 |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
377 SUBEXP is the number of the subexpression of MATCHER to be highlighted. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
378 |
65960
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
379 FACENAME is an expression whose value is the face name to use. |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
380 Instead of a face, FACENAME can evaluate to a property list |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
381 of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) |
37693
15212455191b
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37522
diff
changeset
|
382 in which case all the listed text-properties will be set rather than |
61392
43b4f51d1049
(font-lock-keywords): Docstring fixes.
Lute Kamstra <lute@gnu.org>
parents:
61039
diff
changeset
|
383 just FACE. In such a case, you will most likely want to put those |
37693
15212455191b
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37522
diff
changeset
|
384 properties in `font-lock-extra-managed-props' or to override |
15212455191b
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37522
diff
changeset
|
385 `font-lock-unfontify-region-function'. |
4053 | 386 |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
387 OVERRIDE and LAXMATCH are flags. If OVERRIDE is t, existing fontification can |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
388 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
|
389 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
|
390 which the new or existing fontification, respectively, takes precedence. |
65960
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
391 If LAXMATCH is non-nil, that means don't signal an error if there is |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
392 no match for SUBEXP in MATCHER. |
4053 | 393 |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
394 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
|
395 |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
396 \"\\\\\\=<foo\\\\\\=>\" discrete occurrences of \"foo\" in the value of the |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
397 variable `font-lock-keyword-face'. |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
398 (\"fu\\\\(bar\\\\)\" . 1) substring \"bar\" within all occurrences of \"fubar\" in |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
399 the value of `font-lock-keyword-face'. |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
400 (\"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
|
401 (\"foo\\\\|bar\" 0 foo-bar-face t) |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
402 occurrences of either \"foo\" or \"bar\" in the value |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
403 of `foo-bar-face', even if already highlighted. |
20190
bc7fabb22520
Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents:
19935
diff
changeset
|
404 (fubar-match 1 fubar-face) |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
405 the first subexpression within all occurrences of |
20190
bc7fabb22520
Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents:
19935
diff
changeset
|
406 whatever the function `fubar-match' finds and matches |
bc7fabb22520
Allow any number of ::foos in declarative items.
Simon Marshall <simon@gnu.org>
parents:
19935
diff
changeset
|
407 in the value of `fubar-face'. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
408 |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
409 MATCH-ANCHORED should be of the form: |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
410 |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
411 (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
|
412 |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
413 where MATCHER is a regexp to search for or the function name to call to make |
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
414 the search, as for MATCH-HIGHLIGHT above, but with one exception; see below. |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
415 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
|
416 the last, instance MATCH-ANCHORED's MATCHER is used. Therefore they can be |
63506
868fbdaab045
(font-lock-keywords): Fix spelling in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents:
63105
diff
changeset
|
417 used to initialize before, and cleanup after, MATCHER is used. Typically, |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
418 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
|
419 MATCHER, before starting with MATCH-ANCHORED's MATCHER. POST-MATCH-FORM might |
61392
43b4f51d1049
(font-lock-keywords): Docstring fixes.
Lute Kamstra <lute@gnu.org>
parents:
61039
diff
changeset
|
420 be used to move back, 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
|
421 |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
422 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
|
423 |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
424 (\"\\\\\\=<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
|
425 |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
426 discrete occurrences of \"anchor\" in the value of `anchor-face', and subsequent |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
427 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
|
428 (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
|
429 initially searched for starting from the end of the match of \"anchor\", and |
61392
43b4f51d1049
(font-lock-keywords): Docstring fixes.
Lute Kamstra <lute@gnu.org>
parents:
61039
diff
changeset
|
430 searching for subsequent instances of \"anchor\" resumes from where searching |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
431 for \"item\" concluded.) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
432 |
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
|
433 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
|
434 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
|
435 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
|
436 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
|
437 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
|
438 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
|
439 |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
440 These regular expressions can match text which spans lines, although |
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
441 it is better to avoid it if possible since updating them while editing |
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
442 text is slower, and it is not guaranteed to be always correct when using |
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
443 support modes like jit-lock or lazy-lock. |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
444 |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
445 This variable is set by major modes via the variable `font-lock-defaults'. |
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
446 Be careful when composing regexps for this list; a poorly written pattern can |
56238
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
447 dramatically slow things down! |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
448 |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
449 A compiled keywords list starts with t. It is produced internal |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
450 by `font-lock-compile-keywords' from a user-level keywords list. |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
451 Its second element is the user-level keywords list that was |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
452 compiled. The remaining elements have the same form as |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
453 user-level keywords, but normally their values have been |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
454 optimized.") |
4053 | 455 |
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
|
456 (defvar font-lock-keywords-alist nil |
62208
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
457 "Alist of additional `font-lock-keywords' elements for major modes. |
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
458 |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
459 Each element has the form (MODE KEYWORDS . HOW). |
62208
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
460 `font-lock-set-defaults' adds the elements in the list KEYWORDS to |
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
461 `font-lock-keywords' when Font Lock is turned on in major mode MODE. |
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
462 |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
463 If HOW is nil, KEYWORDS are added at the beginning of |
62208
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
464 `font-lock-keywords'. If it is `set', they are used to replace the |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
465 value of `font-lock-keywords'. If HOW is any other non-nil value, |
62208
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
466 they are added at the end. |
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
467 |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
468 This is normally set via `font-lock-add-keywords' and |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
469 `font-lock-remove-keywords'.") |
77365
bc5c78f77063
(font-lock-keywords-alist): Mark as risky.
Richard M. Stallman <rms@gnu.org>
parents:
76961
diff
changeset
|
470 (put 'font-lock-keywords-alist 'risky-local-variable t) |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
471 |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
472 (defvar font-lock-removed-keywords-alist nil |
62208
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
473 "Alist of `font-lock-keywords' elements to be removed for major modes. |
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
474 |
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
475 Each element has the form (MODE . KEYWORDS). `font-lock-set-defaults' |
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
476 removes the elements in the list KEYWORDS from `font-lock-keywords' |
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
477 when Font Lock is turned on in major mode MODE. |
3eeb147cd9e0
(font-lock-keywords-alist, font-lock-removed-keywords-alist): Clarify docstrings.
Lute Kamstra <lute@gnu.org>
parents:
62078
diff
changeset
|
478 |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
479 This is normally set via `font-lock-add-keywords' and |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
480 `font-lock-remove-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
|
481 |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
482 (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
|
483 "*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
|
484 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
|
485 |
4053 | 486 (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
|
487 "*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
|
488 This is normally set via `font-lock-defaults'.") |
37227
e7d998ab9275
made font-lock-keywords-case-fold-search buffer-local
Sam Steingold <sds@gnu.org>
parents:
36462
diff
changeset
|
489 (make-variable-buffer-local 'font-lock-keywords-case-fold-search) |
4053 | 490 |
32483
09a7b2ac5750
(font-lock-syntactically-fontified): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32474
diff
changeset
|
491 (defvar font-lock-syntactically-fontified 0 |
09a7b2ac5750
(font-lock-syntactically-fontified): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32474
diff
changeset
|
492 "Point up to which `font-lock-syntactic-keywords' has been applied. |
09a7b2ac5750
(font-lock-syntactically-fontified): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32474
diff
changeset
|
493 If nil, this is ignored, in which case the syntactic fontification may |
09a7b2ac5750
(font-lock-syntactically-fontified): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32474
diff
changeset
|
494 sometimes be slightly incorrect.") |
09a7b2ac5750
(font-lock-syntactically-fontified): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32474
diff
changeset
|
495 (make-variable-buffer-local 'font-lock-syntactically-fontified) |
09a7b2ac5750
(font-lock-syntactically-fontified): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32474
diff
changeset
|
496 |
33360
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
497 (defvar font-lock-syntactic-face-function |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
498 (lambda (state) |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
499 (if (nth 3 state) font-lock-string-face font-lock-comment-face)) |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
500 "Function to determine which face to use when fontifying syntactically. |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
501 The function is called with a single parameter (the state as returned by |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
502 `parse-partial-sexp' at the beginning of the region to highlight) and |
61826
f83763576d20
(font-lock-syntactic-face-function): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents:
61813
diff
changeset
|
503 should return a face. This is normally set via `font-lock-defaults'.") |
33360
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
504 |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
505 (defvar font-lock-syntactic-keywords nil |
65960
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
506 "A list of the syntactic keywords to put syntax properties on. |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
507 The value can be the list itself, or the name of a function or variable |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
508 whose value is the list. |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
509 |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
510 See `font-lock-keywords' for a description of the form of this list; |
65960
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
511 only the differences are stated here. MATCH-HIGHLIGHT should be of the form: |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
512 |
65960
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
513 (SUBEXP SYNTAX OVERRIDE LAXMATCH) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
514 |
32509
54ef67bbcd42
(font-lock-syntactic-keywords): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32483
diff
changeset
|
515 where SYNTAX can be a string (as taken by `modify-syntax-entry'), a syntax |
54ef67bbcd42
(font-lock-syntactic-keywords): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32483
diff
changeset
|
516 table, a cons cell (as returned by `string-to-syntax') or an expression whose |
54ef67bbcd42
(font-lock-syntactic-keywords): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32483
diff
changeset
|
517 value is such a form. OVERRIDE cannot be `prepend' or `append'. |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
518 |
65960
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
519 Here are two examples of elements of `font-lock-syntactic-keywords' |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
520 and what they do: |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
521 |
32509
54ef67bbcd42
(font-lock-syntactic-keywords): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32483
diff
changeset
|
522 (\"\\\\$\\\\(#\\\\)\" 1 \".\") |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
523 |
65960
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
524 gives a hash character punctuation syntax (\".\") when following a |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
525 dollar-sign character. Hash characters in other contexts will still |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
526 follow whatever the syntax table says about the hash character. |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
527 |
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
528 (\"\\\\('\\\\).\\\\('\\\\)\" |
32509
54ef67bbcd42
(font-lock-syntactic-keywords): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32483
diff
changeset
|
529 (1 \"\\\"\") |
54ef67bbcd42
(font-lock-syntactic-keywords): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32483
diff
changeset
|
530 (2 \"\\\"\")) |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
531 |
65960
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
532 gives a pair single-quotes, which surround a single character, a SYNTAX of |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
533 \"\\\"\" (meaning string quote syntax). Single-quote characters in other |
59561c56ebba
(font-lock-syntactic-keywords, font-lock-keywords): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
65618
diff
changeset
|
534 contexts will not be affected. |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
535 |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
536 This is normally set via `font-lock-defaults'.") |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
537 |
8457
c0492d7043b2
(font-lock-syntax-table): New syntax table.
Richard M. Stallman <rms@gnu.org>
parents:
7915
diff
changeset
|
538 (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
|
539 "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
|
540 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
|
541 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
|
542 |
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
|
543 (defvar font-lock-beginning-of-syntax-function nil |
45774
71755f1fa5a4
(font-lock-beginning-of-syntax-function): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45762
diff
changeset
|
544 "*Non-nil means use this function to move back outside all constructs. |
71755f1fa5a4
(font-lock-beginning-of-syntax-function): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45762
diff
changeset
|
545 When called with no args it should move point backward to a place which |
71755f1fa5a4
(font-lock-beginning-of-syntax-function): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45762
diff
changeset
|
546 is not in a string or comment and not within any bracket-pairs (or else, |
71755f1fa5a4
(font-lock-beginning-of-syntax-function): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45762
diff
changeset
|
547 a place such that any bracket-pairs outside it can be ignored for Emacs |
71755f1fa5a4
(font-lock-beginning-of-syntax-function): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45762
diff
changeset
|
548 syntax analysis and fontification). |
71755f1fa5a4
(font-lock-beginning-of-syntax-function): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45762
diff
changeset
|
549 |
62638
98478012afa8
(font-lock-beginning-of-syntax-function): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents:
62549
diff
changeset
|
550 If this is nil, Font Lock uses `syntax-begin-function' to move back |
98478012afa8
(font-lock-beginning-of-syntax-function): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents:
62549
diff
changeset
|
551 outside of any comment, string, or sexp. This variable is semi-obsolete; |
98478012afa8
(font-lock-beginning-of-syntax-function): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents:
62549
diff
changeset
|
552 we recommend setting `syntax-begin-function' instead. |
98478012afa8
(font-lock-beginning-of-syntax-function): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents:
62549
diff
changeset
|
553 |
98478012afa8
(font-lock-beginning-of-syntax-function): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents:
62549
diff
changeset
|
554 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
|
555 |
14468
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
556 (defvar font-lock-mark-block-function nil |
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
557 "*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
|
558 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
|
559 enclosing textual block and mark at the end. |
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
560 This is normally set via `font-lock-defaults'.") |
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
561 |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
562 (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
|
563 "Function to use for fontifying the buffer. |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
564 This is normally set via `font-lock-defaults'.") |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
565 |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
566 (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
|
567 "Function to use for unfontifying the buffer. |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
568 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
|
569 This is normally set via `font-lock-defaults'.") |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
570 |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
571 (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
|
572 "Function to use for fontifying a region. |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
573 It should take two args, the beginning and end of the region, and an optional |
61860
330b0fc9b83d
(font-lock-fontify-region-function): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents:
61826
diff
changeset
|
574 third arg VERBOSE. If VERBOSE is non-nil, the function should print status |
330b0fc9b83d
(font-lock-fontify-region-function): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents:
61826
diff
changeset
|
575 messages. This is normally set via `font-lock-defaults'.") |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
576 |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
577 (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
|
578 "Function to use for unfontifying a region. |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
579 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
|
580 This is normally set via `font-lock-defaults'.") |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
581 |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
582 (defvar font-lock-inhibit-thing-lock nil |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
583 "List of Font Lock mode related modes that should not be turned on. |
26620 | 584 Currently, valid mode names are `fast-lock-mode', `jit-lock-mode' and |
25048
6d32371bea44
(top-level): Add jit-lock-mode as new support mode.
Gerd Moellmann <gerd@gnu.org>
parents:
25045
diff
changeset
|
585 `lazy-lock-mode'. This is normally set via `font-lock-defaults'.") |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
586 |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
587 (defvar font-lock-multiline nil |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
588 "Whether font-lock should cater to multiline keywords. |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
589 If nil, don't try to handle multiline patterns. |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
590 If t, always handle multiline patterns. |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
591 If `undecided', don't try to handle multiline patterns until you see one. |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
592 Major/minor modes can set this variable if they know which option applies.") |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
593 |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
594 (defvar font-lock-fontified nil) ; Whether we have fontified the buffer. |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
595 |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
596 ;; Font Lock mode. |
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
597 |
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
598 (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
|
599 ;; |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
600 ;; 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
|
601 (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
|
602 ;; |
63b6583c9e5c
Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents:
15814
diff
changeset
|
603 ;; 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
|
604 ;; 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
|
605 (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
|
606 "Bind variables according to VARLIST and eval BODY restoring buffer state." |
63840
0e0d1ff0b641
(save-buffer-state): Use `declare'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
63506
diff
changeset
|
607 (declare (indent 1) (debug let)) |
44229
8c0a16af093a
(save-buffer-state): Use make-symbol to bind `modified'.
Eli Zaretskii <eliz@gnu.org>
parents:
43835
diff
changeset
|
608 (let ((modified (make-symbol "modified"))) |
8c0a16af093a
(save-buffer-state): Use make-symbol to bind `modified'.
Eli Zaretskii <eliz@gnu.org>
parents:
43835
diff
changeset
|
609 `(let* ,(append varlist |
44258
fc8fbdc5ca4c
(save-buffer-state): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
44229
diff
changeset
|
610 `((,modified (buffer-modified-p)) |
44229
8c0a16af093a
(save-buffer-state): Use make-symbol to bind `modified'.
Eli Zaretskii <eliz@gnu.org>
parents:
43835
diff
changeset
|
611 (buffer-undo-list t) |
8c0a16af093a
(save-buffer-state): Use make-symbol to bind `modified'.
Eli Zaretskii <eliz@gnu.org>
parents:
43835
diff
changeset
|
612 (inhibit-read-only t) |
8c0a16af093a
(save-buffer-state): Use make-symbol to bind `modified'.
Eli Zaretskii <eliz@gnu.org>
parents:
43835
diff
changeset
|
613 (inhibit-point-motion-hooks t) |
8c0a16af093a
(save-buffer-state): Use make-symbol to bind `modified'.
Eli Zaretskii <eliz@gnu.org>
parents:
43835
diff
changeset
|
614 (inhibit-modification-hooks t) |
8c0a16af093a
(save-buffer-state): Use make-symbol to bind `modified'.
Eli Zaretskii <eliz@gnu.org>
parents:
43835
diff
changeset
|
615 deactivate-mark |
8c0a16af093a
(save-buffer-state): Use make-symbol to bind `modified'.
Eli Zaretskii <eliz@gnu.org>
parents:
43835
diff
changeset
|
616 buffer-file-name |
8c0a16af093a
(save-buffer-state): Use make-symbol to bind `modified'.
Eli Zaretskii <eliz@gnu.org>
parents:
43835
diff
changeset
|
617 buffer-file-truename)) |
87419
b23fbf3b100b
(save-buffer-state): Make sure the state of the
Andreas Schwab <schwab@suse.de>
parents:
87108
diff
changeset
|
618 (unwind-protect |
b23fbf3b100b
(save-buffer-state): Make sure the state of the
Andreas Schwab <schwab@suse.de>
parents:
87108
diff
changeset
|
619 (progn |
b23fbf3b100b
(save-buffer-state): Make sure the state of the
Andreas Schwab <schwab@suse.de>
parents:
87108
diff
changeset
|
620 ,@body) |
b23fbf3b100b
(save-buffer-state): Make sure the state of the
Andreas Schwab <schwab@suse.de>
parents:
87108
diff
changeset
|
621 (unless ,modified |
b23fbf3b100b
(save-buffer-state): Make sure the state of the
Andreas Schwab <schwab@suse.de>
parents:
87108
diff
changeset
|
622 (restore-buffer-modified-p nil)))))) |
19846
f5f2feb0bd0f
Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents:
19788
diff
changeset
|
623 ;; |
f5f2feb0bd0f
Try to comment where font-lock-keyword order is important.
Simon Marshall <simon@gnu.org>
parents:
19788
diff
changeset
|
624 ;; Shut up the byte compiler. |
33360
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
625 (defvar font-lock-face-attributes)) ; Obsolete but respected if set. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
626 |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
627 (defun font-lock-mode-internal (arg) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
628 ;; Turn on Font Lock mode. |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
629 (when arg |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
630 (add-hook 'after-change-functions 'font-lock-after-change-function t t) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
631 (font-lock-set-defaults) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
632 (font-lock-turn-on-thing-lock) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
633 ;; Fontify the buffer if we have to. |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
634 (let ((max-size (font-lock-value-in-major-mode font-lock-maximum-size))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
635 (cond (font-lock-fontified |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
636 nil) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
637 ((or (null max-size) (> max-size (buffer-size))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
638 (font-lock-fontify-buffer)) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
639 (font-lock-verbose |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
640 (message "Fontifying %s...buffer size greater than font-lock-maximum-size" |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
641 (buffer-name)))))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
642 ;; Turn off Font Lock mode. |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
643 (unless font-lock-mode |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
644 (remove-hook 'after-change-functions 'font-lock-after-change-function t) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
645 (font-lock-unfontify-buffer) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
646 (font-lock-turn-off-thing-lock))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
647 |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
648 (defun font-lock-add-keywords (mode keywords &optional how) |
26775
ea2b51ce35a7
(font-lock-multiline): New variable.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26746
diff
changeset
|
649 "Add highlighting KEYWORDS for MODE. |
61826
f83763576d20
(font-lock-syntactic-face-function): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents:
61813
diff
changeset
|
650 |
26775
ea2b51ce35a7
(font-lock-multiline): New variable.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26746
diff
changeset
|
651 MODE should be a symbol, the major mode command name, such as `c-mode' |
16852
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
652 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
|
653 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
|
654 By default they are added at the beginning of the current highlighting list. |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
655 If optional argument HOW is `set', they are used to replace the current |
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
656 highlighting list. If HOW is any other non-nil value, they are added at the |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
657 end of the current highlighting list. |
16578
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-next and more complex font-lock-match-c++-style-declaration-item-and-skip-to-next.
Simon Marshall <simon@gnu.org>
parents:
16456
diff
changeset
|
658 |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 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
|
660 |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 (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
|
662 '((\"\\\\\\=<\\\\(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
|
663 (\"\\\\\\=<\\\\(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
|
664 |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 adds two fontification patterns for C mode, to fontify `FIXME:' words, even in |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
666 comments, and to fontify `and', `or' and `not' words as keywords. |
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
667 |
63025
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
668 The above procedure will only add the keywords for C mode, not |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
669 for modes derived from C mode. To add them for derived modes too, |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
670 pass nil for MODE and add the call to c-mode-hook. |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
671 |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
672 For example: |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
673 |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
674 (add-hook 'c-mode-hook |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
675 (lambda () |
63105
ad41fcdb0642
(font-lock-add-keywords): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents:
63049
diff
changeset
|
676 (font-lock-add-keywords nil |
63025
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
677 '((\"\\\\\\=<\\\\(FIXME\\\\):\" 1 font-lock-warning-face prepend) |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
678 (\"\\\\\\=<\\\\(and\\\\|or\\\\|not\\\\)\\\\\\=>\" . |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
679 font-lock-keyword-face))))) |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
680 |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
681 The above procedure may fail to add keywords to derived modes if |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
682 some involved major mode does not follow the standard conventions. |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
683 File a bug report if this happens, so the major mode can be corrected. |
37693
15212455191b
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37522
diff
changeset
|
684 |
47121
ec5f8ce91ceb
(font-lock-add-keywords): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
46249
diff
changeset
|
685 Note that some modes have specialized support for additional patterns, e.g., |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
686 see the variables `c-font-lock-extra-types', `c++-font-lock-extra-types', |
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
687 `objc-font-lock-extra-types' and `java-font-lock-extra-types'." |
26775
ea2b51ce35a7
(font-lock-multiline): New variable.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26746
diff
changeset
|
688 (cond (mode |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
689 ;; If MODE is non-nil, add the KEYWORDS and HOW spec to |
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
|
690 ;; `font-lock-keywords-alist' so `font-lock-set-defaults' uses them. |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
691 (let ((spec (cons keywords how)) cell) |
26775
ea2b51ce35a7
(font-lock-multiline): New variable.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26746
diff
changeset
|
692 (if (setq cell (assq mode font-lock-keywords-alist)) |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
693 (if (eq how 'set) |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
694 (setcdr cell (list spec)) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
695 (setcdr cell (append (cdr cell) (list spec)))) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
696 (push (list mode spec) font-lock-keywords-alist))) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
697 ;; Make sure that `font-lock-removed-keywords-alist' does not |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
698 ;; contain the new keywords. |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
699 (font-lock-update-removed-keyword-alist mode keywords how)) |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
700 (t |
78000
4d83e9f9b01e
(font-lock-add-keywords): In case font-lock was only
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77365
diff
changeset
|
701 (when (and font-lock-mode |
4d83e9f9b01e
(font-lock-add-keywords): In case font-lock was only
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77365
diff
changeset
|
702 (not (or font-lock-keywords font-lock-defaults))) |
4d83e9f9b01e
(font-lock-add-keywords): In case font-lock was only
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77365
diff
changeset
|
703 ;; The major mode has not set any keywords, so when we enabled |
4d83e9f9b01e
(font-lock-add-keywords): In case font-lock was only
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77365
diff
changeset
|
704 ;; font-lock-mode it only enabled the font-core.el part, not the |
4d83e9f9b01e
(font-lock-add-keywords): In case font-lock was only
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77365
diff
changeset
|
705 ;; font-lock-mode-internal. Try again. |
4d83e9f9b01e
(font-lock-add-keywords): In case font-lock was only
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77365
diff
changeset
|
706 (font-lock-mode -1) |
4d83e9f9b01e
(font-lock-add-keywords): In case font-lock was only
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77365
diff
changeset
|
707 (set (make-local-variable 'font-lock-defaults) '(nil t)) |
4d83e9f9b01e
(font-lock-add-keywords): In case font-lock was only
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77365
diff
changeset
|
708 (font-lock-mode 1)) |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
709 ;; Otherwise set or add the keywords now. |
63025
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
710 ;; This is a no-op if it has been done already in this buffer |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
711 ;; for the correct major mode. |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
712 (font-lock-set-defaults) |
56238
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
713 (let ((was-compiled (eq (car font-lock-keywords) t))) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
714 ;; Bring back the user-level (uncompiled) keywords. |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
715 (if was-compiled |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
716 (setq font-lock-keywords (cadr font-lock-keywords))) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
717 ;; Now modify or replace them. |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
718 (if (eq how 'set) |
56238
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
719 (setq font-lock-keywords keywords) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
720 (font-lock-remove-keywords nil keywords) ;to avoid duplicates |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
721 (let ((old (if (eq (car-safe font-lock-keywords) t) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
722 (cdr font-lock-keywords) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
723 font-lock-keywords))) |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
724 (setq font-lock-keywords (if how |
56238
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
725 (append old keywords) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
726 (append keywords old))))) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
727 ;; If the keywords were compiled before, compile them again. |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
728 (if was-compiled |
67738
f2537ba84319
(font-lock-default-fontify-buffer): Try and set-defaults even if font-lock-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67678
diff
changeset
|
729 (setq font-lock-keywords |
72933
cc737d1f33f9
(font-lock-compile-keywords): Rename optional arg to SYNTACTIC-KEYWORDS
Richard M. Stallman <rms@gnu.org>
parents:
72426
diff
changeset
|
730 (font-lock-compile-keywords font-lock-keywords))))))) |
26746
d22cd599a91a
(font-lock-default-fontify-region): Fix subtle
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26620
diff
changeset
|
731 |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
732 (defun font-lock-update-removed-keyword-alist (mode keywords how) |
61910
caf171b08132
(font-lock-add-keywords, font-lock-remove-keywords): Clarify docstring.
Lute Kamstra <lute@gnu.org>
parents:
61891
diff
changeset
|
733 "Update `font-lock-removed-keywords-alist' when adding new KEYWORDS to MODE." |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
734 ;; When font-lock is enabled first all keywords in the list |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
735 ;; `font-lock-keywords-alist' are added, then all keywords in the |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
736 ;; list `font-lock-removed-keywords-alist' are removed. If a |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
737 ;; keyword was once added, removed, and then added again it must be |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
738 ;; removed from the removed-keywords list. Otherwise the second add |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
739 ;; will not take effect. |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
740 (let ((cell (assq mode font-lock-removed-keywords-alist))) |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
741 (if cell |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
742 (if (eq how 'set) |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
743 ;; A new set of keywords is defined. Forget all about |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
744 ;; our old keywords that should be removed. |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
745 (setq font-lock-removed-keywords-alist |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
746 (delq cell font-lock-removed-keywords-alist)) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
747 ;; Delete all previously removed keywords. |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
748 (dolist (kword keywords) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
749 (setcdr cell (delete kword (cdr cell)))) |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
750 ;; Delete the mode cell if empty. |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
751 (if (null (cdr cell)) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
752 (setq font-lock-removed-keywords-alist |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
753 (delq cell font-lock-removed-keywords-alist))))))) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
754 |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
755 ;; Written by Anders Lindgren <andersl@andersl.com>. |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
756 ;; |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
757 ;; Case study: |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
758 ;; (I) The keywords are removed from a major mode. |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
759 ;; In this case the keyword could be local (i.e. added earlier by |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
760 ;; `font-lock-add-keywords'), global, or both. |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
761 ;; |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
762 ;; (a) In the local case we remove the keywords from the variable |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
763 ;; `font-lock-keywords-alist'. |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
764 ;; |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
765 ;; (b) The actual global keywords are not known at this time. |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
766 ;; All keywords are added to `font-lock-removed-keywords-alist', |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
767 ;; when font-lock is enabled those keywords are removed. |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
768 ;; |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
769 ;; Note that added keywords are taken out of the list of removed |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
770 ;; keywords. This ensure correct operation when the same keyword |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
771 ;; is added and removed several times. |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
772 ;; |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
773 ;; (II) The keywords are removed from the current buffer. |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
774 (defun font-lock-remove-keywords (mode keywords) |
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
775 "Remove highlighting KEYWORDS for MODE. |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
776 |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
777 MODE should be a symbol, the major mode command name, such as `c-mode' |
37693
15212455191b
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37522
diff
changeset
|
778 or nil. If nil, highlighting keywords are removed for the current buffer. |
15212455191b
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37522
diff
changeset
|
779 |
63025
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
780 To make the removal apply to modes derived from MODE as well, |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
781 pass nil for MODE and add the call to MODE-hook. This may fail |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
782 for some derived modes if some involved major mode does not |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
783 follow the standard conventions. File a bug report if this |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
784 happens, so the major mode can be corrected." |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
785 (cond (mode |
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
786 ;; Remove one keyword at the time. |
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
787 (dolist (keyword keywords) |
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
788 (let ((top-cell (assq mode font-lock-keywords-alist))) |
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
789 ;; If MODE is non-nil, remove the KEYWORD from |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
790 ;; `font-lock-keywords-alist'. |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
791 (when top-cell |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
792 (dolist (keyword-list-how-pair (cdr top-cell)) |
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
793 ;; `keywords-list-how-pair' is a cons with a list of |
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
794 ;; keywords in the car top-cell and the original how |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
795 ;; argument in the cdr top-cell. |
67571
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
796 (setcar keyword-list-how-pair |
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
797 (delete keyword (car keyword-list-how-pair)))) |
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
798 ;; Remove keyword list/how pair when the keyword list |
d263a07df092
(font-lock-keywords-alist): Rename `append' to `how'.
Romain Francoise <romain@orebokech.com>
parents:
67290
diff
changeset
|
799 ;; is empty and how doesn't specify `set'. (If it |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
800 ;; should be deleted then previously deleted keywords |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
801 ;; would appear again.) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
802 (let ((cell top-cell)) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
803 (while (cdr cell) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
804 (if (and (null (car (car (cdr cell)))) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
805 (not (eq (cdr (car (cdr cell))) 'set))) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
806 (setcdr cell (cdr (cdr cell))) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
807 (setq cell (cdr cell))))) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
808 ;; Final cleanup, remove major mode cell if last keyword |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
809 ;; was deleted. |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
810 (if (null (cdr top-cell)) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
811 (setq font-lock-keywords-alist |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
812 (delq top-cell font-lock-keywords-alist)))) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
813 ;; Remember the keyword in case it is not local. |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
814 (let ((cell (assq mode font-lock-removed-keywords-alist))) |
26920
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
815 (if cell |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
816 (unless (member keyword (cdr cell)) |
e510f839bc63
System for adding and removing keywords.
Gerd Moellmann <gerd@gnu.org>
parents:
26915
diff
changeset
|
817 (nconc cell (list keyword))) |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
818 (push (cons mode (list keyword)) |
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
819 font-lock-removed-keywords-alist)))))) |
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
820 (t |
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
821 ;; Otherwise remove it immediately. |
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
822 (font-lock-set-defaults) |
56238
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
823 (let ((was-compiled (eq (car font-lock-keywords) t))) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
824 ;; Bring back the user-level (uncompiled) keywords. |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
825 (if was-compiled |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
826 (setq font-lock-keywords (cadr font-lock-keywords))) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
827 |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
828 ;; Edit them. |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
829 (setq font-lock-keywords (copy-sequence font-lock-keywords)) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
830 (dolist (keyword keywords) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
831 (setq font-lock-keywords |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
832 (delete keyword font-lock-keywords))) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
833 |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
834 ;; If the keywords were compiled before, compile them again. |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
835 (if was-compiled |
67738
f2537ba84319
(font-lock-default-fontify-buffer): Try and set-defaults even if font-lock-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67678
diff
changeset
|
836 (setq font-lock-keywords |
72933
cc737d1f33f9
(font-lock-compile-keywords): Rename optional arg to SYNTACTIC-KEYWORDS
Richard M. Stallman <rms@gnu.org>
parents:
72426
diff
changeset
|
837 (font-lock-compile-keywords font-lock-keywords))))))) |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
838 |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
839 ;;; Font Lock Support mode. |
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
840 |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
841 ;; 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
|
842 ;; 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
|
843 ;; 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
|
844 ;; `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
|
845 ;; themselves. |
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
846 |
25319
f9b3511a51c4
(font-lock-support-mode): Make `jit-lock-mode'
Gerd Moellmann <gerd@gnu.org>
parents:
25286
diff
changeset
|
847 (defcustom font-lock-support-mode 'jit-lock-mode |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
848 "*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
|
849 Support modes speed up Font Lock mode by being choosy about when fontification |
65378
f9dc4686f0a5
(font-lock-support-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
65307
diff
changeset
|
850 occurs. The default support mode, Just-in-time Lock mode (symbol |
f9dc4686f0a5
(font-lock-support-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
65307
diff
changeset
|
851 `jit-lock-mode'), is recommended. |
f9dc4686f0a5
(font-lock-support-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
65307
diff
changeset
|
852 |
f9dc4686f0a5
(font-lock-support-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
65307
diff
changeset
|
853 Other, older support modes are Fast Lock mode (symbol `fast-lock-mode') and |
f9dc4686f0a5
(font-lock-support-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
65307
diff
changeset
|
854 Lazy Lock mode (symbol `lazy-lock-mode'). See those modes for more info. |
f9dc4686f0a5
(font-lock-support-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
65307
diff
changeset
|
855 However, they are no longer recommended, as Just-in-time Lock mode is better. |
f9dc4686f0a5
(font-lock-support-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
65307
diff
changeset
|
856 |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
857 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
|
858 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
|
859 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
|
860 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
|
861 ((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
|
862 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
|
863 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
|
864 |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
865 The value of this variable is used when Font Lock mode is turned on." |
17507
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
866 :type '(choice (const :tag "none" nil) |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
867 (const :tag "fast lock" fast-lock-mode) |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
868 (const :tag "lazy lock" lazy-lock-mode) |
25048
6d32371bea44
(top-level): Add jit-lock-mode as new support mode.
Gerd Moellmann <gerd@gnu.org>
parents:
25045
diff
changeset
|
869 (const :tag "jit lock" jit-lock-mode) |
17507
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
870 (repeat :menu-tag "mode specific" :tag "mode specific" |
33360
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
871 :value ((t . jit-lock-mode)) |
17507
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
872 (cons :tag "Instance" |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
873 (radio :tag "Mode" |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
874 (const :tag "all" t) |
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
875 (symbol :tag "name")) |
22892
850946452989
(lisp-font-lock-keywords-1): Fix previous change.
Simon Marshall <simon@gnu.org>
parents:
22857
diff
changeset
|
876 (radio :tag "Support" |
850946452989
(lisp-font-lock-keywords-1): Fix previous change.
Simon Marshall <simon@gnu.org>
parents:
22857
diff
changeset
|
877 (const :tag "none" nil) |
17507
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
878 (const :tag "fast lock" fast-lock-mode) |
25048
6d32371bea44
(top-level): Add jit-lock-mode as new support mode.
Gerd Moellmann <gerd@gnu.org>
parents:
25045
diff
changeset
|
879 (const :tag "lazy lock" lazy-lock-mode) |
6d32371bea44
(top-level): Add jit-lock-mode as new support mode.
Gerd Moellmann <gerd@gnu.org>
parents:
25045
diff
changeset
|
880 (const :tag "JIT lock" jit-lock-mode))) |
17507
fd87760f20cd
Cleaned up custom support.
Simon Marshall <simon@gnu.org>
parents:
17495
diff
changeset
|
881 )) |
29919
08e5e3740bf9
(font-lock-fontify-anchored-keywords): Use line-beginning-position.
Dave Love <fx@gnu.org>
parents:
29709
diff
changeset
|
882 :version "21.1" |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
883 :group 'font-lock) |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
884 |
47611
6bc56530304a
(fast-lock-mode, lazy-lock-mode, jit-lock-mode): Don't bind them variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47121
diff
changeset
|
885 (defvar fast-lock-mode) |
6bc56530304a
(fast-lock-mode, lazy-lock-mode, jit-lock-mode): Don't bind them variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47121
diff
changeset
|
886 (defvar lazy-lock-mode) |
6bc56530304a
(fast-lock-mode, lazy-lock-mode, jit-lock-mode): Don't bind them variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47121
diff
changeset
|
887 (defvar jit-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
|
888 |
87108
b7147cb1c966
Remove directory part from filenames in function declarations.
Glenn Morris <rgm@gnu.org>
parents:
86265
diff
changeset
|
889 (declare-function fast-lock-after-fontify-buffer "fast-lock") |
b7147cb1c966
Remove directory part from filenames in function declarations.
Glenn Morris <rgm@gnu.org>
parents:
86265
diff
changeset
|
890 (declare-function fast-lock-after-unfontify-buffer "fast-lock") |
b7147cb1c966
Remove directory part from filenames in function declarations.
Glenn Morris <rgm@gnu.org>
parents:
86265
diff
changeset
|
891 (declare-function fast-lock-mode "fast-lock") |
b7147cb1c966
Remove directory part from filenames in function declarations.
Glenn Morris <rgm@gnu.org>
parents:
86265
diff
changeset
|
892 (declare-function lazy-lock-after-fontify-buffer "lazy-lock") |
b7147cb1c966
Remove directory part from filenames in function declarations.
Glenn Morris <rgm@gnu.org>
parents:
86265
diff
changeset
|
893 (declare-function lazy-lock-after-unfontify-buffer "lazy-lock") |
b7147cb1c966
Remove directory part from filenames in function declarations.
Glenn Morris <rgm@gnu.org>
parents:
86265
diff
changeset
|
894 (declare-function lazy-lock-mode "lazy-lock") |
86265
22dc0bc9daf8
* frame.el (msdos-mouse-p):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85142
diff
changeset
|
895 |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
896 (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
|
897 (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
|
898 (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
|
899 (fast-lock-mode t)) |
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
900 ((eq thing-mode 'lazy-lock-mode) |
25048
6d32371bea44
(top-level): Add jit-lock-mode as new support mode.
Gerd Moellmann <gerd@gnu.org>
parents:
25045
diff
changeset
|
901 (lazy-lock-mode t)) |
6d32371bea44
(top-level): Add jit-lock-mode as new support mode.
Gerd Moellmann <gerd@gnu.org>
parents:
25045
diff
changeset
|
902 ((eq thing-mode 'jit-lock-mode) |
32216
82e4865603dd
(font-lock-defaults-alist): Remove the TeX entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31969
diff
changeset
|
903 ;; Prepare for jit-lock |
82e4865603dd
(font-lock-defaults-alist): Remove the TeX entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31969
diff
changeset
|
904 (remove-hook 'after-change-functions |
82e4865603dd
(font-lock-defaults-alist): Remove the TeX entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31969
diff
changeset
|
905 'font-lock-after-change-function t) |
82e4865603dd
(font-lock-defaults-alist): Remove the TeX entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31969
diff
changeset
|
906 (set (make-local-variable 'font-lock-fontify-buffer-function) |
32306
86a849ccfae1
(font-lock-defaults): Make buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32272
diff
changeset
|
907 'jit-lock-refontify) |
63049
2c644f271d4c
(font-lock-regexp-backslash)
Juri Linkov <juri@jurta.org>
parents:
63028
diff
changeset
|
908 ;; Don't fontify eagerly (and don't abort if the buffer is large). |
32216
82e4865603dd
(font-lock-defaults-alist): Remove the TeX entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31969
diff
changeset
|
909 (set (make-local-variable 'font-lock-fontified) t) |
82e4865603dd
(font-lock-defaults-alist): Remove the TeX entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31969
diff
changeset
|
910 ;; Use jit-lock. |
82e4865603dd
(font-lock-defaults-alist): Remove the TeX entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31969
diff
changeset
|
911 (jit-lock-register 'font-lock-fontify-region |
72230
d254902ce935
(font-lock-extend-jit-lock-region-after-change): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70530
diff
changeset
|
912 (not font-lock-keywords-only)) |
d254902ce935
(font-lock-extend-jit-lock-region-after-change): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70530
diff
changeset
|
913 ;; Tell jit-lock how we extend the region to refontify. |
d254902ce935
(font-lock-extend-jit-lock-region-after-change): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70530
diff
changeset
|
914 (add-hook 'jit-lock-after-change-extend-region-functions |
d254902ce935
(font-lock-extend-jit-lock-region-after-change): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70530
diff
changeset
|
915 'font-lock-extend-jit-lock-region-after-change |
d254902ce935
(font-lock-extend-jit-lock-region-after-change): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70530
diff
changeset
|
916 nil t))))) |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
917 |
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
918 (defun font-lock-turn-off-thing-lock () |
95545
02392717a9b9
(font-lock-turn-off-thing-lock, font-lock-after-fontify-buffer)
John Paul Wallington <jpw@pobox.com>
parents:
94678
diff
changeset
|
919 (cond ((bound-and-true-p fast-lock-mode) |
33360
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
920 (fast-lock-mode -1)) |
95545
02392717a9b9
(font-lock-turn-off-thing-lock, font-lock-after-fontify-buffer)
John Paul Wallington <jpw@pobox.com>
parents:
94678
diff
changeset
|
921 ((bound-and-true-p jit-lock-mode) |
32216
82e4865603dd
(font-lock-defaults-alist): Remove the TeX entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31969
diff
changeset
|
922 (jit-lock-unregister 'font-lock-fontify-region) |
82e4865603dd
(font-lock-defaults-alist): Remove the TeX entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31969
diff
changeset
|
923 ;; Reset local vars to the non-jit-lock case. |
82e4865603dd
(font-lock-defaults-alist): Remove the TeX entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31969
diff
changeset
|
924 (kill-local-variable 'font-lock-fontify-buffer-function)) |
95545
02392717a9b9
(font-lock-turn-off-thing-lock, font-lock-after-fontify-buffer)
John Paul Wallington <jpw@pobox.com>
parents:
94678
diff
changeset
|
925 ((bound-and-true-p lazy-lock-mode) |
33360
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
926 (lazy-lock-mode -1)))) |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
927 |
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
928 (defun font-lock-after-fontify-buffer () |
95545
02392717a9b9
(font-lock-turn-off-thing-lock, font-lock-after-fontify-buffer)
John Paul Wallington <jpw@pobox.com>
parents:
94678
diff
changeset
|
929 (cond ((bound-and-true-p fast-lock-mode) |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
930 (fast-lock-after-fontify-buffer)) |
29709
69ac77ea153c
(font-lock-after-fontify-buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28891
diff
changeset
|
931 ;; Useless now that jit-lock intercepts font-lock-fontify-buffer. -sm |
69ac77ea153c
(font-lock-after-fontify-buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28891
diff
changeset
|
932 ;; (jit-lock-mode |
69ac77ea153c
(font-lock-after-fontify-buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28891
diff
changeset
|
933 ;; (jit-lock-after-fontify-buffer)) |
95545
02392717a9b9
(font-lock-turn-off-thing-lock, font-lock-after-fontify-buffer)
John Paul Wallington <jpw@pobox.com>
parents:
94678
diff
changeset
|
934 ((bound-and-true-p lazy-lock-mode) |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
935 (lazy-lock-after-fontify-buffer)))) |
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
936 |
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
937 (defun font-lock-after-unfontify-buffer () |
95545
02392717a9b9
(font-lock-turn-off-thing-lock, font-lock-after-fontify-buffer)
John Paul Wallington <jpw@pobox.com>
parents:
94678
diff
changeset
|
938 (cond ((bound-and-true-p fast-lock-mode) |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
939 (fast-lock-after-unfontify-buffer)) |
29709
69ac77ea153c
(font-lock-after-fontify-buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28891
diff
changeset
|
940 ;; Useless as well. It's only called when: |
69ac77ea153c
(font-lock-after-fontify-buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28891
diff
changeset
|
941 ;; - turning off font-lock: it does not matter if we leave spurious |
69ac77ea153c
(font-lock-after-fontify-buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28891
diff
changeset
|
942 ;; `fontified' text props around since jit-lock-mode is also off. |
69ac77ea153c
(font-lock-after-fontify-buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28891
diff
changeset
|
943 ;; - font-lock-default-fontify-buffer fails: this is not run |
69ac77ea153c
(font-lock-after-fontify-buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28891
diff
changeset
|
944 ;; any more anyway. -sm |
30651
61c2f9fcb8f6
* emacs-lisp/cl-indent.el (toplevel): Indent `defclass',
Sam Steingold <sds@gnu.org>
parents:
29919
diff
changeset
|
945 ;; |
29709
69ac77ea153c
(font-lock-after-fontify-buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28891
diff
changeset
|
946 ;; (jit-lock-mode |
69ac77ea153c
(font-lock-after-fontify-buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28891
diff
changeset
|
947 ;; (jit-lock-after-unfontify-buffer)) |
95545
02392717a9b9
(font-lock-turn-off-thing-lock, font-lock-after-fontify-buffer)
John Paul Wallington <jpw@pobox.com>
parents:
94678
diff
changeset
|
948 ((bound-and-true-p lazy-lock-mode) |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
949 (lazy-lock-after-unfontify-buffer)))) |
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
950 |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
951 ;;; End of Font Lock Support mode. |
15492
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
952 |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
953 ;;; Fontification functions. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
954 |
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
|
955 ;; 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
|
956 ;; 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
|
957 ;; 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
|
958 ;; 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
|
959 ;; 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
|
960 ;; 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
|
961 ;; 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
|
962 ;; 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
|
963 ;; 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
|
964 ;; 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
|
965 ;; |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
966 ;; 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
|
967 ;; 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
|
968 ;; 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
|
969 ;; 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
|
970 ;; 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
|
971 ;; 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
|
972 ;; 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
|
973 ;; |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
974 ;; 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
|
975 ;; 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
|
976 ;; 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
|
977 ;; 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
|
978 ;; 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
|
979 ;; |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
980 ;; 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
|
981 ;; 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
|
982 ;; is not flexible enough for a particular major mode. For example, perhaps |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
983 ;; comments are just too hairy for `font-lock-fontify-syntactically-region' to |
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
984 ;; cope with. You need to write your own version of that function, e.g., |
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
985 ;; `hairy-fontify-syntactically-region', and make your own version of |
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
986 ;; `hairy-fontify-region' call that function before calling |
17055
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
987 ;; `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
|
988 ;; 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
|
989 ;; would call your region fontification function instead of its own. For |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
990 ;; example, TeX modes could fontify {\foo ...} and \bar{...} etc. multi-line |
17055
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
991 ;; 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
|
992 ;; 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
|
993 |
72250
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
994 (defvar font-lock-extend-after-change-region-function nil |
72308
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
995 "A function that determines the region to refontify after a change. |
72232
ed72e8922d85
(font-lock-extend-region-function, font-lock-extend-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72230
diff
changeset
|
996 |
ed72e8922d85
(font-lock-extend-region-function, font-lock-extend-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72230
diff
changeset
|
997 This variable is either nil, or is a function that determines the |
ed72e8922d85
(font-lock-extend-region-function, font-lock-extend-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72230
diff
changeset
|
998 region to refontify after a change. |
ed72e8922d85
(font-lock-extend-region-function, font-lock-extend-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72230
diff
changeset
|
999 It is usually set by the major mode via `font-lock-defaults'. |
ed72e8922d85
(font-lock-extend-region-function, font-lock-extend-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72230
diff
changeset
|
1000 Font-lock calls this function after each buffer change. |
ed72e8922d85
(font-lock-extend-region-function, font-lock-extend-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72230
diff
changeset
|
1001 |
ed72e8922d85
(font-lock-extend-region-function, font-lock-extend-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72230
diff
changeset
|
1002 The function is given three parameters, the standard BEG, END, and OLD-LEN |
ed72e8922d85
(font-lock-extend-region-function, font-lock-extend-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72230
diff
changeset
|
1003 from `after-change-functions'. It should return either a cons of the beginning |
72308
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1004 and end buffer positions \(in that order) of the region to refontify, or nil |
72250
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1005 \(which directs the caller to fontify a default region). |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1006 This function should preserve the match-data. |
72232
ed72e8922d85
(font-lock-extend-region-function, font-lock-extend-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72230
diff
changeset
|
1007 The region it returns may start or end in the middle of a line.") |
93904
41ee2cc9680d
(font-lock-extend-after-change-region-function): Make it buffer local.
Alan Mackenzie <acm@muc.de>
parents:
92939
diff
changeset
|
1008 (make-variable-buffer-local 'font-lock-extend-after-change-region-function) |
72232
ed72e8922d85
(font-lock-extend-region-function, font-lock-extend-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72230
diff
changeset
|
1009 |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1010 (defun font-lock-fontify-buffer () |
26620 | 1011 "Fontify the current buffer the way the function `font-lock-mode' would." |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1012 (interactive) |
67996
8ebf91fa890e
(font-lock-fontify-buffer, font-lock-fontify-region): Make sure we've setup
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67903
diff
changeset
|
1013 (font-lock-set-defaults) |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1014 (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
|
1015 (funcall font-lock-fontify-buffer-function))) |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1016 |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1017 (defun font-lock-unfontify-buffer () |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1018 (funcall font-lock-unfontify-buffer-function)) |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1019 |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1020 (defun font-lock-fontify-region (beg end &optional loudly) |
67996
8ebf91fa890e
(font-lock-fontify-buffer, font-lock-fontify-region): Make sure we've setup
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67903
diff
changeset
|
1021 (font-lock-set-defaults) |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1022 (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
|
1023 |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1024 (defun font-lock-unfontify-region (beg end) |
58813
8d1a39cde5e3
(font-lock-unfontify-region): Save buffer state.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58564
diff
changeset
|
1025 (save-buffer-state nil |
8d1a39cde5e3
(font-lock-unfontify-region): Save buffer state.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58564
diff
changeset
|
1026 (funcall font-lock-unfontify-region-function beg end))) |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1027 |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1028 (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
|
1029 (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
|
1030 (> (buffer-size) font-lock-verbose) |
348f0896b1e7
(font-lock-verbose): Default to 0. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15485
diff
changeset
|
1031 font-lock-verbose))) |
23751
3fdde7281f9b
* font-lock.el (font-lock-defaults): Doc fix.
Simon Marshall <simon@gnu.org>
parents:
23163
diff
changeset
|
1032 (with-temp-message |
24002
c6bfff41f2b5
* font-lock.el (font-lock-default-fontify-buffer): When using
Simon Marshall <simon@gnu.org>
parents:
23826
diff
changeset
|
1033 (when verbose |
c6bfff41f2b5
* font-lock.el (font-lock-default-fontify-buffer): When using
Simon Marshall <simon@gnu.org>
parents:
23826
diff
changeset
|
1034 (format "Fontifying %s..." (buffer-name))) |
23751
3fdde7281f9b
* font-lock.el (font-lock-defaults): Doc fix.
Simon Marshall <simon@gnu.org>
parents:
23163
diff
changeset
|
1035 ;; Make sure we fontify etc. in the whole buffer. |
3fdde7281f9b
* font-lock.el (font-lock-defaults): Doc fix.
Simon Marshall <simon@gnu.org>
parents:
23163
diff
changeset
|
1036 (save-restriction |
3fdde7281f9b
* font-lock.el (font-lock-defaults): Doc fix.
Simon Marshall <simon@gnu.org>
parents:
23163
diff
changeset
|
1037 (widen) |
3fdde7281f9b
* font-lock.el (font-lock-defaults): Doc fix.
Simon Marshall <simon@gnu.org>
parents:
23163
diff
changeset
|
1038 (condition-case nil |
3fdde7281f9b
* font-lock.el (font-lock-defaults): Doc fix.
Simon Marshall <simon@gnu.org>
parents:
23163
diff
changeset
|
1039 (save-excursion |
3fdde7281f9b
* font-lock.el (font-lock-defaults): Doc fix.
Simon Marshall <simon@gnu.org>
parents:
23163
diff
changeset
|
1040 (save-match-data |
3fdde7281f9b
* font-lock.el (font-lock-defaults): Doc fix.
Simon Marshall <simon@gnu.org>
parents:
23163
diff
changeset
|
1041 (font-lock-fontify-region (point-min) (point-max) verbose) |
3fdde7281f9b
* font-lock.el (font-lock-defaults): Doc fix.
Simon Marshall <simon@gnu.org>
parents:
23163
diff
changeset
|
1042 (font-lock-after-fontify-buffer) |
3fdde7281f9b
* font-lock.el (font-lock-defaults): Doc fix.
Simon Marshall <simon@gnu.org>
parents:
23163
diff
changeset
|
1043 (setq font-lock-fontified t))) |
3fdde7281f9b
* font-lock.el (font-lock-defaults): Doc fix.
Simon Marshall <simon@gnu.org>
parents:
23163
diff
changeset
|
1044 ;; We don't restore the old fontification, so it's best to unfontify. |
40394
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1045 (quit (font-lock-unfontify-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
|
1046 |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1047 (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
|
1048 ;; 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
|
1049 (save-restriction |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1050 (widen) |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1051 (font-lock-unfontify-region (point-min) (point-max)) |
14374
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14365
diff
changeset
|
1052 (font-lock-after-unfontify-buffer) |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1053 (setq font-lock-fontified nil))) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1054 |
47611
6bc56530304a
(fast-lock-mode, lazy-lock-mode, jit-lock-mode): Don't bind them variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47121
diff
changeset
|
1055 (defvar font-lock-dont-widen nil |
6bc56530304a
(fast-lock-mode, lazy-lock-mode, jit-lock-mode): Don't bind them variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47121
diff
changeset
|
1056 "If non-nil, font-lock will work on the non-widened buffer. |
6bc56530304a
(fast-lock-mode, lazy-lock-mode, jit-lock-mode): Don't bind them variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47121
diff
changeset
|
1057 Useful for things like RMAIL and Info where the whole buffer is not |
6bc56530304a
(fast-lock-mode, lazy-lock-mode, jit-lock-mode): Don't bind them variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47121
diff
changeset
|
1058 a very meaningful entity to highlight.") |
6bc56530304a
(fast-lock-mode, lazy-lock-mode, jit-lock-mode): Don't bind them variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47121
diff
changeset
|
1059 |
72251
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1060 |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1061 (defvar font-lock-beg) (defvar font-lock-end) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1062 (defvar font-lock-extend-region-functions |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1063 '(font-lock-extend-region-wholelines |
72308
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1064 ;; This use of font-lock-multiline property is unreliable but is just |
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1065 ;; a handy heuristic: in case you don't have a function that does |
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1066 ;; /identification/ of multiline elements, you may still occasionally |
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1067 ;; discover them by accident (or you may /identify/ them but not in all |
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1068 ;; cases), in which case the font-lock-multiline property can help make |
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1069 ;; sure you will properly *re*identify them during refontification. |
72251
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1070 font-lock-extend-region-multiline) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1071 "Special hook run just before proceeding to fontify a region. |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1072 This is used to allow major modes to help font-lock find safe buffer positions |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1073 as beginning and end of the fontified region. Its most common use is to solve |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1074 the problem of /identification/ of multiline elements by providing a function |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1075 that tries to find such elements and move the boundaries such that they do |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1076 not fall in the middle of one. |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1077 Each function is called with no argument; it is expected to adjust the |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1078 dynamically bound variables `font-lock-beg' and `font-lock-end'; and return |
78492
7c8949dbfa0d
Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents:
78236
diff
changeset
|
1079 non-nil if it did make such an adjustment. |
72251
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1080 These functions are run in turn repeatedly until they all return nil. |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1081 Put first the functions more likely to cause a change and cheaper to compute.") |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1082 ;; Mark it as a special hook which doesn't use any global setting |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1083 ;; (i.e. doesn't obey the element t in the buffer-local value). |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1084 (make-variable-buffer-local 'font-lock-extend-region-functions) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1085 |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1086 (defun font-lock-extend-region-multiline () |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1087 "Move fontification boundaries away from any `font-lock-multiline' property." |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1088 (let ((changed nil)) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1089 (when (and (> font-lock-beg (point-min)) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1090 (get-text-property (1- font-lock-beg) 'font-lock-multiline)) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1091 (setq changed t) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1092 (setq font-lock-beg (or (previous-single-property-change |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1093 font-lock-beg 'font-lock-multiline) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1094 (point-min)))) |
75975
c99663d585cc
(font-lock-extend-region-wholelines): Test for EOB in addition to BOL.
Eli Zaretskii <eliz@gnu.org>
parents:
75918
diff
changeset
|
1095 ;; |
72251
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1096 (when (get-text-property font-lock-end 'font-lock-multiline) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1097 (setq changed t) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1098 (setq font-lock-end (or (text-property-any font-lock-end (point-max) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1099 'font-lock-multiline nil) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1100 (point-max)))) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1101 changed)) |
75975
c99663d585cc
(font-lock-extend-region-wholelines): Test for EOB in addition to BOL.
Eli Zaretskii <eliz@gnu.org>
parents:
75918
diff
changeset
|
1102 |
72251
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1103 (defun font-lock-extend-region-wholelines () |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1104 "Move fontification boundaries to beginning of lines." |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1105 (let ((changed nil)) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1106 (goto-char font-lock-beg) |
75999
ce1b9c8dc108
(font-lock-extend-region-wholelines): Revert last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75975
diff
changeset
|
1107 (unless (bolp) |
75975
c99663d585cc
(font-lock-extend-region-wholelines): Test for EOB in addition to BOL.
Eli Zaretskii <eliz@gnu.org>
parents:
75918
diff
changeset
|
1108 (setq changed t font-lock-beg (line-beginning-position))) |
72251
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1109 (goto-char font-lock-end) |
75918
f707dcebb152
(font-lock-extend-region-wholelines):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75347
diff
changeset
|
1110 (unless (bolp) |
f707dcebb152
(font-lock-extend-region-wholelines):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75347
diff
changeset
|
1111 (unless (eq font-lock-end |
f707dcebb152
(font-lock-extend-region-wholelines):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75347
diff
changeset
|
1112 (setq font-lock-end (line-beginning-position 2))) |
f707dcebb152
(font-lock-extend-region-wholelines):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75347
diff
changeset
|
1113 (setq changed t))) |
72251
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1114 changed)) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1115 |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1116 (defun font-lock-default-fontify-region (beg end loudly) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1117 (save-buffer-state |
61891
dd02c82eebe7
(font-lock-default-fontify-region): Don't force
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61860
diff
changeset
|
1118 ((parse-sexp-lookup-properties |
dd02c82eebe7
(font-lock-default-fontify-region): Don't force
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61860
diff
changeset
|
1119 (or parse-sexp-lookup-properties font-lock-syntactic-keywords)) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1120 (old-syntax-table (syntax-table))) |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1121 (unwind-protect |
14468
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
1122 (save-restriction |
47611
6bc56530304a
(fast-lock-mode, lazy-lock-mode, jit-lock-mode): Don't bind them variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47121
diff
changeset
|
1123 (unless font-lock-dont-widen (widen)) |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1124 ;; 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
|
1125 (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
|
1126 (set-syntax-table font-lock-syntax-table)) |
72251
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1127 ;; Extend the region to fontify so that it starts and ends at |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1128 ;; safe places. |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1129 (let ((funs font-lock-extend-region-functions) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1130 (font-lock-beg beg) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1131 (font-lock-end end)) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1132 (while funs |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1133 (setq funs (if (or (not (funcall (car funs))) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1134 (eq funs font-lock-extend-region-functions)) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1135 (cdr funs) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1136 ;; If there's been a change, we should go through |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1137 ;; the list again since this new position may |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1138 ;; warrant a different answer from one of the fun |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1139 ;; we've already seen. |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1140 font-lock-extend-region-functions))) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1141 (setq beg font-lock-beg end font-lock-end)) |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1142 ;; 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
|
1143 (font-lock-unfontify-region beg end) |
76000
8d61685ee62b
Revert the accidental commit of unrelated patches in the previous commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75999
diff
changeset
|
1144 (when font-lock-syntactic-keywords |
8d61685ee62b
Revert the accidental commit of unrelated patches in the previous commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75999
diff
changeset
|
1145 (font-lock-fontify-syntactic-keywords-region beg end)) |
8d61685ee62b
Revert the accidental commit of unrelated patches in the previous commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75999
diff
changeset
|
1146 (unless font-lock-keywords-only |
8d61685ee62b
Revert the accidental commit of unrelated patches in the previous commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75999
diff
changeset
|
1147 (font-lock-fontify-syntactically-region beg end loudly)) |
8d61685ee62b
Revert the accidental commit of unrelated patches in the previous commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75999
diff
changeset
|
1148 (font-lock-fontify-keywords-region beg end loudly)) |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1149 ;; 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
|
1150 (set-syntax-table old-syntax-table)))) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1151 |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1152 ;; The following must be rethought, since keywords can override fontification. |
65618
b9c26f9516da
(font-lock-default-fontify-region): Don't unconditionally add a line, since
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65471
diff
changeset
|
1153 ;; ;; Now scan for keywords, but not if we are inside a comment now. |
b9c26f9516da
(font-lock-default-fontify-region): Don't unconditionally add a line, since
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65471
diff
changeset
|
1154 ;; (or (and (not font-lock-keywords-only) |
b9c26f9516da
(font-lock-default-fontify-region): Don't unconditionally add a line, since
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65471
diff
changeset
|
1155 ;; (let ((state (parse-partial-sexp beg end nil nil |
b9c26f9516da
(font-lock-default-fontify-region): Don't unconditionally add a line, since
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65471
diff
changeset
|
1156 ;; font-lock-cache-state))) |
b9c26f9516da
(font-lock-default-fontify-region): Don't unconditionally add a line, since
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65471
diff
changeset
|
1157 ;; (or (nth 4 state) (nth 7 state)))) |
b9c26f9516da
(font-lock-default-fontify-region): Don't unconditionally add a line, since
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65471
diff
changeset
|
1158 ;; (font-lock-fontify-keywords-region beg end)) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1159 |
40394
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1160 (defvar font-lock-extra-managed-props nil |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1161 "Additional text properties managed by font-lock. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1162 This is used by `font-lock-default-unfontify-region' to decide |
46249
54c4053e954f
(font-lock-default-unfontify-region): Use remove-list-of-text-properties.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45774
diff
changeset
|
1163 what properties to clear before refontifying a region.") |
40394
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1164 |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1165 (defun font-lock-default-unfontify-region (beg end) |
58813
8d1a39cde5e3
(font-lock-unfontify-region): Save buffer state.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58564
diff
changeset
|
1166 (remove-list-of-text-properties |
8d1a39cde5e3
(font-lock-unfontify-region): Save buffer state.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58564
diff
changeset
|
1167 beg end (append |
8d1a39cde5e3
(font-lock-unfontify-region): Save buffer state.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58564
diff
changeset
|
1168 font-lock-extra-managed-props |
8d1a39cde5e3
(font-lock-unfontify-region): Save buffer state.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58564
diff
changeset
|
1169 (if font-lock-syntactic-keywords |
8d1a39cde5e3
(font-lock-unfontify-region): Save buffer state.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58564
diff
changeset
|
1170 '(syntax-table face font-lock-multiline) |
8d1a39cde5e3
(font-lock-unfontify-region): Save buffer state.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58564
diff
changeset
|
1171 '(face font-lock-multiline))))) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1172 |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1173 ;; 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
|
1174 (defun font-lock-after-change-function (beg end old-len) |
72250
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1175 (save-excursion |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1176 (let ((inhibit-point-motion-hooks t) |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1177 (inhibit-quit t) |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1178 (region (if font-lock-extend-after-change-region-function |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1179 (funcall font-lock-extend-after-change-region-function |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1180 beg end old-len)))) |
18463
4f630b3e8f43
split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents:
18332
diff
changeset
|
1181 (save-match-data |
69468
0c2790d73955
* font-core.el: New function/variable
Alan Mackenzie <acm@muc.de>
parents:
69264
diff
changeset
|
1182 (if region |
0c2790d73955
* font-core.el: New function/variable
Alan Mackenzie <acm@muc.de>
parents:
69264
diff
changeset
|
1183 ;; Fontify the region the major mode has specified. |
0c2790d73955
* font-core.el: New function/variable
Alan Mackenzie <acm@muc.de>
parents:
69264
diff
changeset
|
1184 (setq beg (car region) end (cdr region)) |
0c2790d73955
* font-core.el: New function/variable
Alan Mackenzie <acm@muc.de>
parents:
69264
diff
changeset
|
1185 ;; Fontify the whole lines which enclose the region. |
72250
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1186 ;; Actually, this is not needed because |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1187 ;; font-lock-default-fontify-region already rounds up to a whole |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1188 ;; number of lines. |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1189 ;; (setq beg (progn (goto-char beg) (line-beginning-position)) |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1190 ;; end (progn (goto-char end) (line-beginning-position 2))) |
73156
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1191 (unless (eq end (point-max)) |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1192 ;; Rounding up to a whole number of lines should include the |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1193 ;; line right after `end'. Typical case: the first char of |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1194 ;; the line was deleted. Or a \n was inserted in the middle |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1195 ;; of a line. |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1196 (setq end (1+ end)))) |
69468
0c2790d73955
* font-core.el: New function/variable
Alan Mackenzie <acm@muc.de>
parents:
69264
diff
changeset
|
1197 (font-lock-fontify-region beg end))))) |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1198 |
72230
d254902ce935
(font-lock-extend-jit-lock-region-after-change): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70530
diff
changeset
|
1199 (defvar jit-lock-start) (defvar jit-lock-end) |
d254902ce935
(font-lock-extend-jit-lock-region-after-change): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70530
diff
changeset
|
1200 (defun font-lock-extend-jit-lock-region-after-change (beg end old-len) |
72309
e5f74bc78986
(font-lock-extend-jit-lock-region-after-change): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72308
diff
changeset
|
1201 "Function meant for `jit-lock-after-change-extend-region-functions'. |
e5f74bc78986
(font-lock-extend-jit-lock-region-after-change): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72308
diff
changeset
|
1202 This function does 2 things: |
e5f74bc78986
(font-lock-extend-jit-lock-region-after-change): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72308
diff
changeset
|
1203 - extend the region so that it not only includes the part that was modified |
e5f74bc78986
(font-lock-extend-jit-lock-region-after-change): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72308
diff
changeset
|
1204 but also the surrounding text whose highlighting may change as a consequence. |
e5f74bc78986
(font-lock-extend-jit-lock-region-after-change): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72308
diff
changeset
|
1205 - anticipate (part of) the region extension that will happen later in |
e5f74bc78986
(font-lock-extend-jit-lock-region-after-change): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72308
diff
changeset
|
1206 `font-lock-default-fontify-region', in order to avoid the need for |
e5f74bc78986
(font-lock-extend-jit-lock-region-after-change): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72308
diff
changeset
|
1207 double-redisplay in `jit-lock-fontify-now'." |
72250
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1208 (save-excursion |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1209 ;; First extend the region as font-lock-after-change-function would. |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1210 (let ((region (if font-lock-extend-after-change-region-function |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1211 (funcall font-lock-extend-after-change-region-function |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1212 beg end old-len)))) |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1213 (if region |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1214 (setq beg (min jit-lock-start (car region)) |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1215 end (max jit-lock-end (cdr region)))) |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1216 ;; Then extend the region obeying font-lock-multiline properties, |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1217 ;; indicating which part of the buffer needs to be refontified. |
72308
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1218 ;; !!! This is the *main* user of font-lock-multiline property !!! |
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1219 ;; font-lock-after-change-function could/should also do that, but it |
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1220 ;; doesn't need to because font-lock-default-fontify-region does |
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1221 ;; it anyway. Here OTOH we have no guarantee that |
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1222 ;; font-lock-default-fontify-region will be executed on this region |
c49cd0ee6018
(font-lock-extend-after-change-region-function,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72251
diff
changeset
|
1223 ;; any time soon. |
72311
4501a3a3a336
(font-lock-extend-jit-lock-region-after-change): Better comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72309
diff
changeset
|
1224 ;; Note: contrary to font-lock-default-fontify-region, we do not do |
4501a3a3a336
(font-lock-extend-jit-lock-region-after-change): Better comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72309
diff
changeset
|
1225 ;; any loop here because we are not looking for a safe spot: we just |
4501a3a3a336
(font-lock-extend-jit-lock-region-after-change): Better comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72309
diff
changeset
|
1226 ;; mark the text whose appearance may need to change as a result of |
4501a3a3a336
(font-lock-extend-jit-lock-region-after-change): Better comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72309
diff
changeset
|
1227 ;; the buffer modification. |
72250
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1228 (when (and (> beg (point-min)) |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1229 (get-text-property (1- beg) 'font-lock-multiline)) |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1230 (setq beg (or (previous-single-property-change |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1231 beg 'font-lock-multiline) |
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1232 (point-min)))) |
73156
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1233 (when (< end (point-max)) |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1234 (setq end |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1235 (if (get-text-property end 'font-lock-multiline) |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1236 (or (text-property-any end (point-max) |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1237 'font-lock-multiline nil) |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1238 (point-max)) |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1239 ;; Rounding up to a whole number of lines should include the |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1240 ;; line right after `end'. Typical case: the first char of |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1241 ;; the line was deleted. Or a \n was inserted in the middle |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1242 ;; of a line. |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1243 (1+ end)))) |
72250
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1244 ;; Finally, pre-enlarge the region to a whole number of lines, to try |
72309
e5f74bc78986
(font-lock-extend-jit-lock-region-after-change): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72308
diff
changeset
|
1245 ;; and anticipate what font-lock-default-fontify-region will do, so as to |
72250
482bf4e8cc00
(font-lock-extend-after-change-region-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72232
diff
changeset
|
1246 ;; avoid double-redisplay. |
72309
e5f74bc78986
(font-lock-extend-jit-lock-region-after-change): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72308
diff
changeset
|
1247 ;; We could just run `font-lock-extend-region-functions', but since |
e5f74bc78986
(font-lock-extend-jit-lock-region-after-change): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72308
diff
changeset
|
1248 ;; the only purpose is to avoid the double-redisplay, we prefer to |
e5f74bc78986
(font-lock-extend-jit-lock-region-after-change): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72308
diff
changeset
|
1249 ;; do here only the part that is cheap and most likely to be useful. |
72251
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1250 (when (memq 'font-lock-extend-region-wholelines |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1251 font-lock-extend-region-functions) |
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1252 (goto-char beg) |
73156
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1253 (setq jit-lock-start (min jit-lock-start (line-beginning-position))) |
72251
0933613f837b
(font-lock-beg, font-lock-end, font-lock-extend-region-functions): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72250
diff
changeset
|
1254 (goto-char end) |
73156
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1255 (setq jit-lock-end |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1256 (max jit-lock-end |
57c68ed8bb9c
(font-lock-after-change-function): Refontify next line as well if end is at BOL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73100
diff
changeset
|
1257 (if (bolp) (point) (line-beginning-position 2)))))))) |
72230
d254902ce935
(font-lock-extend-jit-lock-region-after-change): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70530
diff
changeset
|
1258 |
14468
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
1259 (defun font-lock-fontify-block (&optional arg) |
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
1260 "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
|
1261 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
|
1262 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
|
1263 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
|
1264 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
|
1265 delimit the region to fontify." |
14468
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
1266 (interactive "P") |
18463
4f630b3e8f43
split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents:
18332
diff
changeset
|
1267 (let ((inhibit-point-motion-hooks t) font-lock-beginning-of-syntax-function |
4f630b3e8f43
split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents:
18332
diff
changeset
|
1268 deactivate-mark) |
14468
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
1269 ;; 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
|
1270 (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
|
1271 (save-excursion |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1272 (save-match-data |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1273 (condition-case error-data |
14468
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
1274 (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
|
1275 (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
|
1276 (font-lock-fontify-region |
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
1277 (save-excursion (forward-line (- lines)) (point)) |
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
1278 (save-excursion (forward-line lines) (point)))) |
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
1279 (funcall font-lock-mark-block-function) |
e41a60d26291
Correct specialised fontification and associated stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
1280 (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
|
1281 ((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
|
1282 |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
1283 ;;; End of Fontification functions. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1284 |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1285 ;;; Additional text property functions. |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1286 |
16852
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1287 ;; 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
|
1288 ;; 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
|
1289 ;; 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
|
1290 ;; 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
|
1291 ;; in Lisp below and commented out. sm. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1292 |
16852
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1293 (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
|
1294 "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
|
1295 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
|
1296 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
|
1297 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
|
1298 (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
|
1299 (while (/= start end) |
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1300 (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
|
1301 prev (get-text-property start prop object)) |
79653
f99fcd1db425
(font-lock-prepend-text-property, font-lock-append-text-property):
Richard M. Stallman <rms@gnu.org>
parents:
78492
diff
changeset
|
1302 ;; Canonicalize old forms of face property. |
f99fcd1db425
(font-lock-prepend-text-property, font-lock-append-text-property):
Richard M. Stallman <rms@gnu.org>
parents:
78492
diff
changeset
|
1303 (and (memq prop '(face font-lock-face)) |
f99fcd1db425
(font-lock-prepend-text-property, font-lock-append-text-property):
Richard M. Stallman <rms@gnu.org>
parents:
78492
diff
changeset
|
1304 (listp prev) |
f99fcd1db425
(font-lock-prepend-text-property, font-lock-append-text-property):
Richard M. Stallman <rms@gnu.org>
parents:
78492
diff
changeset
|
1305 (or (keywordp (car prev)) |
f99fcd1db425
(font-lock-prepend-text-property, font-lock-append-text-property):
Richard M. Stallman <rms@gnu.org>
parents:
78492
diff
changeset
|
1306 (memq (car prev) '(foreground-color background-color))) |
f99fcd1db425
(font-lock-prepend-text-property, font-lock-append-text-property):
Richard M. Stallman <rms@gnu.org>
parents:
78492
diff
changeset
|
1307 (setq prev (list prev))) |
16852
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1308 (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
|
1309 (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
|
1310 object) |
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1311 (setq start next)))) |
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1312 |
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1313 (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
|
1314 "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
|
1315 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
|
1316 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
|
1317 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
|
1318 (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
|
1319 (while (/= start end) |
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1320 (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
|
1321 prev (get-text-property start prop object)) |
79653
f99fcd1db425
(font-lock-prepend-text-property, font-lock-append-text-property):
Richard M. Stallman <rms@gnu.org>
parents:
78492
diff
changeset
|
1322 ;; Canonicalize old forms of face property. |
f99fcd1db425
(font-lock-prepend-text-property, font-lock-append-text-property):
Richard M. Stallman <rms@gnu.org>
parents:
78492
diff
changeset
|
1323 (and (memq prop '(face font-lock-face)) |
f99fcd1db425
(font-lock-prepend-text-property, font-lock-append-text-property):
Richard M. Stallman <rms@gnu.org>
parents:
78492
diff
changeset
|
1324 (listp prev) |
f99fcd1db425
(font-lock-prepend-text-property, font-lock-append-text-property):
Richard M. Stallman <rms@gnu.org>
parents:
78492
diff
changeset
|
1325 (or (keywordp (car prev)) |
f99fcd1db425
(font-lock-prepend-text-property, font-lock-append-text-property):
Richard M. Stallman <rms@gnu.org>
parents:
78492
diff
changeset
|
1326 (memq (car prev) '(foreground-color background-color))) |
f99fcd1db425
(font-lock-prepend-text-property, font-lock-append-text-property):
Richard M. Stallman <rms@gnu.org>
parents:
78492
diff
changeset
|
1327 (setq prev (list prev))) |
16852
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1328 (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
|
1329 (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
|
1330 object) |
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1331 (setq start next)))) |
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1332 |
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1333 (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
|
1334 "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
|
1335 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
|
1336 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
|
1337 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
|
1338 (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
|
1339 (while start |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1340 (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
|
1341 (put-text-property start next prop value object) |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1342 (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
|
1343 |
16852
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1344 ;; 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
|
1345 ;; is to `add-text-properties', etc. |
66268
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1346 ;;(defun remove-text-property (start end property &optional object) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1347 ;; "Remove a property from text from START to END. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1348 ;;Argument PROPERTY is the property to remove. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1349 ;;Optional argument OBJECT is the string or buffer containing the text. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1350 ;;Return t if the property was actually removed, nil otherwise." |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1351 ;; (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
|
1352 |
16852
70e9b1d69d0d
Fix additional text prop fns to behave as proposed builtins.
Simon Marshall <simon@gnu.org>
parents:
16578
diff
changeset
|
1353 ;; 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
|
1354 ;; `next-single-property-change' (not `next-single-text-property-change'), etc. |
66268
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1355 ;;(defun remove-single-text-property (start end prop value &optional object) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1356 ;; "Remove a specific property value from text from START to END. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1357 ;;Arguments PROP and VALUE specify the property and value to remove. The |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1358 ;;resulting property values are not equal to VALUE nor lists containing VALUE. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1359 ;;Optional argument OBJECT is the string or buffer containing the text." |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1360 ;; (let ((start (text-property-not-all start end prop nil object)) next prev) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1361 ;; (while start |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1362 ;; (setq next (next-single-property-change start prop object end) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1363 ;; prev (get-text-property start prop object)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1364 ;; (cond ((and (symbolp prev) (eq value prev)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1365 ;; (remove-text-property start next prop object)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1366 ;; ((and (listp prev) (memq value prev)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1367 ;; (let ((new (delq value prev))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1368 ;; (cond ((null new) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1369 ;; (remove-text-property start next prop object)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1370 ;; ((= (length new) 1) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1371 ;; (put-text-property start next prop (car new) object)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1372 ;; (t |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1373 ;; (put-text-property start next prop new object)))))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1374 ;; (setq start (text-property-not-all next end prop nil object))))) |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
1375 |
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
1376 ;;; End of Additional text property functions. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1377 |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1378 ;;; Syntactic regexp fontification functions. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1379 |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1380 ;; These syntactic keyword pass functions are identical to those keyword pass |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1381 ;; functions below, with the following exceptions; (a) they operate on |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1382 ;; `font-lock-syntactic-keywords' of course, (b) they are all `defun' as speed |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1383 ;; is less of an issue, (c) eval of property value does not occur JIT as speed |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1384 ;; is less of an issue, (d) OVERRIDE cannot be `prepend' or `append' as it |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1385 ;; makes no sense for `syntax-table' property values, (e) they do not do it |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1386 ;; LOUDLY as it is not likely to be intensive. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1387 |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1388 (defun font-lock-apply-syntactic-highlight (highlight) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1389 "Apply HIGHLIGHT following a match. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1390 HIGHLIGHT should be of the form MATCH-HIGHLIGHT, |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1391 see `font-lock-syntactic-keywords'." |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1392 (let* ((match (nth 0 highlight)) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1393 (start (match-beginning match)) (end (match-end match)) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1394 (value (nth 1 highlight)) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1395 (override (nth 2 highlight))) |
40394
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1396 (if (not start) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1397 ;; No match but we might not signal an error. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1398 (or (nth 3 highlight) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1399 (error "No match %d in highlight %S" match highlight)) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1400 (when (and (consp value) (not (numberp (car value)))) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1401 (setq value (eval value))) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1402 (when (stringp value) (setq value (string-to-syntax value))) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1403 ;; Flush the syntax-cache. I believe this is not necessary for |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1404 ;; font-lock's use of syntax-ppss, but I'm not 100% sure and it can |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1405 ;; still be necessary for other users of syntax-ppss anyway. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1406 (syntax-ppss-after-change-function start) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1407 (cond |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1408 ((not override) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1409 ;; Cannot override existing fontification. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1410 (or (text-property-not-all start end 'syntax-table nil) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1411 (put-text-property start end 'syntax-table value))) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1412 ((eq override t) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1413 ;; Override existing fontification. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1414 (put-text-property start end 'syntax-table value)) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1415 ((eq override 'keep) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1416 ;; Keep existing fontification. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1417 (font-lock-fillin-text-property start end 'syntax-table value)))))) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1418 |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1419 (defun font-lock-fontify-syntactic-anchored-keywords (keywords limit) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1420 "Fontify according to KEYWORDS until LIMIT. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1421 KEYWORDS should be of the form MATCH-ANCHORED, see `font-lock-keywords', |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1422 LIMIT can be modified by the value of its PRE-MATCH-FORM." |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1423 (let ((matcher (nth 0 keywords)) (lowdarks (nthcdr 3 keywords)) highlights |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1424 ;; Evaluate PRE-MATCH-FORM. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1425 (pre-match-value (eval (nth 1 keywords)))) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1426 ;; Set LIMIT to value of PRE-MATCH-FORM or the end of line. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1427 (if (and (numberp pre-match-value) (> pre-match-value (point))) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1428 (setq limit pre-match-value) |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
1429 (setq limit (line-end-position))) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1430 (save-match-data |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1431 ;; Find an occurrence of `matcher' before `limit'. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1432 (while (if (stringp matcher) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1433 (re-search-forward matcher limit t) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1434 (funcall matcher limit)) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1435 ;; Apply each highlight to this instance of `matcher'. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1436 (setq highlights lowdarks) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1437 (while highlights |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1438 (font-lock-apply-syntactic-highlight (car highlights)) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1439 (setq highlights (cdr highlights))))) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1440 ;; Evaluate POST-MATCH-FORM. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1441 (eval (nth 2 keywords)))) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1442 |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1443 (defun font-lock-fontify-syntactic-keywords-region (start end) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1444 "Fontify according to `font-lock-syntactic-keywords' between START and END. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1445 START should be at the beginning of a line." |
76000
8d61685ee62b
Revert the accidental commit of unrelated patches in the previous commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75999
diff
changeset
|
1446 ;; Ensure the beginning of the file is properly syntactic-fontified. |
8d61685ee62b
Revert the accidental commit of unrelated patches in the previous commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75999
diff
changeset
|
1447 (when (and font-lock-syntactically-fontified |
8d61685ee62b
Revert the accidental commit of unrelated patches in the previous commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75999
diff
changeset
|
1448 (< font-lock-syntactically-fontified start)) |
8d61685ee62b
Revert the accidental commit of unrelated patches in the previous commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75999
diff
changeset
|
1449 (setq start (max font-lock-syntactically-fontified (point-min))) |
8d61685ee62b
Revert the accidental commit of unrelated patches in the previous commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75999
diff
changeset
|
1450 (setq font-lock-syntactically-fontified end)) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1451 ;; If `font-lock-syntactic-keywords' is a symbol, get the real keywords. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1452 (when (symbolp font-lock-syntactic-keywords) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1453 (setq font-lock-syntactic-keywords (font-lock-eval-keywords |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1454 font-lock-syntactic-keywords))) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1455 ;; If `font-lock-syntactic-keywords' is not compiled, compile it. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1456 (unless (eq (car font-lock-syntactic-keywords) t) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1457 (setq font-lock-syntactic-keywords (font-lock-compile-keywords |
72933
cc737d1f33f9
(font-lock-compile-keywords): Rename optional arg to SYNTACTIC-KEYWORDS
Richard M. Stallman <rms@gnu.org>
parents:
72426
diff
changeset
|
1458 font-lock-syntactic-keywords |
cc737d1f33f9
(font-lock-compile-keywords): Rename optional arg to SYNTACTIC-KEYWORDS
Richard M. Stallman <rms@gnu.org>
parents:
72426
diff
changeset
|
1459 t))) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1460 ;; Get down to business. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1461 (let ((case-fold-search font-lock-keywords-case-fold-search) |
56265
da55b7f62f95
(font-lock-fontify-syntactic-keywords-region):
Richard M. Stallman <rms@gnu.org>
parents:
56244
diff
changeset
|
1462 (keywords (cddr font-lock-syntactic-keywords)) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1463 keyword matcher highlights) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1464 (while keywords |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1465 ;; Find an occurrence of `matcher' from `start' to `end'. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1466 (setq keyword (car keywords) matcher (car keyword)) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1467 (goto-char start) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1468 (while (if (stringp matcher) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1469 (re-search-forward matcher end t) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1470 (funcall matcher end)) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1471 ;; Apply each highlight to this instance of `matcher', which may be |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1472 ;; specific highlights or more keywords anchored to `matcher'. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1473 (setq highlights (cdr keyword)) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1474 (while highlights |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1475 (if (numberp (car (car highlights))) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1476 (font-lock-apply-syntactic-highlight (car highlights)) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1477 (font-lock-fontify-syntactic-anchored-keywords (car highlights) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1478 end)) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1479 (setq highlights (cdr highlights)))) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1480 (setq keywords (cdr keywords))))) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1481 |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1482 ;;; End of Syntactic regexp fontification functions. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1483 |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1484 ;;; Syntactic fontification functions. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1485 |
62362
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1486 (defvar font-lock-comment-start-skip nil |
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1487 "If non-nil, Font Lock mode uses this instead of `comment-start-skip'.") |
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1488 |
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1489 (defvar font-lock-comment-end-skip nil |
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1490 "If non-nil, Font Lock mode uses this instead of `comment-end'.") |
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1491 |
40394
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1492 (defun font-lock-fontify-syntactically-region (start end &optional loudly ppss) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1493 "Put proper face on each string and comment between START and END. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1494 START should be at the beginning of a line." |
62239
55168ce0d00d
(font-lock-fontify-syntactically-region): Don't use comment-end if
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62235
diff
changeset
|
1495 (let ((comment-end-regexp |
62362
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1496 (or font-lock-comment-end-skip |
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1497 (regexp-quote |
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1498 (replace-regexp-in-string "^ *" "" comment-end)))) |
62239
55168ce0d00d
(font-lock-fontify-syntactically-region): Don't use comment-end if
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62235
diff
changeset
|
1499 state face beg) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1500 (if loudly (message "Fontifying %s... (syntactically...)" (buffer-name))) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1501 (goto-char start) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1502 ;; |
58161
5451548f1bd9
(font-lock-fontify-syntactically-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57433
diff
changeset
|
1503 ;; Find the `start' state. |
41513
92d06d8cd81d
(font-lock-cache-state, font-lock-cache-position)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41226
diff
changeset
|
1504 (setq state (or ppss (syntax-ppss start))) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1505 ;; |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1506 ;; Find each interesting place between here and `end'. |
40394
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1507 (while |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1508 (progn |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1509 (when (or (nth 3 state) (nth 4 state)) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1510 (setq face (funcall font-lock-syntactic-face-function state)) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1511 (setq beg (max (nth 8 state) start)) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1512 (setq state (parse-partial-sexp (point) end nil nil state |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1513 'syntax-table)) |
62235
cd487105a05a
(font-lock-fontify-syntactically-region):
Richard M. Stallman <rms@gnu.org>
parents:
62233
diff
changeset
|
1514 (when face (put-text-property beg (point) 'face face)) |
62239
55168ce0d00d
(font-lock-fontify-syntactically-region): Don't use comment-end if
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62235
diff
changeset
|
1515 (when (and (eq face 'font-lock-comment-face) |
62362
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1516 (or font-lock-comment-start-skip |
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1517 comment-start-skip)) |
62235
cd487105a05a
(font-lock-fontify-syntactically-region):
Richard M. Stallman <rms@gnu.org>
parents:
62233
diff
changeset
|
1518 ;; Find the comment delimiters |
cd487105a05a
(font-lock-fontify-syntactically-region):
Richard M. Stallman <rms@gnu.org>
parents:
62233
diff
changeset
|
1519 ;; and use font-lock-comment-delimiter-face for them. |
cd487105a05a
(font-lock-fontify-syntactically-region):
Richard M. Stallman <rms@gnu.org>
parents:
62233
diff
changeset
|
1520 (save-excursion |
cd487105a05a
(font-lock-fontify-syntactically-region):
Richard M. Stallman <rms@gnu.org>
parents:
62233
diff
changeset
|
1521 (goto-char beg) |
62362
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1522 (if (looking-at (or font-lock-comment-start-skip |
ebcb47e6b3f3
(font-lock-comment-start-skip): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
62272
diff
changeset
|
1523 comment-start-skip)) |
62235
cd487105a05a
(font-lock-fontify-syntactically-region):
Richard M. Stallman <rms@gnu.org>
parents:
62233
diff
changeset
|
1524 (put-text-property beg (match-end 0) 'face |
62239
55168ce0d00d
(font-lock-fontify-syntactically-region): Don't use comment-end if
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62235
diff
changeset
|
1525 font-lock-comment-delimiter-face))) |
62863
3c095150855a
(font-lock-fontify-syntactically-region):
Richard M. Stallman <rms@gnu.org>
parents:
62638
diff
changeset
|
1526 (if (looking-back comment-end-regexp (point-at-bol) t) |
62235
cd487105a05a
(font-lock-fontify-syntactically-region):
Richard M. Stallman <rms@gnu.org>
parents:
62233
diff
changeset
|
1527 (put-text-property (match-beginning 0) (point) 'face |
62239
55168ce0d00d
(font-lock-fontify-syntactically-region): Don't use comment-end if
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62235
diff
changeset
|
1528 font-lock-comment-delimiter-face)))) |
58203
cd5849662239
(font-lock-fontify-syntactically-region): Fix last fix
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58161
diff
changeset
|
1529 (< (point) end)) |
cd5849662239
(font-lock-fontify-syntactically-region): Fix last fix
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58161
diff
changeset
|
1530 (setq state (parse-partial-sexp (point) end nil nil state |
cd5849662239
(font-lock-fontify-syntactically-region): Fix last fix
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58161
diff
changeset
|
1531 'syntax-table))))) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1532 |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1533 ;;; End of Syntactic fontification functions. |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1534 |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1535 ;;; Keyword regexp fontification functions. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1536 |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1537 (defsubst font-lock-apply-highlight (highlight) |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1538 "Apply HIGHLIGHT following a match. |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1539 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
|
1540 (let* ((match (nth 0 highlight)) |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1541 (start (match-beginning match)) (end (match-end match)) |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1542 (override (nth 2 highlight))) |
40394
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1543 (if (not start) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1544 ;; No match but we might not signal an error. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1545 (or (nth 3 highlight) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1546 (error "No match %d in highlight %S" match highlight)) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1547 (let ((val (eval (nth 1 highlight)))) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1548 (when (eq (car-safe val) 'face) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1549 (add-text-properties start end (cddr val)) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1550 (setq val (cadr val))) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1551 (cond |
57433
1b88b2a7544f
(font-lock-apply-highlight): Fix last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57416
diff
changeset
|
1552 ((not (or val (eq override t))) |
57416
05afd8f1212e
(font-lock-apply-highlight): Explicitly check the case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56758
diff
changeset
|
1553 ;; If `val' is nil, don't do anything. It is important to do it |
05afd8f1212e
(font-lock-apply-highlight): Explicitly check the case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56758
diff
changeset
|
1554 ;; explicitly, because when adding nil via things like |
05afd8f1212e
(font-lock-apply-highlight): Explicitly check the case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56758
diff
changeset
|
1555 ;; font-lock-append-text-property, the property is actually |
05afd8f1212e
(font-lock-apply-highlight): Explicitly check the case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56758
diff
changeset
|
1556 ;; changed from <face> to (<face>) which is undesirable. --Stef |
05afd8f1212e
(font-lock-apply-highlight): Explicitly check the case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56758
diff
changeset
|
1557 nil) |
40394
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1558 ((not override) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1559 ;; Cannot override existing fontification. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1560 (or (text-property-not-all start end 'face nil) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1561 (put-text-property start end 'face val))) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1562 ((eq override t) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1563 ;; Override existing fontification. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1564 (put-text-property start end 'face val)) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1565 ((eq override 'prepend) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1566 ;; Prepend to existing fontification. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1567 (font-lock-prepend-text-property start end 'face val)) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1568 ((eq override 'append) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1569 ;; Append to existing fontification. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1570 (font-lock-append-text-property start end 'face val)) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1571 ((eq override 'keep) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1572 ;; Keep existing fontification. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
1573 (font-lock-fillin-text-property start end 'face val))))))) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1574 |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1575 (defsubst font-lock-fontify-anchored-keywords (keywords limit) |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1576 "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
|
1577 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
|
1578 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
|
1579 (let ((matcher (nth 0 keywords)) (lowdarks (nthcdr 3 keywords)) highlights |
25596
359d6e7a6ffc
(font-lock-multiline): New text property contains
Richard M. Stallman <rms@gnu.org>
parents:
25331
diff
changeset
|
1580 (lead-start (match-beginning 0)) |
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
|
1581 ;; 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
|
1582 (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
|
1583 ;; Set LIMIT to value of PRE-MATCH-FORM or the end of line. |
25596
359d6e7a6ffc
(font-lock-multiline): New text property contains
Richard M. Stallman <rms@gnu.org>
parents:
25331
diff
changeset
|
1584 (if (not (and (numberp pre-match-value) (> pre-match-value (point)))) |
27636
161ec77aa308
(font-lock-keywords): Fix doc for multiline matches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
27414
diff
changeset
|
1585 (setq limit (line-end-position)) |
25596
359d6e7a6ffc
(font-lock-multiline): New text property contains
Richard M. Stallman <rms@gnu.org>
parents:
25331
diff
changeset
|
1586 (setq limit pre-match-value) |
33163
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1587 (when (and font-lock-multiline (>= limit (line-beginning-position 2))) |
25596
359d6e7a6ffc
(font-lock-multiline): New text property contains
Richard M. Stallman <rms@gnu.org>
parents:
25331
diff
changeset
|
1588 ;; this is a multiline anchored match |
33163
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1589 ;; (setq font-lock-multiline t) |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1590 (put-text-property (if (= limit (line-beginning-position 2)) |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1591 (1- limit) |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1592 (min lead-start (point))) |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1593 limit |
32216
82e4865603dd
(font-lock-defaults-alist): Remove the TeX entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31969
diff
changeset
|
1594 'font-lock-multiline t))) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1595 (save-match-data |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1596 ;; Find an occurrence of `matcher' before `limit'. |
28087
9ca294cf76c7
(font-lock-keywords): Fix the doc now that regexp-opt-depth is unnecessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28069
diff
changeset
|
1597 (while (and (< (point) limit) |
9ca294cf76c7
(font-lock-keywords): Fix the doc now that regexp-opt-depth is unnecessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28069
diff
changeset
|
1598 (if (stringp matcher) |
9ca294cf76c7
(font-lock-keywords): Fix the doc now that regexp-opt-depth is unnecessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28069
diff
changeset
|
1599 (re-search-forward matcher limit t) |
9ca294cf76c7
(font-lock-keywords): Fix the doc now that regexp-opt-depth is unnecessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28069
diff
changeset
|
1600 (funcall matcher limit))) |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1601 ;; 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
|
1602 (setq highlights lowdarks) |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1603 (while highlights |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1604 (font-lock-apply-highlight (car highlights)) |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1605 (setq highlights (cdr highlights))))) |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1606 ;; Evaluate POST-MATCH-FORM. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1607 (eval (nth 2 keywords)))) |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1608 |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1609 (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
|
1610 "Fontify according to `font-lock-keywords' between START and END. |
47611
6bc56530304a
(fast-lock-mode, lazy-lock-mode, jit-lock-mode): Don't bind them variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47121
diff
changeset
|
1611 START should be at the beginning of a line. |
6bc56530304a
(fast-lock-mode, lazy-lock-mode, jit-lock-mode): Don't bind them variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47121
diff
changeset
|
1612 LOUDLY, if non-nil, allows progress-meter bar." |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1613 (unless (eq (car font-lock-keywords) t) |
41226
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1614 (setq font-lock-keywords |
72933
cc737d1f33f9
(font-lock-compile-keywords): Rename optional arg to SYNTACTIC-KEYWORDS
Richard M. Stallman <rms@gnu.org>
parents:
72426
diff
changeset
|
1615 (font-lock-compile-keywords font-lock-keywords))) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1616 (let ((case-fold-search font-lock-keywords-case-fold-search) |
56238
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
1617 (keywords (cddr font-lock-keywords)) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1618 (bufname (buffer-name)) (count 0) |
62233
5dfcab314a42
(font-lock-fontify-keywords-region): Use a marker
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62208
diff
changeset
|
1619 (pos (make-marker)) |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1620 keyword matcher highlights) |
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1621 ;; |
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1622 ;; 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
|
1623 (while keywords |
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1624 (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
|
1625 (make-string (incf count) ?.))) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1626 ;; |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1627 ;; 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
|
1628 (setq keyword (car keywords) matcher (car keyword)) |
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1629 (goto-char start) |
25048
6d32371bea44
(top-level): Add jit-lock-mode as new support mode.
Gerd Moellmann <gerd@gnu.org>
parents:
25045
diff
changeset
|
1630 (while (and (< (point) end) |
6d32371bea44
(top-level): Add jit-lock-mode as new support mode.
Gerd Moellmann <gerd@gnu.org>
parents:
25045
diff
changeset
|
1631 (if (stringp matcher) |
6d32371bea44
(top-level): Add jit-lock-mode as new support mode.
Gerd Moellmann <gerd@gnu.org>
parents:
25045
diff
changeset
|
1632 (re-search-forward matcher end t) |
64265
dde987aec664
(font-lock-fontify-keywords-region): Avoid inf-loops
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64091
diff
changeset
|
1633 (funcall matcher end)) |
dde987aec664
(font-lock-fontify-keywords-region): Avoid inf-loops
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64091
diff
changeset
|
1634 ;; Beware empty string matches since they will |
dde987aec664
(font-lock-fontify-keywords-region): Avoid inf-loops
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64091
diff
changeset
|
1635 ;; loop indefinitely. |
dde987aec664
(font-lock-fontify-keywords-region): Avoid inf-loops
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64091
diff
changeset
|
1636 (or (> (point) (match-beginning 0)) |
dde987aec664
(font-lock-fontify-keywords-region): Avoid inf-loops
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64091
diff
changeset
|
1637 (progn (forward-char 1) t))) |
26775
ea2b51ce35a7
(font-lock-multiline): New variable.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26746
diff
changeset
|
1638 (when (and font-lock-multiline |
33163
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1639 (>= (point) |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1640 (save-excursion (goto-char (match-beginning 0)) |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1641 (forward-line 1) (point)))) |
25596
359d6e7a6ffc
(font-lock-multiline): New text property contains
Richard M. Stallman <rms@gnu.org>
parents:
25331
diff
changeset
|
1642 ;; this is a multiline regexp match |
33163
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1643 ;; (setq font-lock-multiline t) |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1644 (put-text-property (if (= (point) |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1645 (save-excursion |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1646 (goto-char (match-beginning 0)) |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1647 (forward-line 1) (point))) |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1648 (1- (point)) |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1649 (match-beginning 0)) |
aebffd7162d1
(font-lock-buffers): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32573
diff
changeset
|
1650 (point) |
25596
359d6e7a6ffc
(font-lock-multiline): New text property contains
Richard M. Stallman <rms@gnu.org>
parents:
25331
diff
changeset
|
1651 'font-lock-multiline t)) |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1652 ;; 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
|
1653 ;; 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
|
1654 (setq highlights (cdr keyword)) |
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1655 (while highlights |
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1656 (if (numberp (car (car highlights))) |
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1657 (font-lock-apply-highlight (car highlights)) |
62233
5dfcab314a42
(font-lock-fontify-keywords-region): Use a marker
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62208
diff
changeset
|
1658 (set-marker pos (point)) |
5dfcab314a42
(font-lock-fontify-keywords-region): Use a marker
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62208
diff
changeset
|
1659 (font-lock-fontify-anchored-keywords (car highlights) end) |
5dfcab314a42
(font-lock-fontify-keywords-region): Use a marker
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62208
diff
changeset
|
1660 ;; Ensure forward progress. `pos' is a marker because anchored |
5dfcab314a42
(font-lock-fontify-keywords-region): Use a marker
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62208
diff
changeset
|
1661 ;; keyword may add/delete text (this happens e.g. in grep.el). |
5dfcab314a42
(font-lock-fontify-keywords-region): Use a marker
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62208
diff
changeset
|
1662 (if (< (point) pos) (goto-char pos))) |
13440
e8cd2c9309c8
1. Use local hooks, not local variables.
Simon Marshall <simon@gnu.org>
parents:
13337
diff
changeset
|
1663 (setq highlights (cdr highlights)))) |
62233
5dfcab314a42
(font-lock-fontify-keywords-region): Use a marker
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62208
diff
changeset
|
1664 (setq keywords (cdr keywords))) |
5dfcab314a42
(font-lock-fontify-keywords-region): Use a marker
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62208
diff
changeset
|
1665 (set-marker pos nil))) |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
1666 |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1667 ;;; End of Keyword regexp fontification functions. |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1668 |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1669 ;; Various functions. |
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1670 |
72933
cc737d1f33f9
(font-lock-compile-keywords): Rename optional arg to SYNTACTIC-KEYWORDS
Richard M. Stallman <rms@gnu.org>
parents:
72426
diff
changeset
|
1671 (defun font-lock-compile-keywords (keywords &optional syntactic-keywords) |
56238
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
1672 "Compile KEYWORDS into the form (t KEYWORDS COMPILED...) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
1673 Here each COMPILED is of the form (MATCHER HIGHLIGHT ...) as shown in the |
41226
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1674 `font-lock-keywords' doc string. |
72933
cc737d1f33f9
(font-lock-compile-keywords): Rename optional arg to SYNTACTIC-KEYWORDS
Richard M. Stallman <rms@gnu.org>
parents:
72426
diff
changeset
|
1675 If SYNTACTIC-KEYWORDS is non-nil, it means these keywords are used for |
cc737d1f33f9
(font-lock-compile-keywords): Rename optional arg to SYNTACTIC-KEYWORDS
Richard M. Stallman <rms@gnu.org>
parents:
72426
diff
changeset
|
1676 `font-lock-syntactic-keywords' rather than for `font-lock-keywords'." |
67903
a57273fb71d3
(font-lock-compile-keywords): Signal an error when
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67738
diff
changeset
|
1677 (if (not font-lock-set-defaults) |
a57273fb71d3
(font-lock-compile-keywords): Signal an error when
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67738
diff
changeset
|
1678 ;; This should never happen. But some external packages sometimes |
a57273fb71d3
(font-lock-compile-keywords): Signal an error when
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67738
diff
changeset
|
1679 ;; call font-lock in unexpected and incorrect ways. It's important to |
a57273fb71d3
(font-lock-compile-keywords): Signal an error when
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67738
diff
changeset
|
1680 ;; stop processing at this point, otherwise we may end up changing the |
a57273fb71d3
(font-lock-compile-keywords): Signal an error when
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67738
diff
changeset
|
1681 ;; global value of font-lock-keywords and break highlighting in many |
a57273fb71d3
(font-lock-compile-keywords): Signal an error when
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67738
diff
changeset
|
1682 ;; other buffers. |
a57273fb71d3
(font-lock-compile-keywords): Signal an error when
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67738
diff
changeset
|
1683 (error "Font-lock trying to use keywords before setting them up")) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1684 (if (eq (car-safe keywords) t) |
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1685 keywords |
56238
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
1686 (setq keywords |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
1687 (cons t (cons keywords |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
1688 (mapcar 'font-lock-compile-keyword keywords)))) |
72933
cc737d1f33f9
(font-lock-compile-keywords): Rename optional arg to SYNTACTIC-KEYWORDS
Richard M. Stallman <rms@gnu.org>
parents:
72426
diff
changeset
|
1689 (if (and (not syntactic-keywords) |
73100
20bdb0abafe2
(font-lock-compile-keywords): Allow value of
Richard M. Stallman <rms@gnu.org>
parents:
72933
diff
changeset
|
1690 (let ((beg-function |
20bdb0abafe2
(font-lock-compile-keywords): Allow value of
Richard M. Stallman <rms@gnu.org>
parents:
72933
diff
changeset
|
1691 (or font-lock-beginning-of-syntax-function |
20bdb0abafe2
(font-lock-compile-keywords): Allow value of
Richard M. Stallman <rms@gnu.org>
parents:
72933
diff
changeset
|
1692 syntax-begin-function))) |
20bdb0abafe2
(font-lock-compile-keywords): Allow value of
Richard M. Stallman <rms@gnu.org>
parents:
72933
diff
changeset
|
1693 (or (eq beg-function 'beginning-of-defun) |
20bdb0abafe2
(font-lock-compile-keywords): Allow value of
Richard M. Stallman <rms@gnu.org>
parents:
72933
diff
changeset
|
1694 (get beg-function 'font-lock-syntax-paren-check))) |
41226
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1695 (not beginning-of-defun-function)) |
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1696 ;; Try to detect when a string or comment contains something that |
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1697 ;; looks like a defun and would thus confuse font-lock. |
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1698 (nconc keywords |
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1699 `((,(if defun-prompt-regexp |
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1700 (concat "^\\(?:" defun-prompt-regexp "\\)?\\s(") |
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1701 "^\\s(") |
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1702 (0 |
58564
eea39a81fd89
(font-lock-compile-keywords): Don't complain if the end
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58203
diff
changeset
|
1703 (if (memq (get-text-property (match-beginning 0) 'face) |
41226
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1704 '(font-lock-string-face font-lock-doc-face |
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1705 font-lock-comment-face)) |
66268
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1706 (list 'face font-lock-warning-face |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1707 'help-echo "Looks like a toplevel defun: escape the parenthesis")) |
41226
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1708 prepend))))) |
170c7bb7fc74
(font-lock-compile-keywords): New arg `regexp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40780
diff
changeset
|
1709 keywords)) |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1710 |
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1711 (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
|
1712 (cond ((nlistp keyword) ; MATCHER |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1713 (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
|
1714 ((eq (car keyword) 'eval) ; (eval . FORM) |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1715 (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
|
1716 ((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
|
1717 ;; 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
|
1718 (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
|
1719 (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
|
1720 (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
|
1721 ((numberp (cdr keyword)) ; (MATCHER . MATCH) |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1722 (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
|
1723 ((symbolp (cdr keyword)) ; (MATCHER . FACENAME) |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1724 (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
|
1725 ((nlistp (nth 1 keyword)) ; (MATCHER . HIGHLIGHT) |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1726 (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
|
1727 (t ; (MATCHER HIGHLIGHT ...) |
14365
ef148b168aad
Support for buffer local fontification functions.
Simon Marshall <simon@gnu.org>
parents:
14266
diff
changeset
|
1728 keyword))) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1729 |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1730 (defun font-lock-eval-keywords (keywords) |
26620 | 1731 "Evalulate KEYWORDS if a function (funcall) or variable (eval) name." |
18463
4f630b3e8f43
split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents:
18332
diff
changeset
|
1732 (if (listp keywords) |
4f630b3e8f43
split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents:
18332
diff
changeset
|
1733 keywords |
4f630b3e8f43
split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents:
18332
diff
changeset
|
1734 (font-lock-eval-keywords (if (fboundp keywords) |
4f630b3e8f43
split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents:
18332
diff
changeset
|
1735 (funcall keywords) |
4f630b3e8f43
split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents:
18332
diff
changeset
|
1736 (eval keywords))))) |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
1737 |
14708
da278f255507
Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents:
14516
diff
changeset
|
1738 (defun font-lock-value-in-major-mode (alist) |
26620 | 1739 "Return value in ALIST for `major-mode', or ALIST if it is not an alist. |
1740 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
|
1741 (if (consp alist) |
da278f255507
Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents:
14516
diff
changeset
|
1742 (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
|
1743 alist)) |
da278f255507
Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents:
14516
diff
changeset
|
1744 |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1745 (defun font-lock-choose-keywords (keywords level) |
26620 | 1746 "Return LEVELth element of KEYWORDS. |
1747 A LEVEL of nil is equal to a LEVEL of 0, a LEVEL of t is equal to | |
1748 \(1- (length KEYWORDS))." | |
32306
86a849ccfae1
(font-lock-defaults): Make buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32272
diff
changeset
|
1749 (cond ((not (and (listp keywords) (symbolp (car keywords)))) |
14708
da278f255507
Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents:
14516
diff
changeset
|
1750 keywords) |
da278f255507
Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents:
14516
diff
changeset
|
1751 ((numberp level) |
67738
f2537ba84319
(font-lock-default-fontify-buffer): Try and set-defaults even if font-lock-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67678
diff
changeset
|
1752 (or (nth level keywords) (car (last keywords)))) |
14708
da278f255507
Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents:
14516
diff
changeset
|
1753 ((eq level t) |
67738
f2537ba84319
(font-lock-default-fontify-buffer): Try and set-defaults even if font-lock-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67678
diff
changeset
|
1754 (car (last keywords))) |
14708
da278f255507
Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents:
14516
diff
changeset
|
1755 (t |
da278f255507
Make global-font-lock-mode show status messages, and fontification interruptable.
Simon Marshall <simon@gnu.org>
parents:
14516
diff
changeset
|
1756 (car keywords)))) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1757 |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1758 (defvar font-lock-set-defaults nil) ; Whether we have set up defaults. |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1759 |
63025
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
1760 (defvar font-lock-mode-major-mode) |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1761 (defun font-lock-set-defaults () |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1762 "Set fontification defaults appropriately for this mode. |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1763 Sets various variables using `font-lock-defaults' (or, if nil, using |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1764 `font-lock-defaults-alist') and `font-lock-maximum-decoration'." |
78492
7c8949dbfa0d
Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents:
78236
diff
changeset
|
1765 ;; Set fontification defaults if not previously set for correct major mode. |
63025
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
1766 (unless (and font-lock-set-defaults |
36a997bd89f7
(font-lock-add-keywords): Doc fix. Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
62863
diff
changeset
|
1767 (eq font-lock-mode-major-mode major-mode)) |
63028
6e292941905b
(font-lock-set-defaults): Fix omission in last change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
63025
diff
changeset
|
1768 (setq font-lock-mode-major-mode major-mode) |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1769 (set (make-local-variable 'font-lock-set-defaults) t) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1770 (make-local-variable 'font-lock-fontified) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1771 (make-local-variable 'font-lock-multiline) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1772 (let* ((defaults (or font-lock-defaults |
56758
7a0ad15724f6
(font-lock-set-defaults): Use with-no-warnings.
Richard M. Stallman <rms@gnu.org>
parents:
56553
diff
changeset
|
1773 (cdr (assq major-mode |
7a0ad15724f6
(font-lock-set-defaults): Use with-no-warnings.
Richard M. Stallman <rms@gnu.org>
parents:
56553
diff
changeset
|
1774 (with-no-warnings |
66268
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
1775 font-lock-defaults-alist))))) |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1776 (keywords |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1777 (font-lock-choose-keywords (nth 0 defaults) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1778 (font-lock-value-in-major-mode font-lock-maximum-decoration))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1779 (local (cdr (assq major-mode font-lock-keywords-alist))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1780 (removed-keywords |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1781 (cdr-safe (assq major-mode font-lock-removed-keywords-alist)))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1782 (set (make-local-variable 'font-lock-defaults) defaults) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1783 ;; Syntactic fontification? |
80112
c0a87fab3914
(font-lock-set-defaults): Unset previously set variables when needed.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
1784 (if (nth 1 defaults) |
c0a87fab3914
(font-lock-set-defaults): Unset previously set variables when needed.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
1785 (set (make-local-variable 'font-lock-keywords-only) t) |
c0a87fab3914
(font-lock-set-defaults): Unset previously set variables when needed.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
1786 (kill-local-variable 'font-lock-keywords-only)) |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1787 ;; Case fold during regexp fontification? |
80112
c0a87fab3914
(font-lock-set-defaults): Unset previously set variables when needed.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
1788 (if (nth 2 defaults) |
c0a87fab3914
(font-lock-set-defaults): Unset previously set variables when needed.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
1789 (set (make-local-variable 'font-lock-keywords-case-fold-search) t) |
c0a87fab3914
(font-lock-set-defaults): Unset previously set variables when needed.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
1790 (kill-local-variable 'font-lock-keywords-case-fold-search)) |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1791 ;; Syntax table for regexp and syntactic fontification? |
80112
c0a87fab3914
(font-lock-set-defaults): Unset previously set variables when needed.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
1792 (if (null (nth 3 defaults)) |
c0a87fab3914
(font-lock-set-defaults): Unset previously set variables when needed.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
1793 (kill-local-variable 'font-lock-syntax-table) |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1794 (set (make-local-variable 'font-lock-syntax-table) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1795 (copy-syntax-table (syntax-table))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1796 (dolist (selem (nth 3 defaults)) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1797 ;; The character to modify may be a single CHAR or a STRING. |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1798 (let ((syntax (cdr selem))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1799 (dolist (char (if (numberp (car selem)) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1800 (list (car selem)) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1801 (mapcar 'identity (car selem)))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1802 (modify-syntax-entry char syntax font-lock-syntax-table))))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1803 ;; Syntax function for syntactic fontification? |
80112
c0a87fab3914
(font-lock-set-defaults): Unset previously set variables when needed.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
1804 (if (nth 4 defaults) |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1805 (set (make-local-variable 'font-lock-beginning-of-syntax-function) |
80112
c0a87fab3914
(font-lock-set-defaults): Unset previously set variables when needed.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
1806 (nth 4 defaults)) |
c0a87fab3914
(font-lock-set-defaults): Unset previously set variables when needed.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
1807 (kill-local-variable 'font-lock-beginning-of-syntax-function)) |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1808 ;; Variable alist? |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1809 (dolist (x (nthcdr 5 defaults)) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1810 (set (make-local-variable (car x)) (cdr x))) |
56238
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
1811 ;; Set up `font-lock-keywords' last because its value might depend |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1812 ;; on other settings (e.g. font-lock-compile-keywords uses |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1813 ;; font-lock-beginning-of-syntax-function). |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1814 (set (make-local-variable 'font-lock-keywords) |
56238
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
1815 (font-lock-eval-keywords keywords)) |
50594
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1816 ;; Local fontification? |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1817 (while local |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1818 (font-lock-add-keywords nil (car (car local)) (cdr (car local))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1819 (setq local (cdr local))) |
09c07c654b23
(font-lock-multiline, font-lock-fontified)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50588
diff
changeset
|
1820 (when removed-keywords |
56238
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
1821 (font-lock-remove-keywords nil removed-keywords)) |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
1822 ;; Now compile the keywords. |
f186f03b4d6b
(font-lock-keywords): Change format of compiled values. Document it.
Richard M. Stallman <rms@gnu.org>
parents:
55856
diff
changeset
|
1823 (unless (eq (car font-lock-keywords) t) |
67738
f2537ba84319
(font-lock-default-fontify-buffer): Try and set-defaults even if font-lock-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67678
diff
changeset
|
1824 (setq font-lock-keywords |
72933
cc737d1f33f9
(font-lock-compile-keywords): Rename optional arg to SYNTACTIC-KEYWORDS
Richard M. Stallman <rms@gnu.org>
parents:
72426
diff
changeset
|
1825 (font-lock-compile-keywords font-lock-keywords)))))) |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
1826 |
96363
f9d35151b907
American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents:
95545
diff
changeset
|
1827 ;;; Color etc. support. |
4053 | 1828 |
66717
5271a20d9255
* font-lock.el: Don't deal with font-lock-face-attributes here,
Dan Nicolaescu <dann@ics.uci.edu>
parents:
66678
diff
changeset
|
1829 ;; Note that `defface' will not overwrite any faces declared above via |
5271a20d9255
* font-lock.el: Don't deal with font-lock-face-attributes here,
Dan Nicolaescu <dann@ics.uci.edu>
parents:
66678
diff
changeset
|
1830 ;; `custom-declare-face'. |
61771
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1831 (defface font-lock-comment-face |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1832 '((((class grayscale) (background light)) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1833 (:foreground "DimGray" :weight bold :slant italic)) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1834 (((class grayscale) (background dark)) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1835 (:foreground "LightGray" :weight bold :slant italic)) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1836 (((class color) (min-colors 88) (background light)) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1837 (:foreground "Firebrick")) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1838 (((class color) (min-colors 88) (background dark)) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1839 (:foreground "chocolate1")) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1840 (((class color) (min-colors 16) (background light)) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1841 (:foreground "red")) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1842 (((class color) (min-colors 16) (background dark)) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1843 (:foreground "red1")) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1844 (((class color) (min-colors 8) (background light)) |
92848
9b6110ff87b2
(font-lock-comment-face): Set the foreground for
Dan Nicolaescu <dann@ics.uci.edu>
parents:
92811
diff
changeset
|
1845 (:foreground "red")) |
61771
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1846 (((class color) (min-colors 8) (background dark)) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1847 ) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1848 (t (:weight bold :slant italic))) |
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1849 "Font Lock mode face used to highlight comments." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1850 :group 'font-lock-faces) |
61771
024d90514771
(font-lock-comment-face): On terminals with few colors,
Richard M. Stallman <rms@gnu.org>
parents:
61394
diff
changeset
|
1851 |
62264
01b87ce19664
(font-lock-comment-delimiter-face): Inherit from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62253
diff
changeset
|
1852 (defface font-lock-comment-delimiter-face |
62266
8db74faa378a
(font-lock-comment-delimiter-face): Fix last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62264
diff
changeset
|
1853 '((default :inherit font-lock-comment-face) |
62272
f1e03f4e94d2
(font-lock-comment-delimiter-face): Fix up the inheritance.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62266
diff
changeset
|
1854 (((class grayscale))) |
f1e03f4e94d2
(font-lock-comment-delimiter-face): Fix up the inheritance.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62266
diff
changeset
|
1855 (((class color) (min-colors 16))) |
62266
8db74faa378a
(font-lock-comment-delimiter-face): Fix last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62264
diff
changeset
|
1856 (((class color) (min-colors 8) (background light)) |
8db74faa378a
(font-lock-comment-delimiter-face): Fix last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62264
diff
changeset
|
1857 :foreground "red") |
8db74faa378a
(font-lock-comment-delimiter-face): Fix last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62264
diff
changeset
|
1858 (((class color) (min-colors 8) (background dark)) |
8db74faa378a
(font-lock-comment-delimiter-face): Fix last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62264
diff
changeset
|
1859 :foreground "red1")) |
62264
01b87ce19664
(font-lock-comment-delimiter-face): Inherit from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62253
diff
changeset
|
1860 "Font Lock mode face used to highlight comment delimiters." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1861 :group 'font-lock-faces) |
62264
01b87ce19664
(font-lock-comment-delimiter-face): Inherit from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62253
diff
changeset
|
1862 |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1863 (defface font-lock-string-face |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1864 '((((class grayscale) (background light)) (:foreground "DimGray" :slant italic)) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1865 (((class grayscale) (background dark)) (:foreground "LightGray" :slant italic)) |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1866 (((class color) (min-colors 88) (background light)) (:foreground "RosyBrown")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1867 (((class color) (min-colors 88) (background dark)) (:foreground "LightSalmon")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1868 (((class color) (min-colors 16) (background light)) (:foreground "RosyBrown")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1869 (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1870 (((class color) (min-colors 8)) (:foreground "green")) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1871 (t (:slant italic))) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1872 "Font Lock mode face used to highlight strings." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1873 :group 'font-lock-faces) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
1874 |
33360
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
1875 (defface font-lock-doc-face |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
1876 '((t :inherit font-lock-string-face)) |
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
1877 "Font Lock mode face used to highlight documentation." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1878 :group 'font-lock-faces) |
33360
cda8c854bb02
(font-lock-*-face) <defvar>: Move.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33163
diff
changeset
|
1879 |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1880 (defface font-lock-keyword-face |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1881 '((((class grayscale) (background light)) (:foreground "LightGray" :weight bold)) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1882 (((class grayscale) (background dark)) (:foreground "DimGray" :weight bold)) |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1883 (((class color) (min-colors 88) (background light)) (:foreground "Purple")) |
61394
31aa9a390538
* mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents:
61392
diff
changeset
|
1884 (((class color) (min-colors 88) (background dark)) (:foreground "Cyan1")) |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1885 (((class color) (min-colors 16) (background light)) (:foreground "Purple")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1886 (((class color) (min-colors 16) (background dark)) (:foreground "Cyan")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1887 (((class color) (min-colors 8)) (:foreground "cyan" :weight bold)) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1888 (t (:weight bold))) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1889 "Font Lock mode face used to highlight keywords." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1890 :group 'font-lock-faces) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1891 |
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1892 (defface font-lock-builtin-face |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1893 '((((class grayscale) (background light)) (:foreground "LightGray" :weight bold)) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1894 (((class grayscale) (background dark)) (:foreground "DimGray" :weight bold)) |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1895 (((class color) (min-colors 88) (background light)) (:foreground "Orchid")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1896 (((class color) (min-colors 88) (background dark)) (:foreground "LightSteelBlue")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1897 (((class color) (min-colors 16) (background light)) (:foreground "Orchid")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1898 (((class color) (min-colors 16) (background dark)) (:foreground "LightSteelBlue")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1899 (((class color) (min-colors 8)) (:foreground "blue" :weight bold)) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1900 (t (:weight bold))) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1901 "Font Lock mode face used to highlight builtins." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1902 :group 'font-lock-faces) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1903 |
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1904 (defface font-lock-function-name-face |
61394
31aa9a390538
* mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents:
61392
diff
changeset
|
1905 '((((class color) (min-colors 88) (background light)) (:foreground "Blue1")) |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1906 (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1907 (((class color) (min-colors 16) (background light)) (:foreground "Blue")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1908 (((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1909 (((class color) (min-colors 8)) (:foreground "blue" :weight bold)) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1910 (t (:inverse-video t :weight bold))) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1911 "Font Lock mode face used to highlight function names." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1912 :group 'font-lock-faces) |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
1913 |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1914 (defface font-lock-variable-name-face |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1915 '((((class grayscale) (background light)) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1916 (:foreground "Gray90" :weight bold :slant italic)) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1917 (((class grayscale) (background dark)) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1918 (:foreground "DimGray" :weight bold :slant italic)) |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1919 (((class color) (min-colors 88) (background light)) (:foreground "DarkGoldenrod")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1920 (((class color) (min-colors 88) (background dark)) (:foreground "LightGoldenrod")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1921 (((class color) (min-colors 16) (background light)) (:foreground "DarkGoldenrod")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1922 (((class color) (min-colors 16) (background dark)) (:foreground "LightGoldenrod")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1923 (((class color) (min-colors 8)) (:foreground "yellow" :weight light)) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1924 (t (:weight bold :slant italic))) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1925 "Font Lock mode face used to highlight variable names." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1926 :group 'font-lock-faces) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1927 |
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1928 (defface font-lock-type-face |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1929 '((((class grayscale) (background light)) (:foreground "Gray90" :weight bold)) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1930 (((class grayscale) (background dark)) (:foreground "DimGray" :weight bold)) |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1931 (((class color) (min-colors 88) (background light)) (:foreground "ForestGreen")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1932 (((class color) (min-colors 88) (background dark)) (:foreground "PaleGreen")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1933 (((class color) (min-colors 16) (background light)) (:foreground "ForestGreen")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1934 (((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1935 (((class color) (min-colors 8)) (:foreground "green")) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1936 (t (:weight bold :underline t))) |
20951
ae0c93b9ac1f
Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents:
20923
diff
changeset
|
1937 "Font Lock mode face used to highlight type and classes." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1938 :group 'font-lock-faces) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1939 |
20951
ae0c93b9ac1f
Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents:
20923
diff
changeset
|
1940 (defface font-lock-constant-face |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1941 '((((class grayscale) (background light)) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1942 (:foreground "LightGray" :weight bold :underline t)) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1943 (((class grayscale) (background dark)) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1944 (:foreground "Gray50" :weight bold :underline t)) |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1945 (((class color) (min-colors 88) (background light)) (:foreground "CadetBlue")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1946 (((class color) (min-colors 88) (background dark)) (:foreground "Aquamarine")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1947 (((class color) (min-colors 16) (background light)) (:foreground "CadetBlue")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1948 (((class color) (min-colors 16) (background dark)) (:foreground "Aquamarine")) |
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1949 (((class color) (min-colors 8)) (:foreground "magenta")) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1950 (t (:weight bold :underline t))) |
20951
ae0c93b9ac1f
Renamed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents:
20923
diff
changeset
|
1951 "Font Lock mode face used to highlight constants and labels." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1952 :group 'font-lock-faces) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1953 |
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1954 (defface font-lock-warning-face |
61394
31aa9a390538
* mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents:
61392
diff
changeset
|
1955 '((((class color) (min-colors 88) (background light)) (:foreground "Red1" :weight bold)) |
54153
efe95a1385e1
(font-lock-comment-face, font-lock-string-face,
Eli Zaretskii <eliz@gnu.org>
parents:
53710
diff
changeset
|
1956 (((class color) (min-colors 88) (background dark)) (:foreground "Pink" :weight bold)) |
66678
d3efdaf600d9
(font-lock-warning-face): Use the more vivid red1,
Dan Nicolaescu <dann@ics.uci.edu>
parents:
66579
diff
changeset
|
1957 (((class color) (min-colors 16) (background light)) (:foreground "Red1" :weight bold)) |
55062
44fb4d4fdf7b
(font-lock-preprocessor-face): Remove spurious quote.
Juanma Barranquero <lekktu@gmail.com>
parents:
54550
diff
changeset
|
1958 (((class color) (min-colors 16) (background dark)) (:foreground "Pink" :weight bold)) |
44fb4d4fdf7b
(font-lock-preprocessor-face): Remove spurious quote.
Juanma Barranquero <lekktu@gmail.com>
parents:
54550
diff
changeset
|
1959 (((class color) (min-colors 8)) (:foreground "red")) |
42449
b4510b1b83f3
(initializing from font-lock-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents:
41934
diff
changeset
|
1960 (t (:inverse-video t :weight bold))) |
17495
83dabcc0a796
Customise. And a few code cleanups.
Simon Marshall <simon@gnu.org>
parents:
17468
diff
changeset
|
1961 "Font Lock mode face used to highlight warnings." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1962 :group 'font-lock-faces) |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
1963 |
62078
82c979abe63f
(font-lock-negation-char-face): New face and variable.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
61910
diff
changeset
|
1964 (defface font-lock-negation-char-face |
62253
6bbb1e95d2f7
(font-lock-negation-char-face): Default to "off".
Kim F. Storm <storm@cua.dk>
parents:
62239
diff
changeset
|
1965 '((t nil)) |
62078
82c979abe63f
(font-lock-negation-char-face): New face and variable.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
61910
diff
changeset
|
1966 "Font Lock mode face used to highlight easy to overlook negation." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1967 :group 'font-lock-faces) |
62078
82c979abe63f
(font-lock-negation-char-face): New face and variable.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
61910
diff
changeset
|
1968 |
50588
7bfe36160365
(font-lock-preprocessor-face): New var and face.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49615
diff
changeset
|
1969 (defface font-lock-preprocessor-face |
55062
44fb4d4fdf7b
(font-lock-preprocessor-face): Remove spurious quote.
Juanma Barranquero <lekktu@gmail.com>
parents:
54550
diff
changeset
|
1970 '((t :inherit font-lock-builtin-face)) |
50588
7bfe36160365
(font-lock-preprocessor-face): New var and face.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49615
diff
changeset
|
1971 "Font Lock mode face used to highlight preprocessor directives." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1972 :group 'font-lock-faces) |
50588
7bfe36160365
(font-lock-preprocessor-face): New var and face.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49615
diff
changeset
|
1973 |
63911
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
1974 (defface font-lock-regexp-grouping-backslash |
64498
44d210b5de14
(font-lock-regexp-grouping-backslash): Don't
Juri Linkov <juri@jurta.org>
parents:
64265
diff
changeset
|
1975 '((t :inherit bold)) |
63911
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
1976 "Font Lock mode face for backslashes in Lisp regexp grouping constructs." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1977 :group 'font-lock-faces) |
63049
2c644f271d4c
(font-lock-regexp-backslash)
Juri Linkov <juri@jurta.org>
parents:
63028
diff
changeset
|
1978 |
63929
7b7a48be14e2
(font-lock-regexp-grouping-construct): Fix the bogus name from
Eli Zaretskii <eliz@gnu.org>
parents:
63911
diff
changeset
|
1979 (defface font-lock-regexp-grouping-construct |
63049
2c644f271d4c
(font-lock-regexp-backslash)
Juri Linkov <juri@jurta.org>
parents:
63028
diff
changeset
|
1980 '((t :inherit bold)) |
63911
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
1981 "Font Lock mode face used to highlight grouping constructs in Lisp regexps." |
66956
0f46b2eb27ed
(font-lock-faces): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents:
66717
diff
changeset
|
1982 :group 'font-lock-faces) |
63049
2c644f271d4c
(font-lock-regexp-backslash)
Juri Linkov <juri@jurta.org>
parents:
63028
diff
changeset
|
1983 |
96363
f9d35151b907
American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents:
95545
diff
changeset
|
1984 ;;; End of Color etc. support. |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
1985 |
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
|
1986 ;;; 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
|
1987 |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
1988 ;; 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
|
1989 ;; 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
|
1990 ;; 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
|
1991 ;; 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
|
1992 ;; 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
|
1993 ;; |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
1994 ;; (define-key menu-bar-edit-menu [font-lock] |
20923
c6e733c90ed8
Keyword doc fixes and keyword tweaks.
Simon Marshall <simon@gnu.org>
parents:
20851
diff
changeset
|
1995 ;; (cons "Syntax Highlighting" font-lock-menu)) |
17055
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
1996 ;; |
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
1997 ;; 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
|
1998 ;; 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
|
1999 ;; 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
|
2000 ;; 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
|
2001 |
66268
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2002 ;;;;;###autoload |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2003 ;;(progn |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2004 ;; ;; Make the Font Lock menu. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2005 ;; (defvar font-lock-menu (make-sparse-keymap "Syntax Highlighting")) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2006 ;; ;; Add the menu items in reverse order. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2007 ;; (define-key font-lock-menu [fontify-less] |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2008 ;; '("Less In Current Buffer" . font-lock-fontify-less)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2009 ;; (define-key font-lock-menu [fontify-more] |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2010 ;; '("More In Current Buffer" . font-lock-fontify-more)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2011 ;; (define-key font-lock-menu [font-lock-sep] |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2012 ;; '("--")) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2013 ;; (define-key font-lock-menu [font-lock-mode] |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2014 ;; '("In Current Buffer" . font-lock-mode)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2015 ;; (define-key font-lock-menu [global-font-lock-mode] |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2016 ;; '("In All Buffers" . global-font-lock-mode))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2017 ;; |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2018 ;;;;;###autoload |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2019 ;;(progn |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2020 ;; ;; We put the appropriate `menu-enable' etc. symbol property values on when |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2021 ;; ;; font-lock.el is loaded, so we don't need to autoload the three variables. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2022 ;; (put 'global-font-lock-mode 'menu-toggle t) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2023 ;; (put 'font-lock-mode 'menu-toggle t) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2024 ;; (put 'font-lock-fontify-more 'menu-enable '(identity)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2025 ;; (put 'font-lock-fontify-less 'menu-enable '(identity))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2026 ;; |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2027 ;; ;; Put the appropriate symbol property values on now. See above. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2028 ;;(put 'global-font-lock-mode 'menu-selected 'global-font-lock-mode) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2029 ;;(put 'font-lock-mode 'menu-selected 'font-lock-mode) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2030 ;;(put 'font-lock-fontify-more 'menu-enable '(nth 2 font-lock-fontify-level)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2031 ;;(put 'font-lock-fontify-less 'menu-enable '(nth 1 font-lock-fontify-level)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2032 ;; |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2033 ;;(defvar font-lock-fontify-level nil) ; For less/more fontification. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2034 ;; |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2035 ;;(defun font-lock-fontify-level (level) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2036 ;; (let ((font-lock-maximum-decoration level)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2037 ;; (when font-lock-mode |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2038 ;; (font-lock-mode)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2039 ;; (font-lock-mode) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2040 ;; (when font-lock-verbose |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2041 ;; (message "Fontifying %s... level %d" (buffer-name) level)))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2042 ;; |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2043 ;;(defun font-lock-fontify-less () |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2044 ;; "Fontify the current buffer with less decoration. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2045 ;;See `font-lock-maximum-decoration'." |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2046 ;; (interactive) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2047 ;; ;; Check in case we get called interactively. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2048 ;; (if (nth 1 font-lock-fontify-level) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2049 ;; (font-lock-fontify-level (1- (car font-lock-fontify-level))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2050 ;; (error "No less decoration"))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2051 ;; |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2052 ;;(defun font-lock-fontify-more () |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2053 ;; "Fontify the current buffer with more decoration. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2054 ;;See `font-lock-maximum-decoration'." |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2055 ;; (interactive) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2056 ;; ;; Check in case we get called interactively. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2057 ;; (if (nth 2 font-lock-fontify-level) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2058 ;; (font-lock-fontify-level (1+ (car font-lock-fontify-level))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2059 ;; (error "No more decoration"))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2060 ;; |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2061 ;; ;; This should be called by `font-lock-set-defaults'. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2062 ;;(defun font-lock-set-menu () |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2063 ;; ;; Activate less/more fontification entries if there are multiple levels for |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2064 ;; ;; the current buffer. Sets `font-lock-fontify-level' to be of the form |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2065 ;; ;; (CURRENT-LEVEL IS-LOWER-LEVEL-P IS-HIGHER-LEVEL-P) for menu activation. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2066 ;; (let ((keywords (or (nth 0 font-lock-defaults) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2067 ;; (nth 1 (assq major-mode font-lock-defaults-alist)))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2068 ;; (level (font-lock-value-in-major-mode font-lock-maximum-decoration))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2069 ;; (make-local-variable 'font-lock-fontify-level) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2070 ;; (if (or (symbolp keywords) (= (length keywords) 1)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2071 ;; (font-lock-unset-menu) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2072 ;; (cond ((eq level t) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2073 ;; (setq level (1- (length keywords)))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2074 ;; ((or (null level) (zerop level)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2075 ;; ;; The default level is usually, but not necessarily, level 1. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2076 ;; (setq level (- (length keywords) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2077 ;; (length (member (eval (car keywords)) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2078 ;; (mapcar 'eval (cdr keywords)))))))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2079 ;; (setq font-lock-fontify-level (list level (> level 1) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2080 ;; (< level (1- (length keywords)))))))) |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2081 ;; |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2082 ;; ;; This should be called by `font-lock-unset-defaults'. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2083 ;;(defun font-lock-unset-menu () |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2084 ;; ;; Deactivate less/more fontification entries. |
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2085 ;; (setq font-lock-fontify-level nil)) |
17161
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
2086 |
a2d3b455c6f4
Allow arbitrary regexps in *-font-lock-extra-types.
Simon Marshall <simon@gnu.org>
parents:
17055
diff
changeset
|
2087 ;;; End of Menu support. |
17055
f0f8005780cc
1. If PRE-MATCH-FORM returns a suitable number, use that as a value for LIMIT.
Simon Marshall <simon@gnu.org>
parents:
16852
diff
changeset
|
2088 |
13299
d6bfe124472c
General reorganisation; moving and renaming etc.
Simon Marshall <simon@gnu.org>
parents:
12813
diff
changeset
|
2089 ;;; Various regexp information shared by several modes. |
66268
edfe61dd2874
(font-lock-compile-keywords): Add a help-echo to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65960
diff
changeset
|
2090 ;; ;; Information specific to a single mode should go in its load library. |
4053 | 2091 |
51720
9d8489f40d2c
(font-lock-extra-types-widget)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50594
diff
changeset
|
2092 ;; Font Lock support for C, C++, Objective-C and Java modes is now in |
9d8489f40d2c
(font-lock-extra-types-widget)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50594
diff
changeset
|
2093 ;; cc-fonts.el (and required by cc-mode.el). However, the below function |
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
|
2094 ;; 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
|
2095 |
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
|
2096 (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
|
2097 "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
|
2098 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
|
2099 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
|
2100 |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
2101 The expected syntax of a declaration/definition item is `word' (preceded by |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
2102 optional whitespace and `*' characters and proceeded by optional whitespace) |
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
2103 optionally followed by a `('. Everything following the item (but belonging to |
49569
d8d2b16ffa18
(font-lock-match-c-style-declaration-item-and-skip-to-next):
Andreas Schwab <schwab@suse.de>
parents:
49522
diff
changeset
|
2104 it) is expected to be skip-able by `scan-sexps', and items are expected to be |
18025
9f9f522cdc27
Update for syntax-table text properties.
Simon Marshall <simon@gnu.org>
parents:
17543
diff
changeset
|
2105 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
|
2106 |
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
|
2107 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
|
2108 ^^^^ ^ |
c921b60ee783
(a) add font-lock-keywords-alist, (b) fix compilation of quoted conses in keyword form, (c) make simple font-lock-match-c-style-declaration-item-and-skip-to-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 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
|
2110 |
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
|
2111 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
|
2112 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
|
2113 |
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
|
2114 This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item." |
40780
9639c00722d3
(font-lock-match-c-style-declaration-item-and-skip-to-next):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40540
diff
changeset
|
2115 (when (looking-at "[ \n\t*]*\\(\\sw+\\)[ \t\n]*\\(((?\\)?") |
40394
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
2116 (when (and (match-end 2) (> (- (match-end 2) (match-beginning 2)) 1)) |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
2117 ;; If `word' is followed by a double open-paren, it's probably |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
2118 ;; a macro used for "int myfun P_ ((int arg1))". Let's go back one |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
2119 ;; word to try and match `myfun' rather than `P_'. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
2120 (let ((pos (point))) |
40780
9639c00722d3
(font-lock-match-c-style-declaration-item-and-skip-to-next):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40540
diff
changeset
|
2121 (skip-chars-backward " \t\n") |
40394
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
2122 (skip-syntax-backward "w") |
49569
d8d2b16ffa18
(font-lock-match-c-style-declaration-item-and-skip-to-next):
Andreas Schwab <schwab@suse.de>
parents:
49522
diff
changeset
|
2123 (unless (looking-at "\\(\\sw+\\)[ \t\n]*\\sw+[ \t\n]*\\(((?\\)?") |
40394
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
2124 ;; Looks like it was something else, so go back to where we |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
2125 ;; were and reset the match data by rematching. |
b2fcb3933879
Require `syntax'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40339
diff
changeset
|
2126 (goto-char pos) |
40780
9639c00722d3
(font-lock-match-c-style-declaration-item-and-skip-to-next):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40540
diff
changeset
|
2127 (looking-at "[ \n\t*]*\\(\\sw+\\)[ \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
|
2128 (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
|
2129 (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
|
2130 (save-restriction |
40780
9639c00722d3
(font-lock-match-c-style-declaration-item-and-skip-to-next):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40540
diff
changeset
|
2131 ;; Restrict to the 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
|
2132 (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
|
2133 (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
|
2134 ;; Move over any item value, etc., to the next item. |
40780
9639c00722d3
(font-lock-match-c-style-declaration-item-and-skip-to-next):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40540
diff
changeset
|
2135 (while (not (looking-at "[ \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
|
2136 (goto-char (or (scan-sexps (point) 1) (point-max)))) |
89464
3bd06346cb4b
(font-lock-match-c-style-declaration-item-and-skip-to-next):
Kenichi Handa <handa@m17n.org>
parents:
43193
diff
changeset
|
2137 (if (match-end 2) |
3bd06346cb4b
(font-lock-match-c-style-declaration-item-and-skip-to-next):
Kenichi Handa <handa@m17n.org>
parents:
43193
diff
changeset
|
2138 (goto-char (match-end 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
|
2139 (error t))))) |
68134
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2140 |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2141 ;; C preprocessor(cpp) is used outside of C, C++ and Objective-C source file. |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2142 ;; e.g. assembler code and GNU linker script in Linux kernel. |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2143 ;; `cpp-font-lock-keywords' is handy for modes for the files. |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2144 ;; |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2145 ;; Here we cannot use `regexp-opt' because because regex-opt is not preloaded |
92811
2dc33caeb08c
(lisp-font-lock-keywords-1): Support wider range of
Glenn Morris <rgm@gnu.org>
parents:
92148
diff
changeset
|
2146 ;; while font-lock.el is preloaded to emacs. So values pre-calculated with |
68134
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2147 ;; regexp-opt are used here. |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2148 |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2149 ;; `cpp-font-lock-keywords-source-directives' is calculated from: |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2150 ;; |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2151 ;; (regexp-opt |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2152 ;; '("define" "elif" "else" "endif" "error" "file" "if" "ifdef" |
70530
958e92b75789
(cpp-font-lock-keywords-source-directives): Addded
Masatake YAMATO <jet@gyve.org>
parents:
69499
diff
changeset
|
2153 ;; "ifndef" "import" "include" "line" "pragma" "undef" "warning")) |
68134
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2154 ;; |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2155 (defconst cpp-font-lock-keywords-source-directives |
70530
958e92b75789
(cpp-font-lock-keywords-source-directives): Addded
Masatake YAMATO <jet@gyve.org>
parents:
69499
diff
changeset
|
2156 "define\\|e\\(?:l\\(?:if\\|se\\)\\|ndif\\|rror\\)\\|file\\|i\\(?:f\\(?:n?def\\)?\\|mport\\|nclude\\)\\|line\\|pragma\\|undef\\|warning" |
95545
02392717a9b9
(font-lock-turn-off-thing-lock, font-lock-after-fontify-buffer)
John Paul Wallington <jpw@pobox.com>
parents:
94678
diff
changeset
|
2157 "Regular expression used in `cpp-font-lock-keywords'.") |
68134
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2158 |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2159 ;; `cpp-font-lock-keywords-source-depth' is calculated from: |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2160 ;; |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2161 ;; (regexp-opt-depth (regexp-opt |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2162 ;; '("define" "elif" "else" "endif" "error" "file" "if" "ifdef" |
70530
958e92b75789
(cpp-font-lock-keywords-source-directives): Addded
Masatake YAMATO <jet@gyve.org>
parents:
69499
diff
changeset
|
2163 ;; "ifndef" "import" "include" "line" "pragma" "undef" "warning"))) |
68134
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2164 ;; |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2165 (defconst cpp-font-lock-keywords-source-depth 0 |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2166 "An integer representing regular expression depth of `cpp-font-lock-keywords-source-directives'. |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2167 Used in `cpp-font-lock-keywords'.") |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2168 |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2169 (defconst cpp-font-lock-keywords |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2170 (let* ((directives cpp-font-lock-keywords-source-directives) |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2171 (directives-depth cpp-font-lock-keywords-source-depth)) |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2172 (list |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2173 ;; |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2174 ;; Fontify error directives. |
70530
958e92b75789
(cpp-font-lock-keywords-source-directives): Addded
Masatake YAMATO <jet@gyve.org>
parents:
69499
diff
changeset
|
2175 '("^#[ \t]*\\(?:error\\|warning\\)[ \t]+\\(.+\\)" 1 font-lock-warning-face prepend) |
68134
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2176 ;; |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2177 ;; Fontify filenames in #include <...> preprocessor directives as strings. |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2178 '("^#[ \t]*\\(?:import\\|include\\)[ \t]*\\(<[^>\"\n]*>?\\)" |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2179 1 font-lock-string-face prepend) |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2180 ;; |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2181 ;; Fontify function macro names. |
92811
2dc33caeb08c
(lisp-font-lock-keywords-1): Support wider range of
Glenn Morris <rgm@gnu.org>
parents:
92148
diff
changeset
|
2182 '("^#[ \t]*define[ \t]+\\([[:alpha:]_][[:alnum:]_$]*\\)(" |
68134
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2183 (1 font-lock-function-name-face prepend) |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2184 ;; |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2185 ;; Macro arguments. |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2186 ((lambda (limit) |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2187 (re-search-forward |
92811
2dc33caeb08c
(lisp-font-lock-keywords-1): Support wider range of
Glenn Morris <rgm@gnu.org>
parents:
92148
diff
changeset
|
2188 "\\(?:\\([[:alpha:]_][[:alnum:]_]*\\)[,]?\\)" |
2dc33caeb08c
(lisp-font-lock-keywords-1): Support wider range of
Glenn Morris <rgm@gnu.org>
parents:
92148
diff
changeset
|
2189 (or (save-excursion (re-search-forward ")" limit t)) |
68134
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2190 limit) |
92811
2dc33caeb08c
(lisp-font-lock-keywords-1): Support wider range of
Glenn Morris <rgm@gnu.org>
parents:
92148
diff
changeset
|
2191 t)) |
68134
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2192 nil nil (1 font-lock-variable-name-face prepend))) |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2193 ;; |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2194 ;; Fontify symbol names in #elif or #if ... defined preprocessor directives. |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2195 '("^#[ \t]*\\(?:elif\\|if\\)\\>" |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2196 ("\\<\\(defined\\)\\>[ \t]*(?\\([[:alpha:]_][[:alnum:]_]*\\)?" nil nil |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2197 (1 font-lock-builtin-face prepend) (2 font-lock-variable-name-face prepend t))) |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2198 ;; |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2199 ;; Fontify otherwise as symbol names, and the preprocessor directive names. |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2200 (list |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2201 (concat "^\\(#[ \t]*\\(?:" directives |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2202 "\\)\\)\\>[ \t!]*\\([[:alpha:]_][[:alnum:]_]*\\)?") |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2203 '(1 font-lock-preprocessor-face prepend) |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2204 (list (+ 2 directives-depth) |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2205 'font-lock-variable-name-face nil t)))) |
95545
02392717a9b9
(font-lock-turn-off-thing-lock, font-lock-after-fontify-buffer)
John Paul Wallington <jpw@pobox.com>
parents:
94678
diff
changeset
|
2206 "Font lock keywords for C preprocessor directives. |
02392717a9b9
(font-lock-turn-off-thing-lock, font-lock-after-fontify-buffer)
John Paul Wallington <jpw@pobox.com>
parents:
94678
diff
changeset
|
2207 `c-mode', `c++-mode' and `objc-mode' have their own font lock keywords |
02392717a9b9
(font-lock-turn-off-thing-lock, font-lock-after-fontify-buffer)
John Paul Wallington <jpw@pobox.com>
parents:
94678
diff
changeset
|
2208 for C preprocessor directives. This definition is for the other modes |
02392717a9b9
(font-lock-turn-off-thing-lock, font-lock-after-fontify-buffer)
John Paul Wallington <jpw@pobox.com>
parents:
94678
diff
changeset
|
2209 in which C preprocessor directives are used. e.g. `asm-mode' and |
68134
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2210 `ld-script-mode'.") |
48bf79d0aede
2006-01-06 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
67996
diff
changeset
|
2211 |
18463
4f630b3e8f43
split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents:
18332
diff
changeset
|
2212 |
4f630b3e8f43
split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents:
18332
diff
changeset
|
2213 ;; Lisp. |
16456
63b6583c9e5c
Changes to font-lock-fontify-syntactically-region: (a) the cache position must be a marker, (b) use a loop to look for comment start, some speedups.
Simon Marshall <simon@gnu.org>
parents:
15814
diff
changeset
|
2214 |
4053 | 2215 (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
|
2216 (eval-when-compile |
62413
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2217 `(;; Definitions. |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2218 (,(concat "(\\(def\\(" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2219 ;; Function declarations. |
68234
95acdeaf74a2
(lisp-font-lock-keywords-1): Minor rearrangement.
Richard M. Stallman <rms@gnu.org>
parents:
68134
diff
changeset
|
2220 "\\(advice\\|alias\\|generic\\|macro\\*?\\|method\\|" |
62413
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2221 "setf\\|subst\\*?\\|un\\*?\\|" |
67290
562153259d35
(lisp-font-lock-keywords-1): Add define-global-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67201
diff
changeset
|
2222 "ine-\\(condition\\|" |
76576
f117baed9372
Fix typo in last commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
76573
diff
changeset
|
2223 "\\(?:derived\\|\\(?:global\\(?:ized\\)?-\\)?minor\\|generic\\)-mode\\|" |
62413
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2224 "method-combination\\|setf-expander\\|skeleton\\|widget\\|" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2225 "function\\|\\(compiler\\|modify\\|symbol\\)-macro\\)\\)\\|" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2226 ;; Variable declarations. |
68234
95acdeaf74a2
(lisp-font-lock-keywords-1): Minor rearrangement.
Richard M. Stallman <rms@gnu.org>
parents:
68134
diff
changeset
|
2227 "\\(const\\(ant\\)?\\|custom\\|varalias\\|face\\|parameter\\|var\\)\\|" |
62413
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2228 ;; Structure declarations. |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2229 "\\(class\\|group\\|theme\\|package\\|struct\\|type\\)" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2230 "\\)\\)\\>" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2231 ;; Any whitespace and defined object. |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2232 "[ \t'\(]*" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2233 "\\(setf[ \t]+\\sw+)\\|\\sw+\\)?") |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2234 (1 font-lock-keyword-face) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2235 (9 (cond ((match-beginning 3) font-lock-function-name-face) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2236 ((match-beginning 6) font-lock-variable-name-face) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2237 (t font-lock-type-face)) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2238 nil t)) |
92811
2dc33caeb08c
(lisp-font-lock-keywords-1): Support wider range of
Glenn Morris <rgm@gnu.org>
parents:
92148
diff
changeset
|
2239 ;; Emacs Lisp autoload cookies. Supports the slightly different |
2dc33caeb08c
(lisp-font-lock-keywords-1): Support wider range of
Glenn Morris <rgm@gnu.org>
parents:
92148
diff
changeset
|
2240 ;; forms used by mh-e, calendar, etc. |
2dc33caeb08c
(lisp-font-lock-keywords-1): Support wider range of
Glenn Morris <rgm@gnu.org>
parents:
92148
diff
changeset
|
2241 ("^;;;###\\([-a-z]*autoload\\)" 1 font-lock-warning-face prepend) |
62413
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2242 ;; Regexp negated char group. |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2243 ("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend))) |
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
|
2244 "Subdued level highlighting for Lisp modes.") |
4053 | 2245 |
2246 (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
|
2247 (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
|
2248 (eval-when-compile |
62413
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2249 `(;; Control structures. Emacs Lisp forms. |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2250 (,(concat |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2251 "(" (regexp-opt |
63049
2c644f271d4c
(font-lock-regexp-backslash)
Juri Linkov <juri@jurta.org>
parents:
63028
diff
changeset
|
2252 '("cond" "if" "while" "while-no-input" "let" "let*" |
62413
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2253 "prog" "progn" "progv" "prog1" "prog2" "prog*" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2254 "inline" "lambda" "save-restriction" "save-excursion" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2255 "save-window-excursion" "save-selected-window" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2256 "save-match-data" "save-current-buffer" "unwind-protect" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2257 "condition-case" "track-mouse" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2258 "eval-after-load" "eval-and-compile" "eval-when-compile" |
66323
7f93058a1608
(lisp-font-lock-keywords-2): Add eval-at-startup
Andreas Schwab <schwab@suse.de>
parents:
66291
diff
changeset
|
2259 "eval-when" "eval-at-startup" "eval-next-after-load" |
76961
43ce98afcc71
(lisp-font-lock-keywords-2): Add `with-case-table'.
John Paul Wallington <jpw@pobox.com>
parents:
76576
diff
changeset
|
2260 "with-case-table" "with-category-table" |
62413
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2261 "with-current-buffer" "with-electric-help" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2262 "with-local-quit" "with-no-warnings" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2263 "with-output-to-string" "with-output-to-temp-buffer" |
83307
21eea50897a7
Merged from miles@gnu.org--gnu-2005 (patch 69, 313-319)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2264 "with-selected-window" "with-selected-frame" "with-syntax-table" |
62413
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2265 "with-temp-buffer" "with-temp-file" "with-temp-message" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2266 "with-timeout" "with-timeout-handler") t) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2267 "\\>") |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2268 . 1) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2269 ;; Control structures. Common Lisp forms. |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2270 (,(concat |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2271 "(" (regexp-opt |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2272 '("when" "unless" "case" "ecase" "typecase" "etypecase" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2273 "ccase" "ctypecase" "handler-case" "handler-bind" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2274 "restart-bind" "restart-case" "in-package" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2275 "break" "ignore-errors" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2276 "loop" "do" "do*" "dotimes" "dolist" "the" "locally" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2277 "proclaim" "declaim" "declare" "symbol-macrolet" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2278 "lexical-let" "lexical-let*" "flet" "labels" "compiler-let" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2279 "destructuring-bind" "macrolet" "tagbody" "block" "go" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2280 "multiple-value-bind" "multiple-value-prog1" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2281 "return" "return-from" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2282 "with-accessors" "with-compilation-unit" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2283 "with-condition-restarts" "with-hash-table-iterator" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2284 "with-input-from-string" "with-open-file" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2285 "with-open-stream" "with-output-to-string" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2286 "with-package-iterator" "with-simple-restart" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2287 "with-slots" "with-standard-io-syntax") t) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2288 "\\>") |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2289 . 1) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2290 ;; Exit/Feature symbols as constants. |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2291 (,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\>" |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2292 "[ \t']*\\(\\sw+\\)?") |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2293 (1 font-lock-keyword-face) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2294 (2 font-lock-constant-face nil t)) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2295 ;; Erroneous structures. |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2296 ("(\\(abort\\|assert\\|warn\\|check-type\\|cerror\\|error\\|signal\\)\\>" 1 font-lock-warning-face) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2297 ;; Words inside \\[] tend to be for `substitute-command-keys'. |
69264
322d4f69063b
(lisp-font-lock-keywords-2): Quote "]"s in regexps when they have no
Eli Zaretskii <eliz@gnu.org>
parents:
68364
diff
changeset
|
2298 ("\\\\\\\\\\[\\(\\sw+\\)\\]" 1 font-lock-constant-face prepend) |
62413
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2299 ;; Words inside `' tend to be symbol names. |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2300 ("`\\(\\sw\\sw+\\)'" 1 font-lock-constant-face prepend) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2301 ;; Constant values. |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2302 ("\\<:\\sw+\\>" 0 font-lock-builtin-face) |
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2303 ;; ELisp and CLisp `&' keywords as types. |
68364
8c8d4f7c9da5
(lisp-font-lock-keywords-2):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68234
diff
changeset
|
2304 ("\\<\\&\\sw+\\>" . font-lock-type-face) |
63911
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2305 ;; ELisp regexp grouping constructs |
62502
8f934f346603
(lisp-font-lock-keywords-2): Do \\) only in strings, because (eq ... ?\\) is fairly frequent.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62413
diff
changeset
|
2306 ((lambda (bound) |
63911
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2307 (catch 'found |
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2308 ;; The following loop is needed to continue searching after matches |
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2309 ;; that do not occur in strings. The associated regexp matches one |
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2310 ;; of `\\\\' `\\(' `\\(?:' `\\|' `\\)'. `\\\\' has been included to |
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2311 ;; avoid highlighting, for example, `\\(' in `\\\\('. |
81664
7ef84bc04072
(lisp-font-lock-keywords-2): Recognize the new \(?1:..\)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78000
diff
changeset
|
2312 (while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?[0-9]*:\\)?\\|[|)]\\)\\)" bound t) |
63911
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2313 (unless (match-beginning 2) |
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2314 (let ((face (get-text-property (1- (point)) 'face))) |
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2315 (when (or (and (listp face) |
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2316 (memq 'font-lock-string-face face)) |
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2317 (eq 'font-lock-string-face face)) |
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2318 (throw 'found t))))))) |
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2319 (1 'font-lock-regexp-grouping-backslash prepend) |
954c9ade6e2b
(font-lock-regexp-grouping-backslash): Rename from
Eli Zaretskii <eliz@gnu.org>
parents:
63840
diff
changeset
|
2320 (3 'font-lock-regexp-grouping-construct prepend)) |
62239
55168ce0d00d
(font-lock-fontify-syntactically-region): Don't use comment-end if
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62235
diff
changeset
|
2321 ;;; This is too general -- rms. |
55168ce0d00d
(font-lock-fontify-syntactically-region): Don't use comment-end if
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62235
diff
changeset
|
2322 ;;; A user complained that he has functions whose names start with `do' |
55168ce0d00d
(font-lock-fontify-syntactically-region): Don't use comment-end if
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62235
diff
changeset
|
2323 ;;; and that they get the wrong color. |
54255
5cf652dfce17
(lisp-font-lock-keywords-2):
Richard M. Stallman <rms@gnu.org>
parents:
54161
diff
changeset
|
2324 ;;; ;; CL `with-' and `do-' constructs |
62413
f0e96503b7e0
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
62362
diff
changeset
|
2325 ;;; ("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 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
|
2326 ))) |
12385
c80966dc0b60
Specify in font-lock-defaults/font-lock-defaults-alist which keywords we can
Simon Marshall <simon@gnu.org>
parents:
12268
diff
changeset
|
2327 "Gaudy level highlighting for Lisp modes.") |
4053 | 2328 |
12385
c80966dc0b60
Specify in font-lock-defaults/font-lock-defaults-alist which keywords we can
Simon Marshall <simon@gnu.org>
parents:
12268
diff
changeset
|
2329 (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
|
2330 "Default expressions to highlight in Lisp modes.") |
18463
4f630b3e8f43
split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
Simon Marshall <simon@gnu.org>
parents:
18332
diff
changeset
|
2331 |
4053 | 2332 (provide 'font-lock) |
39146
d1a5ac2a48eb
(toplevel): Require `jit-lock' only if
Gerd Moellmann <gerd@gnu.org>
parents:
38491
diff
changeset
|
2333 |
58161
5451548f1bd9
(font-lock-fontify-syntactically-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57433
diff
changeset
|
2334 ;; arch-tag: 682327e4-64d8-4057-b20b-1fbb9f1fc54c |
4053 | 2335 ;;; font-lock.el ends here |