Mercurial > emacs
annotate lisp/font-lock.el @ 10100:461530f66e34
(gettext): Make sure this is always defined, even #if emacs.
(NULL): No need to #undef this anymore; Emacs uses NILP now.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Thu, 01 Dec 1994 22:59:35 +0000 |
parents | 71e0c3ece2fe |
children | a8cdb7630b1c |
rev | line source |
---|---|
4053 | 1 ;; Electric Font Lock Mode |
7298 | 2 ;; Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. |
4053 | 3 |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
4 ;; Author: jwz, then rms and sm (simon.marshall@mail.esrin.esa.it) |
4053 | 5 ;; Maintainer: FSF |
6 ;; Keywords: languages, faces | |
7 | |
8 ;; This file is part of GNU Emacs. | |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
12 ;; the Free Software Foundation; either version 2, or (at your option) | |
13 ;; any later version. | |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
21 ;; along with GNU Emacs; see the file COPYING. If not, write to | |
22 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | |
23 | |
24 | |
25 ;;; Commentary: | |
26 | |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
27 ;; 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
|
28 ;; one face, strings in another, reserved words in another, and so on. |
4053 | 29 ;; |
30 ;; Comments will be displayed in `font-lock-comment-face'. | |
31 ;; 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
|
32 ;; Regexps are used to display selected patterns in other faces. |
4053 | 33 ;; |
34 ;; To make the text you type be fontified, use M-x font-lock-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
|
35 ;; When this minor mode is on, the faces of the current line are |
4053 | 36 ;; updated with every insertion or deletion. |
37 ;; | |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
38 ;; To turn Font Lock mode on automatically, add this to your .emacs file: |
4053 | 39 ;; |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
40 ;; (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock) |
4053 | 41 ;; |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
42 ;; On a Sparc2, `font-lock-fontify-buffer' takes about 10 seconds for a 120k |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
43 ;; file of C code using the default configuration, and about 25 seconds using |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
44 ;; the more extensive configuration, though times also depend on file contents. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
45 ;; You can speed this up substantially by removing some of the patterns that |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
46 ;; are highlighted by default. Fontifying Lisp code is significantly faster, |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
47 ;; because Lisp has a more regular syntax than C, so the expressions don't have |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
48 ;; to be as hairy. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
49 ;; |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
50 ;; If you add patterns for a new mode, say foo.el's `foo-mode', say in which |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
51 ;; you don't want syntactic fontification to occur, you can make Font Lock mode |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
52 ;; use your regexps when turning on Font Lock by adding to `foo-mode-hook': |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
53 ;; |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
54 ;; (add-hook 'foo-mode-hook |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
55 ;; '(lambda () (make-local-variable 'font-lock-defaults) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
56 ;; (setq font-lock-defaults '(foo-font-lock-keywords t)))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
57 ;; |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
58 ;; Nasty regexps of the form "bar\\(\\|lo\\)\\|f\\(oo\\|u\\(\\|bar\\)\\)\\|lo" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
59 ;; are made thusly: (make-regexp '("foo" "fu" "fubar" "bar" "barlo" "lo")) for |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
60 ;; efficiency. See /pub/gnu/emacs/elisp-archive/functions/make-regexp.el.Z on |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
61 ;; archive.cis.ohio-state.edu for this and other functions. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
62 |
4053 | 63 ;;; Code: |
64 | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
65 (defvar font-lock-comment-face 'font-lock-comment-face |
4053 | 66 "Face to use for comments.") |
67 | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
68 (defvar font-lock-string-face 'font-lock-string-face |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
69 "Face to use for strings.") |
4053 | 70 |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
71 (defvar font-lock-function-name-face 'font-lock-function-name-face |
4053 | 72 "Face to use for function names.") |
73 | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
74 (defvar font-lock-variable-name-face 'font-lock-variable-name-face |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
75 "Face to use for variable names.") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
76 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
77 (defvar font-lock-keyword-face 'font-lock-keyword-face |
4053 | 78 "Face to use for keywords.") |
79 | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
80 (defvar font-lock-type-face 'font-lock-type-face |
4053 | 81 "Face to use for data types.") |
82 | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
83 (defvar font-lock-reference-face 'font-lock-reference-face |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
84 "Face to use for references.") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
85 |
7491
621c162a80db
(font-lock-no-comments): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7298
diff
changeset
|
86 (defvar font-lock-no-comments nil |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
87 "Non-nil means Font Lock should not fontify comments or strings.") |
7491
621c162a80db
(font-lock-no-comments): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7298
diff
changeset
|
88 |
4053 | 89 (make-variable-buffer-local 'font-lock-keywords) |
90 (defvar font-lock-keywords nil | |
91 "*The keywords to highlight. | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
92 Elements should be of the form: |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
93 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
94 REGEXP |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
95 (REGEXP . MATCH) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
96 (REGEXP . FACENAME) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
97 (REGEXP . HIGHLIGHT) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
98 (REGEXP HIGHLIGHT ...) |
4053 | 99 |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
100 where HIGHLIGHT should be of the form (MATCH FACENAME OVERRIDE LAXMATCH). |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
101 REGEXP is the regexp to search for, MATCH is the subexpression of REGEXP to be |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
102 highlighted, FACENAME is an expression whose value is the face name to use. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
103 FACENAME's default attributes may be defined in `font-lock-face-attributes'. |
4053 | 104 |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
105 OVERRIDE and LAXMATCH are flags. If OVERRIDE is t, existing fontification may |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
106 be overriden. If `keep', only parts not already fontified are highlighted. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
107 If LAXMATCH is non-nil, no error is signalled if there is no MATCH in REGEXP. |
4053 | 108 |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
109 These regular expressions should not match text which spans lines. While |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
110 \\[font-lock-fontify-buffer] handles multi-line patterns correctly, updating |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
111 when you edit the buffer does not, since it considers text one line at a time. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
112 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
113 Be careful composing regexps for this list; |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
114 the wrong pattern can dramatically slow things down!") |
4053 | 115 |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
116 (defvar font-lock-defaults nil |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
117 "If set by a major mode, should be the defaults for Font Lock mode. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
118 The value should look like the `cdr' of an item in `font-lock-defaults-alist'.") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
119 |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
120 (defvar font-lock-defaults-alist |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
121 '((bibtex-mode . (tex-font-lock-keywords)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
122 (c++-c-mode . (c-font-lock-keywords nil nil ((?\_ . "w")))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
123 (c++-mode . (c++-font-lock-keywords nil nil ((?\_ . "w")))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
124 (c-mode . (c-font-lock-keywords nil nil ((?\_ . "w")))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
125 (emacs-lisp-mode . (lisp-font-lock-keywords)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
126 (latex-mode . (tex-font-lock-keywords)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
127 (lisp-mode . (lisp-font-lock-keywords)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
128 (plain-tex-mode . (tex-font-lock-keywords)) |
9909
ff043fec9153
Add scheme-mode to font-lock-defaults-alist using lisp-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents:
9814
diff
changeset
|
129 (scheme-mode . (lisp-font-lock-keywords)) |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
130 (slitex-mode . (tex-font-lock-keywords)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
131 (tex-mode . (tex-font-lock-keywords))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
132 "*Alist of default major mode and Font Lock defaults. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
133 Each item should be a list of the form: |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
134 (MAJOR-MODE . (FONT-LOCK-KEYWORDS KEYWORDS-ONLY CASE-FOLD FONT-LOCK-SYNTAX)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
135 where both MAJOR-MODE and FONT-LOCK-KEYWORDS are symbols. If KEYWORDS-ONLY is |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
136 non-nil, syntactic fontification (strings and comments) is not performed. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
137 If CASE-FOLD is non-nil, the case of the keywords is ignored when fontifying. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
138 FONT-LOCK-SYNTAX should be a list of cons pairs of the form (CHAR . STRING), it |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
139 is used to set the local Font Lock syntax table for keyword fontification.") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
140 |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
141 (defvar font-lock-maximum-size (* 100 1024) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
142 "*If non-nil, the maximum size for buffers. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
143 Only buffers less than are fontified when Font Lock mode is turned on. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
144 If nil, means size is irrelevant.") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
145 |
4053 | 146 (defvar font-lock-keywords-case-fold-search nil |
147 "*Non-nil means the patterns in `font-lock-keywords' are case-insensitive.") | |
148 | |
8457
c0492d7043b2
(font-lock-syntax-table): New syntax table.
Richard M. Stallman <rms@gnu.org>
parents:
7915
diff
changeset
|
149 (defvar font-lock-syntax-table nil |
c0492d7043b2
(font-lock-syntax-table): New syntax table.
Richard M. Stallman <rms@gnu.org>
parents:
7915
diff
changeset
|
150 "*Non-nil means use this syntax table for fontifying. |
c0492d7043b2
(font-lock-syntax-table): New syntax table.
Richard M. Stallman <rms@gnu.org>
parents:
7915
diff
changeset
|
151 If this is nil, the major mode's syntax table is used.") |
c0492d7043b2
(font-lock-syntax-table): New syntax table.
Richard M. Stallman <rms@gnu.org>
parents:
7915
diff
changeset
|
152 |
4053 | 153 (defvar font-lock-verbose t |
154 "*Non-nil means `font-lock-fontify-buffer' should print status messages.") | |
155 | |
4054 | 156 ;;;###autoload |
4053 | 157 (defvar font-lock-mode-hook nil |
158 "Function or functions to run on entry to Font Lock mode.") | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
159 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
160 ;; Colour etc. support. |
4053 | 161 |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
162 (defvar font-lock-display-type nil |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
163 "A symbol indicating the display Emacs is running under. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
164 The symbol should be one of `color', `grayscale' or `mono'. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
165 If Emacs guesses this display attribute wrongly, either set this variable in |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
166 your `~/.emacs' or set the resource `Emacs.displayType' in your `~/.Xdefaults'. |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
167 See also `font-lock-background-mode' and `font-lock-face-attributes'.") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
168 |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
169 (defvar font-lock-background-mode nil |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
170 "A symbol indicating the Emacs background brightness. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
171 The symbol should be one of `light' or `dark'. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
172 If Emacs guesses this frame attribute wrongly, either set this variable in |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
173 your `~/.emacs' or set the resource `Emacs.backgroundMode' in your |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
174 `~/.Xdefaults'. |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
175 See also `font-lock-display-type' and `font-lock-face-attributes'.") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
176 |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
177 (defvar font-lock-face-attributes nil |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
178 "A list of default attributes to use for face attributes. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
179 Each element of the list should be of the form |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
180 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
181 (FACE FOREGROUND BACKGROUND BOLD-P ITALIC-P UNDERLINE-P) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
182 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
183 where FACE should be one of the face symbols `font-lock-comment-face', |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
184 `font-lock-string-face', `font-lock-keyword-face', `font-lock-type-face', |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
185 `font-lock-function-name-face', `font-lock-variable-name-face', and |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
186 `font-lock-reference-face'. A form for each of these face symbols should be |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
187 provided in the list, but other face symbols and attributes may be given and |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
188 used in highlighting. See `font-lock-keywords'. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
189 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
190 Subsequent element items should be the attributes for the corresponding |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
191 Font Lock mode faces. Attributes FOREGROUND and BACKGROUND should be strings |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
192 \(default if nil), while BOLD-P, ITALIC-P, and UNDERLINE-P should specify the |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
193 corresponding face attributes (yes if non-nil). |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
194 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
195 Emacs uses default attributes based on display type and background brightness. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
196 See variables `font-lock-display-type' and `font-lock-background-mode'. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
197 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
198 Resources can be used to over-ride these face attributes. For example, the |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
199 resource `Emacs.font-lock-comment-face.attributeUnderline' can be used to |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
200 specify the UNDERLINE-P attribute for face `font-lock-comment-face'.") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
201 |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
202 (defun font-lock-make-faces () |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
203 "Make faces from `font-lock-face-attributes'. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
204 A default list is used if this is nil. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
205 See `font-lock-make-face' and `list-faces-display'." |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
206 ;; We don't need to `setq' any of these variables, but the user can see what |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
207 ;; is being used if we do. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
208 (if (null font-lock-display-type) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
209 (setq font-lock-display-type |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
210 (let ((display-resource (x-get-resource ".displayType" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
211 "DisplayType"))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
212 (cond (display-resource (intern (downcase display-resource))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
213 ((x-display-color-p) 'color) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
214 ((x-display-grayscale-p) 'grayscale) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
215 (t 'mono))))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
216 (if (null font-lock-background-mode) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
217 (setq font-lock-background-mode |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
218 (let ((bg-resource (x-get-resource ".backgroundMode" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
219 "BackgroundMode")) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
220 (params (frame-parameters))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
221 (cond (bg-resource (intern (downcase bg-resource))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
222 ((or (string-equal "white" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
223 (downcase (cdr (assq 'foreground-color params)))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
224 (string-equal "black" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
225 (downcase (cdr (assq 'background-color params))))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
226 'dark) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
227 (t 'light))))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
228 (if (null font-lock-face-attributes) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
229 (setq font-lock-face-attributes |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
230 (let ((light-bg (eq font-lock-background-mode 'light))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
231 (cond ((memq font-lock-display-type '(mono monochrome)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
232 ;; Emacs 19.25's font-lock defaults: |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
233 ;;'((font-lock-comment-face nil nil nil t nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
234 ;; (font-lock-string-face nil nil nil nil t) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
235 ;; (font-lock-keyword-face nil nil t nil nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
236 ;; (font-lock-function-name-face nil nil t t nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
237 ;; (font-lock-type-face nil nil nil t nil)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
238 (list '(font-lock-comment-face nil nil t t nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
239 '(font-lock-string-face nil nil nil t nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
240 '(font-lock-keyword-face nil nil t nil nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
241 (list |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
242 'font-lock-function-name-face |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
243 (cdr (assq 'background-color (frame-parameters))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
244 (cdr (assq 'foreground-color (frame-parameters))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
245 t nil nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
246 '(font-lock-variable-name-face nil nil t t nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
247 '(font-lock-type-face nil nil t nil t) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
248 '(font-lock-reference-face nil nil t nil t))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
249 ((memq font-lock-display-type '(grayscale greyscale |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
250 grayshade greyshade)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
251 (list |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
252 (list 'font-lock-comment-face |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
253 (if light-bg "DimGray" "Gray80") nil t t nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
254 (list 'font-lock-string-face |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
255 (if light-bg "Gray50" "LightGray") nil nil t nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
256 (list 'font-lock-keyword-face |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
257 (if light-bg "DimGray" "Gray90") nil t nil nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
258 (list 'font-lock-function-name-face |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
259 (cdr (assq 'background-color (frame-parameters))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
260 (cdr (assq 'foreground-color (frame-parameters))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
261 t nil nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
262 (list 'font-lock-variable-name-face |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
263 (if light-bg "DimGray" "Gray90") nil t t nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
264 (list 'font-lock-type-face |
10099
71e0c3ece2fe
Added defaults for grayscale font-lock-reference-face.
Simon Marshall <simon@gnu.org>
parents:
9909
diff
changeset
|
265 (if light-bg "DimGray" "Gray80") nil t nil t) |
71e0c3ece2fe
Added defaults for grayscale font-lock-reference-face.
Simon Marshall <simon@gnu.org>
parents:
9909
diff
changeset
|
266 (list 'font-lock-reference-face |
71e0c3ece2fe
Added defaults for grayscale font-lock-reference-face.
Simon Marshall <simon@gnu.org>
parents:
9909
diff
changeset
|
267 (if light-bg "Gray50" "LightGray") nil t nil t))) |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
268 (light-bg ; light colour background |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
269 '((font-lock-comment-face "Firebrick") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
270 (font-lock-string-face "RosyBrown") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
271 (font-lock-keyword-face "Purple") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
272 (font-lock-function-name-face "Blue") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
273 (font-lock-variable-name-face "DarkGoldenrod") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
274 (font-lock-type-face "DarkOliveGreen") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
275 (font-lock-reference-face "CadetBlue"))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
276 (t ; dark colour background |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
277 '((font-lock-comment-face "OrangeRed") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
278 (font-lock-string-face "LightSalmon") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
279 (font-lock-keyword-face "LightSteelBlue") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
280 (font-lock-function-name-face "LightSkyBlue") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
281 (font-lock-variable-name-face "LightGoldenrod") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
282 (font-lock-type-face "PaleGreen") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
283 (font-lock-reference-face "Aquamarine"))))))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
284 (mapcar 'font-lock-make-face font-lock-face-attributes)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
285 |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
286 (defun font-lock-make-face (face-attributes) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
287 "Make a face from FACE-ATTRIBUTES. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
288 FACE-ATTRIBUTES should be like an element `font-lock-face-attributes', so that |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
289 the face name is the first item in the list. A variable with the same name as |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
290 the face is also set; its value is the face name." |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
291 (let* ((face (nth 0 face-attributes)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
292 (face-name (symbol-name face)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
293 (set-p (function (lambda (face-name resource) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
294 (x-get-resource (concat face-name ".attribute" resource) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
295 (concat "Face.Attribute" resource))))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
296 (on-p (function (lambda (face-name resource) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
297 (let ((set (funcall set-p face-name resource))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
298 (and set (member (downcase set) '("on" "true")))))))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
299 (make-face face) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
300 ;; Set attributes not set from X resources (and therefore `make-face'). |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
301 (or (funcall set-p face-name "Foreground") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
302 (condition-case nil |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
303 (set-face-foreground face (nth 1 face-attributes)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
304 (error nil))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
305 (or (funcall set-p face-name "Background") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
306 (condition-case nil |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
307 (set-face-background face (nth 2 face-attributes)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
308 (error nil))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
309 (if (funcall set-p face-name "Bold") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
310 (and (funcall on-p face-name "Bold") (make-face-bold face nil t)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
311 (and (nth 3 face-attributes) (make-face-bold face nil t))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
312 (if (funcall set-p face-name "Italic") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
313 (and (funcall on-p face-name "Italic") (make-face-italic face nil t)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
314 (and (nth 4 face-attributes) (make-face-italic face nil t))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
315 (or (funcall set-p face-name "Underline") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
316 (set-face-underline-p face (nth 5 face-attributes))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
317 (set face face))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
318 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
319 ;; Fontification. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
320 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
321 ;; These variables record, for each buffer, the parse state at a particular |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
322 ;; position, always the start of a line. Used to make font-lock-fontify-region |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
323 ;; faster. |
4053 | 324 (defvar font-lock-cache-position nil) |
325 (defvar font-lock-cache-state nil) | |
326 (make-variable-buffer-local 'font-lock-cache-position) | |
327 (make-variable-buffer-local 'font-lock-cache-state) | |
328 | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
329 (defun font-lock-fontify-region (start end &optional loudly) |
4053 | 330 "Put proper face on each string and comment between START and END." |
331 (save-excursion | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
332 (save-restriction |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
333 (widen) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
334 (goto-char start) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
335 (beginning-of-line) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
336 (if loudly (message "Fontifying %s... (syntactically...)" (buffer-name))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
337 (let ((buffer-read-only nil) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
338 (modified (buffer-modified-p)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
339 (cstart (if comment-start-skip |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
340 (concat "\\s\"\\|" comment-start-skip) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
341 "\\s\"")) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
342 (cend (if comment-end |
9597
d352bebc9103
(font-lock-after-change-function): If inside a comment,
Richard M. Stallman <rms@gnu.org>
parents:
9513
diff
changeset
|
343 (concat "\\s>\\|" |
d352bebc9103
(font-lock-after-change-function): If inside a comment,
Richard M. Stallman <rms@gnu.org>
parents:
9513
diff
changeset
|
344 (regexp-quote |
d352bebc9103
(font-lock-after-change-function): If inside a comment,
Richard M. Stallman <rms@gnu.org>
parents:
9513
diff
changeset
|
345 ;; Discard leading spaces from comment-end. |
d352bebc9103
(font-lock-after-change-function): If inside a comment,
Richard M. Stallman <rms@gnu.org>
parents:
9513
diff
changeset
|
346 ;; In C mode, it is " */" |
d352bebc9103
(font-lock-after-change-function): If inside a comment,
Richard M. Stallman <rms@gnu.org>
parents:
9513
diff
changeset
|
347 ;; and we don't want to fail to notice a */ |
d352bebc9103
(font-lock-after-change-function): If inside a comment,
Richard M. Stallman <rms@gnu.org>
parents:
9513
diff
changeset
|
348 ;; just because there's no space there. |
9814
5ae33de679f6
Wrap font-lock-fontify-region's string-match with save-match-data.
Simon Marshall <simon@gnu.org>
parents:
9597
diff
changeset
|
349 (save-match-data |
5ae33de679f6
Wrap font-lock-fontify-region's string-match with save-match-data.
Simon Marshall <simon@gnu.org>
parents:
9597
diff
changeset
|
350 (if (string-match "^ +" comment-end) |
5ae33de679f6
Wrap font-lock-fontify-region's string-match with save-match-data.
Simon Marshall <simon@gnu.org>
parents:
9597
diff
changeset
|
351 (substring comment-end (match-end 0)) |
5ae33de679f6
Wrap font-lock-fontify-region's string-match with save-match-data.
Simon Marshall <simon@gnu.org>
parents:
9597
diff
changeset
|
352 comment-end)))) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
353 "\\s>")) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
354 (startline (point)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
355 state prev prevstate) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
356 ;; Find the state at the line-beginning before START. |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
357 (if (eq startline font-lock-cache-position) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
358 (setq state font-lock-cache-state) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
359 ;; Find outermost containing sexp. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
360 (beginning-of-defun) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
361 ;; Find the state at STARTLINE. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
362 (while (< (point) startline) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
363 (setq state (parse-partial-sexp (point) startline 0))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
364 (setq font-lock-cache-state state |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
365 font-lock-cache-position (point))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
366 ;; Now find the state precisely at START. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
367 (setq state (parse-partial-sexp (point) start nil nil state)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
368 ;; If the region starts inside a string, show the extent of it. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
369 (if (nth 3 state) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
370 (let ((beg (point))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
371 (while (and (re-search-forward "\\s\"" end 'move) |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
372 (nth 3 (parse-partial-sexp beg (point) nil nil |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
373 state)))) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
374 (put-text-property beg (point) 'face font-lock-string-face) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
375 (setq state (parse-partial-sexp beg (point) nil nil state)))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
376 ;; Likewise for a comment. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
377 (if (or (nth 4 state) (nth 7 state)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
378 (let ((beg (point))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
379 (while (and (re-search-forward cend end 'move) |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
380 (nth 3 (parse-partial-sexp beg (point) nil nil |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
381 state)))) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
382 (put-text-property beg (point) 'face font-lock-comment-face) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
383 (setq state (parse-partial-sexp beg (point) nil nil state)))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
384 ;; Find each interesting place between here and END. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
385 (while (and (< (point) end) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
386 (setq prev (point) prevstate state) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
387 (re-search-forward cstart end t) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
388 (progn |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
389 ;; Clear out the fonts of what we skip over. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
390 (remove-text-properties prev (point) '(face nil)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
391 ;; Verify the state at that place |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
392 ;; so we don't get fooled by \" or \;. |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
393 (setq state (parse-partial-sexp prev (point) nil nil |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
394 state)))) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
395 (let ((here (point))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
396 (if (or (nth 4 state) (nth 7 state)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
397 ;; We found a real comment start. |
4053 | 398 (let ((beg (match-beginning 0))) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
399 (goto-char beg) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
400 (save-restriction |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
401 (narrow-to-region (point-min) end) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
402 (condition-case nil |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
403 (progn |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
404 (forward-comment 1) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
405 ;; forward-comment skips all whitespace, |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
406 ;; so go back to the real end of the comment. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
407 (skip-chars-backward " \t")) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
408 (error (goto-char end)))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
409 (put-text-property beg (point) 'face font-lock-comment-face) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
410 (setq state (parse-partial-sexp here (point) nil nil state))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
411 (if (nth 3 state) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
412 (let ((beg (match-beginning 0))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
413 (while (and (re-search-forward "\\s\"" end 'move) |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
414 (nth 3 (parse-partial-sexp here (point) nil nil |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
415 state)))) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
416 (put-text-property beg (point) 'face font-lock-string-face) |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
417 (setq state (parse-partial-sexp here (point) nil nil |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
418 state)))))) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
419 ;; Make sure PREV is non-nil after the loop |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
420 ;; only if it was set on the very last iteration. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
421 (setq prev nil)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
422 (and prev |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
423 (remove-text-properties prev end '(face nil))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
424 (and (buffer-modified-p) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
425 (not modified) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
426 (set-buffer-modified-p nil)))))) |
4053 | 427 |
428 ;; This code used to be used to show a string on reaching the end of it. | |
429 ;; It is probably not needed due to later changes to handle strings | |
430 ;; starting before the region in question. | |
431 ;; (if (and (null (nth 3 state)) | |
432 ;; (eq (char-syntax (preceding-char)) ?\") | |
433 ;; (save-excursion | |
434 ;; (nth 3 (parse-partial-sexp prev (1- (point)) | |
435 ;; nil nil prevstate)))) | |
436 ;; ;; We found the end of a string. | |
437 ;; (save-excursion | |
438 ;; (setq foo2 (point)) | |
439 ;; (let ((ept (point))) | |
440 ;; (forward-sexp -1) | |
441 ;; ;; Highlight the string when we see the end. | |
442 ;; ;; Doing it at the start leads to trouble: | |
443 ;; ;; either it fails to handle multiline strings | |
444 ;; ;; or it can run away when an unmatched " is inserted. | |
445 ;; (put-text-property (point) ept 'face | |
446 ;; (if (= (car state) 1) | |
447 ;; font-lock-doc-string-face | |
448 ;; font-lock-string-face))))) | |
449 | |
450 (defun font-lock-unfontify-region (beg end) | |
4219
24f3ca095be9
(perl-font-lock-keywords): Add a `(... . 1)' to the
Richard M. Stallman <rms@gnu.org>
parents:
4054
diff
changeset
|
451 (let ((modified (buffer-modified-p)) |
24f3ca095be9
(perl-font-lock-keywords): Add a `(... . 1)' to the
Richard M. Stallman <rms@gnu.org>
parents:
4054
diff
changeset
|
452 (buffer-read-only nil)) |
24f3ca095be9
(perl-font-lock-keywords): Add a `(... . 1)' to the
Richard M. Stallman <rms@gnu.org>
parents:
4054
diff
changeset
|
453 (remove-text-properties beg end '(face nil)) |
24f3ca095be9
(perl-font-lock-keywords): Add a `(... . 1)' to the
Richard M. Stallman <rms@gnu.org>
parents:
4054
diff
changeset
|
454 (set-buffer-modified-p modified))) |
4053 | 455 |
456 ;; Called when any modification is made to buffer text. | |
457 (defun font-lock-after-change-function (beg end old-len) | |
458 (save-excursion | |
459 (save-match-data | |
460 ;; Discard the cache info if text before it has changed. | |
461 (and font-lock-cache-position | |
462 (> font-lock-cache-position beg) | |
463 (setq font-lock-cache-position nil)) | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
464 ;; Rescan between start of line from `beg' and start of line after `end'. |
4053 | 465 (goto-char beg) |
466 (beginning-of-line) | |
467 (setq beg (point)) | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
468 (goto-char end) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
469 (forward-line 1) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
470 (setq end (point)) |
4239
e8cf7a7d0102
(font-lock-after-change-function):
Richard M. Stallman <rms@gnu.org>
parents:
4219
diff
changeset
|
471 ;; First scan for strings and comments. |
e8cf7a7d0102
(font-lock-after-change-function):
Richard M. Stallman <rms@gnu.org>
parents:
4219
diff
changeset
|
472 ;; Must scan from line start in case of |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
473 ;; inserting space into `intfoo () {}', and after widened. |
7491
621c162a80db
(font-lock-no-comments): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7298
diff
changeset
|
474 (if font-lock-no-comments |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
475 (remove-text-properties beg end '(face nil)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
476 (font-lock-fontify-region beg end)) |
9597
d352bebc9103
(font-lock-after-change-function): If inside a comment,
Richard M. Stallman <rms@gnu.org>
parents:
9513
diff
changeset
|
477 ;; Now scan for keywords, but not if we are inside a comment now. |
d352bebc9103
(font-lock-after-change-function): If inside a comment,
Richard M. Stallman <rms@gnu.org>
parents:
9513
diff
changeset
|
478 (or (and (not font-lock-no-comments) |
d352bebc9103
(font-lock-after-change-function): If inside a comment,
Richard M. Stallman <rms@gnu.org>
parents:
9513
diff
changeset
|
479 (let ((state (parse-partial-sexp beg end nil nil |
d352bebc9103
(font-lock-after-change-function): If inside a comment,
Richard M. Stallman <rms@gnu.org>
parents:
9513
diff
changeset
|
480 font-lock-cache-state))) |
d352bebc9103
(font-lock-after-change-function): If inside a comment,
Richard M. Stallman <rms@gnu.org>
parents:
9513
diff
changeset
|
481 (or (nth 4 state) (nth 7 state)))) |
d352bebc9103
(font-lock-after-change-function): If inside a comment,
Richard M. Stallman <rms@gnu.org>
parents:
9513
diff
changeset
|
482 (font-lock-hack-keywords beg end))))) |
4053 | 483 |
484 ;;; Fontifying arbitrary patterns | |
485 | |
486 (defun font-lock-hack-keywords (start end &optional loudly) | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
487 "Fontify according to `font-lock-keywords' between START and END." |
4053 | 488 (let ((case-fold-search font-lock-keywords-case-fold-search) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
489 (keywords font-lock-keywords) |
4053 | 490 (count 0) |
4219
24f3ca095be9
(perl-font-lock-keywords): Add a `(... . 1)' to the
Richard M. Stallman <rms@gnu.org>
parents:
4054
diff
changeset
|
491 (buffer-read-only nil) |
24f3ca095be9
(perl-font-lock-keywords): Add a `(... . 1)' to the
Richard M. Stallman <rms@gnu.org>
parents:
4054
diff
changeset
|
492 (modified (buffer-modified-p)) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
493 (old-syntax (syntax-table)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
494 (bufname (buffer-name))) |
8457
c0492d7043b2
(font-lock-syntax-table): New syntax table.
Richard M. Stallman <rms@gnu.org>
parents:
7915
diff
changeset
|
495 (unwind-protect |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
496 (let (keyword regexp match highlights hs h s e) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
497 (if loudly (message "Fontifying %s... (regexps...)" bufname)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
498 (if font-lock-syntax-table (set-syntax-table font-lock-syntax-table)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
499 (while keywords |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
500 (setq keyword (car keywords) keywords (cdr keywords) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
501 regexp (if (stringp keyword) keyword (car keyword)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
502 highlights (cond ((stringp keyword) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
503 '((0 font-lock-keyword-face))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
504 ((numberp (cdr keyword)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
505 (list (list (cdr keyword) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
506 'font-lock-keyword-face))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
507 ((symbolp (cdr keyword)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
508 (list (list 0 (cdr keyword)))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
509 ((nlistp (nth 1 keyword)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
510 (list (cdr keyword))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
511 (t |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
512 (cdr keyword)))) |
8457
c0492d7043b2
(font-lock-syntax-table): New syntax table.
Richard M. Stallman <rms@gnu.org>
parents:
7915
diff
changeset
|
513 (goto-char start) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
514 (while (re-search-forward regexp end t) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
515 (setq hs highlights) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
516 (while hs |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
517 (setq h (car hs) match (nth 0 h) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
518 s (match-beginning match) e (match-end match) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
519 hs (cdr hs)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
520 (cond ((not s) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
521 ;; No match but we might not signal an error |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
522 (or (nth 3 h) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
523 (error "No subexpression %d in expression %d" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
524 match (1+ count)))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
525 ((and (not (nth 2 h)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
526 (text-property-not-all s e 'face nil)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
527 ;; Can't override and already fontified |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
528 nil) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
529 ((not (eq (nth 2 h) 'keep)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
530 ;; Can override but need not keep existing fontification |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
531 (put-text-property s e 'face (eval (nth 1 h)))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
532 (t |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
533 ;; Can override but must keep existing fontification |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
534 ;; (Does anyone use this? sm.) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
535 (let ((p (text-property-any s e 'face nil)) n |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
536 (face (eval (nth 1 h)))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
537 (while p |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
538 (setq n (next-single-property-change p 'face nil e)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
539 (put-text-property p n 'face face) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
540 (setq p (text-property-any n e 'face nil)))))))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
541 ;; the above form was: |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
542 ; (save-excursion |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
543 ; (goto-char s) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
544 ; (while (< (point) e) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
545 ; (let ((next (next-single-property-change (point) 'face |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
546 ; nil e))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
547 ; (if (or (null next) (> next e)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
548 ; (setq next e)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
549 ; (if (not (get-text-property (point) 'face)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
550 ; (put-text-property (point) next 'face face)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
551 ; (goto-char next)))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
552 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
553 (if loudly (message "Fontifying %s... (regexps...%s)" bufname |
8457
c0492d7043b2
(font-lock-syntax-table): New syntax table.
Richard M. Stallman <rms@gnu.org>
parents:
7915
diff
changeset
|
554 (make-string (setq count (1+ count)) ?.))))) |
c0492d7043b2
(font-lock-syntax-table): New syntax table.
Richard M. Stallman <rms@gnu.org>
parents:
7915
diff
changeset
|
555 (set-syntax-table old-syntax)) |
7915
970912d4f413
Don't alter the underline face.
Richard M. Stallman <rms@gnu.org>
parents:
7847
diff
changeset
|
556 (and (buffer-modified-p) |
970912d4f413
Don't alter the underline face.
Richard M. Stallman <rms@gnu.org>
parents:
7847
diff
changeset
|
557 (not modified) |
970912d4f413
Don't alter the underline face.
Richard M. Stallman <rms@gnu.org>
parents:
7847
diff
changeset
|
558 (set-buffer-modified-p nil)))) |
4053 | 559 |
560 ;; The user level functions | |
561 | |
562 (defvar font-lock-mode nil) ; for modeline | |
563 | |
564 (defvar font-lock-fontified nil) ; whether we have hacked this buffer | |
565 (put 'font-lock-fontified 'permanent-local t) | |
566 | |
567 ;;;###autoload | |
568 (defun font-lock-mode (&optional arg) | |
569 "Toggle Font Lock mode. | |
570 With arg, turn Font Lock mode on if and only if arg is positive. | |
571 | |
572 When Font Lock mode is enabled, text is fontified as you type it: | |
573 | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
574 - Comments are displayed in `font-lock-comment-face'; |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
575 - Strings are displayed in `font-lock-string-face'; |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
576 - Certain other expressions are displayed in other faces according to the |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
577 value of the variable `font-lock-keywords'. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
578 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
579 You can enable Font Lock mode in any major mode automatically by turning on in |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
580 the major mode's hook. For example, put in your ~/.emacs: |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
581 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
582 (add-hook 'c-mode-hook 'turn-on-font-lock) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
583 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
584 Or for any visited file with the following in your ~/.emacs: |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
585 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
586 (add-hook 'find-file-hooks 'turn-on-font-lock) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
587 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
588 The default Font Lock mode faces and their attributes are defined in the |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
589 variable `font-lock-face-attributes', and Font Lock mode default settings in |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
590 the variable `font-lock-defaults-alist'. |
4053 | 591 |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
592 When you turn Font Lock mode on/off the buffer is fontified/defontified, though |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
593 fontification occurs only if the buffer is less than `font-lock-maximum-size'. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
594 To fontify a buffer without turning on Font Lock mode, and regardless of buffer |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
595 size, you can use \\[font-lock-fontify-buffer]." |
4053 | 596 (interactive "P") |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
597 (let ((on-p (if arg (> (prefix-numeric-value arg) 0) (not font-lock-mode)))) |
4053 | 598 (if (equal (buffer-name) " *Compiler Input*") ; hack for bytecomp... |
599 (setq on-p nil)) | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
600 (if (not on-p) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
601 (remove-hook 'after-change-functions 'font-lock-after-change-function) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
602 (make-local-variable 'after-change-functions) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
603 (add-hook 'after-change-functions 'font-lock-after-change-function)) |
4053 | 604 (set (make-local-variable 'font-lock-mode) on-p) |
605 (cond (on-p | |
606 (font-lock-set-defaults) | |
5717
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
607 (make-local-variable 'before-revert-hook) |
5625
24f92f49a07f
(font-lock-mode): Set after-revert-hook
Richard M. Stallman <rms@gnu.org>
parents:
5360
diff
changeset
|
608 (make-local-variable 'after-revert-hook) |
5717
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
609 ;; If buffer is reverted, must clean up the state. |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
610 (add-hook 'before-revert-hook 'font-lock-revert-setup) |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
611 (add-hook 'after-revert-hook 'font-lock-revert-cleanup) |
4053 | 612 (run-hooks 'font-lock-mode-hook) |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
613 (cond (font-lock-fontified |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
614 nil) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
615 ((or (null font-lock-maximum-size) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
616 (> font-lock-maximum-size (buffer-size))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
617 (font-lock-fontify-buffer)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
618 (font-lock-verbose |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
619 (message "Fontifying %s... buffer too big." (buffer-name))))) |
4053 | 620 (font-lock-fontified |
621 (setq font-lock-fontified nil) | |
5717
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
622 (remove-hook 'before-revert-hook 'font-lock-revert-setup) |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
623 (remove-hook 'after-revert-hook 'font-lock-revert-cleanup) |
4053 | 624 (font-lock-unfontify-region (point-min) (point-max)))) |
625 (force-mode-line-update))) | |
626 | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
627 ;;;###autoload |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
628 (defun turn-on-font-lock () |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
629 "Unconditionally turn on Font Lock mode." |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
630 (font-lock-mode 1)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
631 |
5717
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
632 ;; If the buffer is about to be reverted, it won't be fontified. |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
633 (defun font-lock-revert-setup () |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
634 (setq font-lock-fontified nil)) |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
635 |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
636 ;; If the buffer has just been reverted, we might not even be in font-lock |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
637 ;; mode anymore, and if we are, the buffer may or may not have already been |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
638 ;; refontified. Refontify here if it looks like we need to. |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
639 (defun font-lock-revert-cleanup () |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
640 (and font-lock-mode |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
641 (not font-lock-fontified) |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
642 (font-lock-mode 1))) |
24e1180b507d
(font-lock-mode): Use the new hooks to get proper behavior on a revert.
Karl Heuer <kwzh@gnu.org>
parents:
5625
diff
changeset
|
643 |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
644 ;;;###autoload |
4053 | 645 (defun font-lock-fontify-buffer () |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
646 "Fontify the current buffer the way `font-lock-mode' would." |
4053 | 647 (interactive) |
648 (let ((was-on font-lock-mode) | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
649 (verbose (or font-lock-verbose (interactive-p))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
650 (modified (buffer-modified-p))) |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
651 (set (make-local-variable 'font-lock-fontified) nil) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
652 (if verbose (message "Fontifying %s..." (buffer-name))) |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
653 ;; Turn it on to run hooks and get the right `font-lock-keywords' etc. |
4897
c3db6fd69f1f
(font-lock-fontify-buffer): Don't turn
Richard M. Stallman <rms@gnu.org>
parents:
4727
diff
changeset
|
654 (or was-on (font-lock-set-defaults)) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
655 (condition-case nil |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
656 (save-excursion |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
657 (font-lock-unfontify-region (point-min) (point-max)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
658 (if (not font-lock-no-comments) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
659 (font-lock-fontify-region (point-min) (point-max) verbose)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
660 (font-lock-hack-keywords (point-min) (point-max) verbose) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
661 (setq font-lock-fontified t)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
662 ;; We don't restore the old fontification, so it's best to unfontify. |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
663 (quit (font-lock-unfontify-region (point-min) (point-max)))) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
664 (if verbose (message "Fontifying %s... %s." (buffer-name) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
665 (if font-lock-fontified "done" "aborted"))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
666 (and (buffer-modified-p) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
667 (not modified) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
668 (set-buffer-modified-p nil)))) |
4053 | 669 |
670 | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
671 ;;; Various information shared by several modes. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
672 ;;; Information specific to a single mode should go in its load library. |
4053 | 673 |
674 (defconst lisp-font-lock-keywords-1 | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
675 (list |
4053 | 676 ;; highlight defining forms. This doesn't work too nicely for |
677 ;; (defun (setf foo) ...) but it does work for (defvar foo) which | |
678 ;; is more important. | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
679 (list (concat "^(\\(def\\(const\\|ine-key\\(\\|-after\\)\\|var\\)\\)\\>" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
680 "\\s *\\([^ \t\n\)]+\\)?") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
681 '(1 font-lock-keyword-face) '(4 font-lock-variable-name-face nil t)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
682 (list (concat "^(\\(def\\(a\\(dvice\\|lias\\)\\|macro\\|subst\\|un\\)\\)\\>" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
683 "\\s *\\([^ \t\n\)]+\\)?") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
684 '(1 font-lock-keyword-face) '(4 font-lock-function-name-face nil t)) |
4053 | 685 ;; |
686 ;; this is highlights things like (def* (setf foo) (bar baz)), but may | |
687 ;; be slower (I haven't really thought about it) | |
688 ; ("^(def[-a-z]+\\s +\\(\\s(\\S)*\\s)\\|\\S(\\S *\\)" | |
689 ; 1 font-lock-function-name-face) | |
690 ) | |
691 "For consideration as a value of `lisp-font-lock-keywords'. | |
692 This does fairly subdued highlighting.") | |
693 | |
694 (defconst lisp-font-lock-keywords-2 | |
695 (append | |
696 lisp-font-lock-keywords-1 | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
697 (list |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
698 ;; |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
699 ;; Control structures. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
700 ;; ELisp: |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
701 ; ("cond" "if" "while" "let\\*?" "prog[nv12*]?" "catch" "throw" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
702 ; "save-restriction" "save-excursion" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
703 ; "save-window-excursion" "save-match-data" "unwind-protect" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
704 ; "condition-case" "track-mouse") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
705 (cons |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
706 (concat "(\\(" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
707 "c\\(atch\\|ond\\(\\|ition-case\\)\\)\\|if\\|let\\*?\\|prog[nv12*]?\\|" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
708 "save-\\(excursion\\|match-data\\|restriction\\|window-excursion\\)\\|" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
709 "t\\(hrow\\|rack-mouse\\)\\|unwind-protect\\|while" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
710 "\\)[ \t\n]") 1) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
711 ;; CLisp: |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
712 ; ("when" "unless" "do" "flet" "labels" "return" "return-from") |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
713 '("(\\(do\\|flet\\|labels\\|return\\(\\|-from\\)\\|unless\\|when\\)[ \t\n]" |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
714 . 1) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
715 ;; |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
716 ;; Fontify CLisp keywords. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
717 '("\\s :\\([-a-zA-Z0-9]+\\)\\>" . 1) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
718 ;; |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
719 ;; Function names in emacs-lisp docstrings (in the syntax that |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
720 ;; substitute-command-keys understands.) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
721 '("\\\\\\\\\\[\\([^]\\\n]+\\)]" 1 font-lock-reference-face t) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
722 ;; |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
723 ;; Words inside `' which tend to be function names |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
724 (let ((word-char "[-+a-zA-Z0-9_.*]")) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
725 (list (concat "`\\(" word-char word-char "+\\)'") |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
726 1 'font-lock-reference-face t)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
727 ;; |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
728 ;; & keywords as types |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
729 '("\\&\\(optional\\|rest\\)\\>" . font-lock-type-face) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
730 )) |
4053 | 731 "For consideration as a value of `lisp-font-lock-keywords'. |
732 This does a lot more highlighting.") | |
733 | |
734 ;; default to the gaudier variety? | |
735 ;(defvar lisp-font-lock-keywords lisp-font-lock-keywords-2 | |
736 ; "Additional expressions to highlight in Lisp modes.") | |
737 (defvar lisp-font-lock-keywords lisp-font-lock-keywords-1 | |
738 "Additional expressions to highlight in Lisp modes.") | |
739 | |
740 | |
741 (defconst c-font-lock-keywords-1 nil | |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
742 "For consideration as a value of `c-font-lock-keywords'. |
4053 | 743 This does fairly subdued highlighting.") |
744 | |
745 (defconst c-font-lock-keywords-2 nil | |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
746 "For consideration as a value of `c-font-lock-keywords'. |
4053 | 747 This does a lot more highlighting.") |
748 | |
6219
d960f0463014
(c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6093
diff
changeset
|
749 (defconst c++-font-lock-keywords-1 nil |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
750 "For consideration as a value of `c++-font-lock-keywords'. |
6219
d960f0463014
(c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6093
diff
changeset
|
751 This does fairly subdued highlighting.") |
d960f0463014
(c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6093
diff
changeset
|
752 |
d960f0463014
(c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6093
diff
changeset
|
753 (defconst c++-font-lock-keywords-2 nil |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
754 "For consideration as a value of `c++-font-lock-keywords'. |
6219
d960f0463014
(c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6093
diff
changeset
|
755 This does a lot more highlighting.") |
d960f0463014
(c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6093
diff
changeset
|
756 |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
757 (let ((c-keywords |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
758 ; ("break" "continue" "do" "else" "for" "if" "return" "switch" "while") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
759 "break\\|continue\\|do\\|else\\|for\\|if\\|return\\|switch\\|while") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
760 (c-type-types |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
761 ; ("auto" "extern" "register" "static" "typedef" "struct" "union" "enum" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
762 ; "signed" "unsigned" "short" "long" "int" "char" "float" "double" |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
763 ; "void" "volatile" "const") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
764 (concat "auto\\|c\\(har\\|onst\\)\\|double\\|e\\(num\\|xtern\\)\\|" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
765 "float\\|int\\|long\\|register\\|" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
766 "s\\(hort\\|igned\\|t\\(atic\\|ruct\\)\\)\\|typedef\\|" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
767 "un\\(ion\\|signed\\)\\|vo\\(id\\|latile\\)")) ; 6 ()s deep. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
768 (c++-keywords |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
769 ; ("break" "continue" "do" "else" "for" "if" "return" "switch" "while" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
770 ; "asm" "catch" "delete" "new" "operator" "sizeof" "this" "throw" "try" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
771 ; "protected" "private" "public") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
772 (concat "asm\\|break\\|c\\(atch\\|ontinue\\)\\|d\\(elete\\|o\\)\\|" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
773 "else\\|for\\|if\\|new\\|operator\\|" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
774 "p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|return\\|" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
775 "s\\(izeof\\|witch\\)\\|t\\(h\\(is\\|row\\)\\|ry\\)\\|while")) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
776 (c++-type-types |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
777 ; ("auto" "extern" "register" "static" "typedef" "struct" "union" "enum" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
778 ; "signed" "unsigned" "short" "long" "int" "char" "float" "double" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
779 ; "void" "volatile" "const" "class" "inline" "friend" "bool" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
780 ; "virtual" "complex" "template") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
781 (concat "auto\\|bool\\|c\\(har\\|lass\\|o\\(mplex\\|nst\\)\\)\\|" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
782 "double\\|e\\(num\\|xtern\\)\\|f\\(loat\\|riend\\)\\|" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
783 "in\\(line\\|t\\)\\|long\\|register\\|" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
784 "s\\(hort\\|igned\\|t\\(atic\\|ruct\\)\\)\\|" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
785 "t\\(emplate\\|ypedef\\)\\|un\\(ion\\|signed\\)\\|" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
786 "v\\(irtual\\|o\\(id\\|latile\\)\\)")) ; 11 ()s deep. |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
787 (ctoken "[a-zA-Z0-9_:~]+")) |
6093
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
788 (setq c-font-lock-keywords-1 |
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
789 (list |
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
790 ;; |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
791 ;; Fontify filenames in #include <...> preprocessor directives. |
6093
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
792 '("^#[ \t]*include[ \t]+\\(<[^>\"\n]+>\\)" 1 font-lock-string-face) |
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
793 ;; |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
794 ;; Fontify function macro names. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
795 '("^#[ \t]*define[ \t]+\\(\\(\\sw+\\)(\\)" 2 font-lock-function-name-face) |
6093
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
796 ;; |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
797 ;; Fontify otherwise as symbol names, and the preprocessor directive names. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
798 '("^\\(#[ \t]*[a-z]+\\)\\>[ \t]*\\(\\sw+\\)?" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
799 (1 font-lock-reference-face) (2 font-lock-variable-name-face nil t)) |
6093
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
800 ;; |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
801 ;; Fontify function name definitions (without type on line). |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
802 (list (concat "^\\(" ctoken "\\)[ \t]*(") 1 'font-lock-function-name-face) |
6093
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
803 )) |
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
804 |
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
805 (setq c-font-lock-keywords-2 |
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
806 (append c-font-lock-keywords-1 |
4053 | 807 (list |
808 ;; | |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
809 ;; Fontify all storage classes and type specifiers (before declarations). |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
810 (cons (concat "\\<\\(" c-type-types "\\)\\>") 'font-lock-type-face) |
4053 | 811 ;; |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
812 ;; Fontify variable/structure name declarations and definitions, or |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
813 ;; function name declarations (plus definitions with type on same line). |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
814 (list (concat "\\<\\(" c-type-types "\\)[ \t*]+" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
815 "\\(" ctoken "[ \t*]+\\)*" |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
816 "\\(" ctoken "\\)[ \t]*\\((\\)?") |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
817 9 |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
818 '(if (match-beginning 10) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
819 font-lock-function-name-face |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
820 font-lock-variable-name-face)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
821 ;; |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
822 ;; Fontify function/variable name declarations at the start of the line. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
823 ;; (Not everyone follows the GNU convention of function name at the start.) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
824 (list (concat "^" ctoken "[ \t*]+" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
825 "\\(" ctoken "[ \t*]+\\)*" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
826 "\\(" ctoken "\\)[ \t]*\\((\\)?") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
827 2 |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
828 '(if (match-beginning 3) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
829 font-lock-function-name-face |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
830 font-lock-variable-name-face)) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
831 ;; |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
832 ;; Fontify variable names declared with structures, or typedef names. |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
833 '("}[ \t*]*\\(\\sw+\\)[ \t]*[;,[]" 1 font-lock-variable-name-face) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
834 ;; |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
835 ;; Fontify all builtin keywords (except case, default and goto; see below). |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
836 (concat "\\<\\(" c-keywords "\\)\\>") |
6093
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
837 ;; |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
838 ;; Fontify case/goto keywords and targets, and goto tags (incl "default:"). |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
839 '("\\<\\(case\\|goto\\)\\>[ \t]*\\([^ \t\n:;]+\\)?" |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
840 (1 font-lock-keyword-face) (2 font-lock-reference-face nil t)) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
841 '("^[ \t]*\\(\\sw+\\)[ \t]*:" 1 font-lock-reference-face) |
6093
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
842 ))) |
6219
d960f0463014
(c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6093
diff
changeset
|
843 |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
844 (setq c++-font-lock-keywords-1 c-font-lock-keywords-1) |
6219
d960f0463014
(c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6093
diff
changeset
|
845 (setq c++-font-lock-keywords-2 |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
846 (append c++-font-lock-keywords-1 |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
847 (list |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
848 ;; We don't just add to the C keywords for subtle differences and speed. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
849 ;; See the above comments for `c-font-lock-keywords-2'. |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
850 (cons (concat "\\<\\(" c++-type-types "\\)\\>") 'font-lock-type-face) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
851 (list (concat "\\<\\(" c++-type-types "\\)[ \t*&]+" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
852 "\\(" ctoken "[ \t*&]+\\)*" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
853 "\\(" ctoken "\\)[ \t]*\\((\\)?") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
854 14 |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
855 '(if (match-beginning 15) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
856 font-lock-function-name-face |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
857 font-lock-variable-name-face)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
858 (list (concat "^" ctoken "[ \t*]+" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
859 "\\(" ctoken "[ \t*]+\\)*" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
860 "\\(" ctoken "\\)[ \t]*\\((\\)?") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
861 2 |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
862 '(if (match-beginning 3) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
863 font-lock-function-name-face |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
864 font-lock-variable-name-face)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
865 '("}[ \t*]*\\(\\sw+\\)[ \t]*[;,[]" 1 font-lock-variable-name-face) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
866 (concat "\\<\\(" c++-keywords "\\)\\>") |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
867 '("\\<\\(case\\|goto\\)\\>[ \t]*\\([^ \t\n:;]+\\)?" |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
868 (1 font-lock-keyword-face) (2 font-lock-reference-face nil t)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
869 '("^[ \t]*\\(\\sw+\\)[ \t]*:[^:]" 1 font-lock-reference-face)))) |
6093
00cee8387866
Clean up c-font-lock-keywords; now slightly more consistent about highlighting
Karl Heuer <kwzh@gnu.org>
parents:
5878
diff
changeset
|
870 ) |
4053 | 871 |
872 ; default to the gaudier variety? | |
873 (defvar c-font-lock-keywords c-font-lock-keywords-1 | |
874 "Additional expressions to highlight in C mode.") | |
875 | |
6219
d960f0463014
(c++-font-lock-keywords-1, c++-font-lock-keywords-2): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6093
diff
changeset
|
876 (defvar c++-font-lock-keywords c++-font-lock-keywords-1 |
4053 | 877 "Additional expressions to highlight in C++ mode.") |
878 | |
879 (defvar tex-font-lock-keywords | |
880 (list | |
7847
43045a12cb34
(tex-font-lock-keywords): Make the pattern for
Richard M. Stallman <rms@gnu.org>
parents:
7751
diff
changeset
|
881 '("\\(\\\\\\([a-zA-Z@]+\\|.\\)\\)" 1 font-lock-keyword-face t) |
4053 | 882 '("{\\\\em\\([^}]+\\)}" 1 font-lock-comment-face t) |
883 '("{\\\\bf\\([^}]+\\)}" 1 font-lock-keyword-face t) | |
884 '("^[ \t\n]*\\\\def[\\\\@]\\(\\w+\\)" 1 font-lock-function-name-face t) | |
885 '("\\\\\\(begin\\|end\\){\\([a-zA-Z0-9\\*]+\\)}" | |
886 2 font-lock-function-name-face t) | |
887 '("[^\\\\]\\$\\([^$]*\\)\\$" 1 font-lock-string-face t) | |
888 ; '("\\$\\([^$]*\\)\\$" 1 font-lock-string-face t) | |
889 ) | |
890 "Additional expressions to highlight in TeX mode.") | |
891 | |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
892 ;; There is no html-mode.el shipped with Emacs; `font-lock-defaults' entry |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
893 ; would be: (html-font-lock-keywords nil t) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
894 ;(defconst html-font-lock-keywords |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
895 ; '(("<!--[^>]*>" 0 font-lock-comment-face t) ; Comment. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
896 ; ("</?\\sw+" . font-lock-type-face) ; Normal tag start. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
897 ; (">" . font-lock-type-face) ; Normal tag end. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
898 ; ("<\\(/?\\(a\\|form\\|img\\|input\\)\\)\\>" ; Special tag name. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
899 ; 1 font-lock-function-name-face t) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
900 ; ("\\<\\(\\sw+\\)[>=]" 1 font-lock-keyword-face)) ; Tag attribute. |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
901 ; "Additional expressions to highlight in HTML mode.") |
5726
781af712e68c
(font-lock-set-defaults): Handle shell mode.
Richard M. Stallman <rms@gnu.org>
parents:
5717
diff
changeset
|
902 |
7491
621c162a80db
(font-lock-no-comments): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7298
diff
changeset
|
903 (defun font-lock-set-defaults () |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
904 "Set fontification defaults appropriately for this 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
|
905 Sets `font-lock-keywords', `font-lock-no-comments', `font-lock-syntax-table' |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
906 and `font-lock-keywords-case-fold-search' using `font-lock-defaults-alist'." |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
907 (or font-lock-keywords ; if not already set. |
9444
e21d4ebc3160
(font-lock-set-defaults): Do nothing if font-lock-keywords already non-nil.
Richard M. Stallman <rms@gnu.org>
parents:
9390
diff
changeset
|
908 (let ((defaults (or font-lock-defaults |
e21d4ebc3160
(font-lock-set-defaults): Do nothing if font-lock-keywords already non-nil.
Richard M. Stallman <rms@gnu.org>
parents:
9390
diff
changeset
|
909 (cdr (assq major-mode font-lock-defaults-alist))))) |
e21d4ebc3160
(font-lock-set-defaults): Do nothing if font-lock-keywords already non-nil.
Richard M. Stallman <rms@gnu.org>
parents:
9390
diff
changeset
|
910 ;; Keywords? |
e21d4ebc3160
(font-lock-set-defaults): Do nothing if font-lock-keywords already non-nil.
Richard M. Stallman <rms@gnu.org>
parents:
9390
diff
changeset
|
911 (setq font-lock-keywords (eval (nth 0 defaults))) |
e21d4ebc3160
(font-lock-set-defaults): Do nothing if font-lock-keywords already non-nil.
Richard M. Stallman <rms@gnu.org>
parents:
9390
diff
changeset
|
912 ;; Syntactic? |
e21d4ebc3160
(font-lock-set-defaults): Do nothing if font-lock-keywords already non-nil.
Richard M. Stallman <rms@gnu.org>
parents:
9390
diff
changeset
|
913 (if (nth 1 defaults) |
e21d4ebc3160
(font-lock-set-defaults): Do nothing if font-lock-keywords already non-nil.
Richard M. Stallman <rms@gnu.org>
parents:
9390
diff
changeset
|
914 (set (make-local-variable 'font-lock-no-comments) t)) |
e21d4ebc3160
(font-lock-set-defaults): Do nothing if font-lock-keywords already non-nil.
Richard M. Stallman <rms@gnu.org>
parents:
9390
diff
changeset
|
915 ;; Case fold? |
e21d4ebc3160
(font-lock-set-defaults): Do nothing if font-lock-keywords already non-nil.
Richard M. Stallman <rms@gnu.org>
parents:
9390
diff
changeset
|
916 (if (nth 2 defaults) |
e21d4ebc3160
(font-lock-set-defaults): Do nothing if font-lock-keywords already non-nil.
Richard M. Stallman <rms@gnu.org>
parents:
9390
diff
changeset
|
917 (set (make-local-variable 'font-lock-keywords-case-fold-search) t)) |
e21d4ebc3160
(font-lock-set-defaults): Do nothing if font-lock-keywords already non-nil.
Richard M. Stallman <rms@gnu.org>
parents:
9390
diff
changeset
|
918 ;; Syntax table? |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
919 (if (nth 3 defaults) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
920 (let ((slist (nth 3 defaults))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
921 (make-local-variable 'font-lock-syntax-table) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
922 (setq font-lock-syntax-table (copy-syntax-table (syntax-table))) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
923 (while slist |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
924 (modify-syntax-entry (car (car slist)) (cdr (car slist)) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
925 font-lock-syntax-table) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
926 (setq slist (cdr slist)))))))) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
927 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
928 ;; Install ourselves: |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
929 |
9513
76ce1230257f
Use purify-flag not noninteractive.
Simon Marshall <simon@gnu.org>
parents:
9487
diff
changeset
|
930 (if purify-flag |
9487
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
931 (add-hook 'after-init-hook 'font-lock-make-faces) |
f80b2a33df03
* font-lock.el: To make font-lock.el dumpable: (font-lock-display-type,
Simon Marshall <simon@gnu.org>
parents:
9444
diff
changeset
|
932 (font-lock-make-faces)) |
9389
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
933 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
934 (or (assq 'font-lock-mode minor-mode-alist) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
935 (setq minor-mode-alist (cons '(font-lock-mode " Font") minor-mode-alist))) |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
936 |
fec6bd86e836
(compilation-mode-font-lock-keywords,
Richard M. Stallman <rms@gnu.org>
parents:
9350
diff
changeset
|
937 ;; Provide ourselves: |
7491
621c162a80db
(font-lock-no-comments): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7298
diff
changeset
|
938 |
4053 | 939 (provide 'font-lock) |
940 | |
941 ;;; font-lock.el ends here |