Mercurial > emacs
annotate lisp/progmodes/cc-fonts.el @ 112315:e0da33ff5fa5
* lib/Makefile.in: Regenerate.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Sat, 08 Jan 2011 23:46:17 -0800 |
parents | 07533ffce7c3 |
children | 417b1e4d63cd |
rev | line source |
---|---|
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1 ;;; cc-fonts.el --- font lock support for CC Mode |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2 |
106815 | 3 ;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
4 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
5 ;; Authors: 2003- Alan Mackenzie |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
6 ;; 2002- Martin Stjernholm |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
7 ;; Maintainer: bug-cc-mode@gnu.org |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
8 ;; Created: 07-Jan-2002 |
110015
280c8ae2476d
Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents:
109599
diff
changeset
|
9 ;; Keywords: c languages |
280c8ae2476d
Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents:
109599
diff
changeset
|
10 ;; Package: cc-mode |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
11 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
12 ;; This file is part of GNU Emacs. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
13 |
94673
52b7a8c22af5
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
14 ;; GNU Emacs is free software: you can redistribute it and/or modify |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
15 ;; it under the terms of the GNU General Public License as published by |
94673
52b7a8c22af5
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
16 ;; the Free Software Foundation, either version 3 of the License, or |
52b7a8c22af5
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
17 ;; (at your option) any later version. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
18 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
19 ;; GNU Emacs is distributed in the hope that it will be useful, |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
22 ;; GNU General Public License for more details. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
23 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
24 ;; You should have received a copy of the GNU General Public License |
94673
52b7a8c22af5
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
25 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
26 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
27 ;;; Commentary: |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
28 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
29 ;; Some comments on the use of faces: |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
30 ;; |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
31 ;; o `c-label-face-name' is either `font-lock-constant-face' (in |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
32 ;; Emacs), or `font-lock-reference-face'. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
33 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
34 ;; o `c-constant-face-name', `c-reference-face-name' and |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
35 ;; `c-doc-markup-face-name' are essentially set up like |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
36 ;; `c-label-face-name'. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
37 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
38 ;; o `c-preprocessor-face-name' is `font-lock-preprocessor-face' in |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
39 ;; XEmacs and - in lack of a closer equivalent - |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
40 ;; `font-lock-builtin-face' or `font-lock-reference-face' in Emacs. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
41 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
42 ;; o `c-doc-face-name' is `font-lock-doc-string-face' in XEmacs, |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
43 ;; `font-lock-doc-face' in Emacs 21 and later, or |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
44 ;; `font-lock-comment-face' in older Emacs (that since source |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
45 ;; documentation are actually comments in these languages, as opposed |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
46 ;; to elisp). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
47 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
48 ;; TBD: We should probably provide real faces for the above uses and |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
49 ;; instead initialize them from the standard faces. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
50 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
51 ;;; Code: |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
52 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
53 ;; The faces that already have been put onto the text is tested in |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
54 ;; various places to direct further fontifications. For this to work, |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
55 ;; the following assumptions regarding the faces must hold (apart from |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
56 ;; the dependencies on the font locking order): |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
57 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
58 ;; o `font-lock-comment-face' and the face in `c-doc-face-name' is |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
59 ;; not used in anything but comments. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
60 ;; o If any face (e.g. `c-doc-markup-face-name') but those above is |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
61 ;; used in comments, it doesn't replace them. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
62 ;; o `font-lock-string-face' is not used in anything but string |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
63 ;; literals (single or double quoted). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
64 ;; o `font-lock-keyword-face' and the face in `c-label-face-name' are |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
65 ;; never overlaid with other faces. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
66 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
67 (eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
68 (let ((load-path |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
69 (if (and (boundp 'byte-compile-dest-file) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
70 (stringp byte-compile-dest-file)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
71 (cons (file-name-directory byte-compile-dest-file) load-path) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
72 load-path))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
73 (load "cc-bytecomp" nil t))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
74 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
75 (cc-require 'cc-defs) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
76 (cc-require-when-compile 'cc-langs) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
77 (cc-require 'cc-vars) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
78 (cc-require 'cc-engine) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
79 (cc-require-when-compile 'cc-awk) ; Change from cc-require, 2003/6/18 to |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
80 ;; prevent cc-awk being loaded when it's not needed. There is now a (require |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
81 ;; 'cc-awk) in (defun awk-mode ..). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
82 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
83 ;; Avoid repeated loading through the eval-after-load directive in |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
84 ;; cc-mode.el. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
85 (provide 'cc-fonts) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
86 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
87 (cc-external-require 'font-lock) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
88 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
89 (cc-bytecomp-defvar parse-sexp-lookup-properties) ; Emacs only. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
90 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
91 ;; Need to declare these local symbols during compilation since |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
92 ;; they're referenced from lambdas in `byte-compile' calls that are |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
93 ;; executed at compile time. They don't need to have the proper |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
94 ;; definitions, though, since the generated functions aren't called |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
95 ;; during compilation. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
96 (cc-bytecomp-defvar c-preprocessor-face-name) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
97 (cc-bytecomp-defvar c-reference-face-name) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
98 (cc-bytecomp-defun c-fontify-recorded-types-and-refs) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
99 (cc-bytecomp-defun c-font-lock-declarators) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
100 (cc-bytecomp-defun c-font-lock-objc-method) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
101 (cc-bytecomp-defun c-font-lock-invalid-string) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
102 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
103 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
104 ;; Note that font-lock in XEmacs doesn't expand face names as |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
105 ;; variables, so we have to use the (eval . FORM) in the font lock |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
106 ;; matchers wherever we use these alias variables. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
107 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
108 (defconst c-preprocessor-face-name |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
109 (cond ((c-face-name-p 'font-lock-preprocessor-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
110 ;; XEmacs has a font-lock-preprocessor-face. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
111 'font-lock-preprocessor-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
112 ((c-face-name-p 'font-lock-builtin-face) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
113 ;; In Emacs font-lock-builtin-face has traditionally been |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
114 ;; used for preprocessor directives. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
115 'font-lock-builtin-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
116 (t |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
117 'font-lock-reference-face))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
118 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
119 (cc-bytecomp-defvar font-lock-constant-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
120 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
121 (defconst c-label-face-name |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
122 (cond ((c-face-name-p 'font-lock-label-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
123 ;; If it happens to occur in the future. (Well, the more |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
124 ;; pragmatic reason is to get unique faces for the test |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
125 ;; suite.) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
126 'font-lock-label-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
127 ((and (c-face-name-p 'font-lock-constant-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
128 (eq font-lock-constant-face 'font-lock-constant-face)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
129 ;; Test both if font-lock-constant-face exists and that it's |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
130 ;; not an alias for something else. This is important since |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
131 ;; we compare already set faces in various places. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
132 'font-lock-constant-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
133 (t |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
134 'font-lock-reference-face))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
135 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
136 (defconst c-constant-face-name |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
137 (if (and (c-face-name-p 'font-lock-constant-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
138 (eq font-lock-constant-face 'font-lock-constant-face)) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
139 ;; This doesn't exist in some earlier versions of XEmacs 21. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
140 'font-lock-constant-face |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
141 c-label-face-name)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
142 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
143 (defconst c-reference-face-name |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
144 (with-no-warnings |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
145 (if (and (c-face-name-p 'font-lock-reference-face) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
146 (eq font-lock-reference-face 'font-lock-reference-face)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
147 ;; This is considered obsolete in Emacs, but it still maps well |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
148 ;; to this use. (Another reason to do this is to get unique |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
149 ;; faces for the test suite.) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
150 'font-lock-reference-face |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
151 c-label-face-name))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
152 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
153 ;; This should not mapped to a face that also is used to fontify things |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
154 ;; that aren't comments or string literals. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
155 (defconst c-doc-face-name |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
156 (cond ((c-face-name-p 'font-lock-doc-string-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
157 ;; XEmacs. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
158 'font-lock-doc-string-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
159 ((c-face-name-p 'font-lock-doc-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
160 ;; Emacs 21 and later. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
161 'font-lock-doc-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
162 (t |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
163 'font-lock-comment-face))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
164 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
165 (defconst c-doc-markup-face-name |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
166 (if (c-face-name-p 'font-lock-doc-markup-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
167 ;; If it happens to occur in the future. (Well, the more |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
168 ;; pragmatic reason is to get unique faces for the test |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
169 ;; suite.) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
170 'font-lock-doc-markup-face |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
171 c-label-face-name)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
172 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
173 (defconst c-negation-char-face-name |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
174 (if (c-face-name-p 'font-lock-negation-char-face) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
175 ;; Emacs 22 has a special face for negation chars. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
176 'font-lock-negation-char-face)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
177 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
178 (cc-bytecomp-defun face-inverse-video-p) ; Only in Emacs. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
179 (cc-bytecomp-defun face-property-instance) ; Only in XEmacs. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
180 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
181 (defun c-make-inverse-face (oldface newface) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
182 ;; Emacs and XEmacs have completely different face manipulation |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
183 ;; routines. :P |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
184 (copy-face oldface newface) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
185 (cond ((fboundp 'face-inverse-video-p) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
186 ;; Emacs. This only looks at the inverse flag in the current |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
187 ;; frame. Other display configurations might be different, |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
188 ;; but it can only show if the same Emacs has frames on |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
189 ;; e.g. a color and a monochrome display simultaneously. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
190 (unless (face-inverse-video-p oldface) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
191 (invert-face newface))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
192 ((fboundp 'face-property-instance) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
193 ;; XEmacs. Same pitfall here. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
194 (unless (face-property-instance oldface 'reverse) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
195 (invert-face newface))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
196 |
109599
c18dffa2ba46
Enhance Java Mode to handle Java 5.0 (Tiger) and Java 6 (Mustang).
Alan Mackenzie <acm@muc.de>
parents:
106837
diff
changeset
|
197 (defvar c-annotation-face (make-face 'c-annotation-face) |
c18dffa2ba46
Enhance Java Mode to handle Java 5.0 (Tiger) and Java 6 (Mustang).
Alan Mackenzie <acm@muc.de>
parents:
106837
diff
changeset
|
198 "Face used to highlight annotations in java-mode and other modes that may wish to use it.") |
c18dffa2ba46
Enhance Java Mode to handle Java 5.0 (Tiger) and Java 6 (Mustang).
Alan Mackenzie <acm@muc.de>
parents:
106837
diff
changeset
|
199 (set-face-foreground 'c-annotation-face "blue") |
c18dffa2ba46
Enhance Java Mode to handle Java 5.0 (Tiger) and Java 6 (Mustang).
Alan Mackenzie <acm@muc.de>
parents:
106837
diff
changeset
|
200 |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
201 (eval-and-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
202 ;; We need the following functions during compilation since they're |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
203 ;; called when the `c-lang-defconst' initializers are evaluated. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
204 ;; Define them at runtime too for the sake of derived modes. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
205 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
206 (defmacro c-put-font-lock-face (from to face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
207 ;; Put a face on a region (overriding any existing face) in the way |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
208 ;; font-lock would do it. In XEmacs that means putting an |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
209 ;; additional font-lock property, or else the font-lock package |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
210 ;; won't recognize it as fontified and might override it |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
211 ;; incorrectly. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
212 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
213 ;; This function does a hidden buffer change. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
214 (if (fboundp 'font-lock-set-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
215 ;; Note: This function has no docstring in XEmacs so it might be |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
216 ;; considered internal. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
217 `(font-lock-set-face ,from ,to ,face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
218 `(put-text-property ,from ,to 'face ,face))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
219 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
220 (defmacro c-remove-font-lock-face (from to) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
221 ;; This is the inverse of `c-put-font-lock-face'. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
222 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
223 ;; This function does a hidden buffer change. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
224 (if (fboundp 'font-lock-remove-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
225 `(font-lock-remove-face ,from ,to) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
226 `(remove-text-properties ,from ,to '(face nil)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
227 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
228 (defmacro c-put-font-lock-string-face (from to) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
229 ;; Put `font-lock-string-face' on a string. The surrounding |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
230 ;; quotes are included in Emacs but not in XEmacs. The passed |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
231 ;; region should include them. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
232 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
233 ;; This function does a hidden buffer change. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
234 (if (featurep 'xemacs) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
235 `(c-put-font-lock-face (1+ ,from) (1- ,to) 'font-lock-string-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
236 `(c-put-font-lock-face ,from ,to 'font-lock-string-face))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
237 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
238 (defmacro c-fontify-types-and-refs (varlist &rest body) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
239 ;; Like `let', but additionally activates `c-record-type-identifiers' |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
240 ;; and `c-record-ref-identifiers', and fontifies the recorded ranges |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
241 ;; accordingly on exit. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
242 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
243 ;; This function does hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
244 `(let ((c-record-type-identifiers t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
245 c-record-ref-identifiers |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
246 ,@varlist) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
247 (prog1 (progn ,@body) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
248 (c-fontify-recorded-types-and-refs)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
249 (put 'c-fontify-types-and-refs 'lisp-indent-function 1) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
250 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
251 (defun c-skip-comments-and-strings (limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
252 ;; If the point is within a region fontified as a comment or |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
253 ;; string literal skip to the end of it or to LIMIT, whichever |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
254 ;; comes first, and return t. Otherwise return nil. The match |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
255 ;; data is not clobbered. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
256 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
257 ;; This function might do hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
258 (when (c-got-face-at (point) c-literal-faces) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
259 (while (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
260 (goto-char (next-single-property-change |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
261 (point) 'face nil limit)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
262 (and (< (point) limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
263 (c-got-face-at (point) c-literal-faces)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
264 t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
265 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
266 (defun c-make-syntactic-matcher (regexp) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
267 ;; Returns a byte compiled function suitable for use in place of a |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
268 ;; regexp string in a `font-lock-keywords' matcher, except that |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
269 ;; only matches outside comments and string literals count. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
270 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
271 ;; This function does not do any hidden buffer changes, but the |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
272 ;; generated functions will. (They are however used in places |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
273 ;; covered by the font-lock context.) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
274 (byte-compile |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
275 `(lambda (limit) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
276 (let (res) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
277 (while (and (setq res (re-search-forward ,regexp limit t)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
278 (progn |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
279 (goto-char (match-beginning 0)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
280 (or (c-skip-comments-and-strings limit) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
281 (progn |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
282 (goto-char (match-end 0)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
283 nil))))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
284 res)))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
285 |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
286 (defun c-make-font-lock-search-function (regexp &rest highlights) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
287 ;; This function makes a byte compiled function that works much like |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
288 ;; a matcher element in `font-lock-keywords'. It cuts out a little |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
289 ;; bit of the overhead compared to a real matcher. The main reason |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
290 ;; is however to pass the real search limit to the anchored |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
291 ;; matcher(s), since most (if not all) font-lock implementations |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
292 ;; arbitrarily limit anchored matchers to the same line, and also |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
293 ;; to insulate against various other irritating differences between |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
294 ;; the different (X)Emacs font-lock packages. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
295 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
296 ;; REGEXP is the matcher, which must be a regexp. Only matches |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
297 ;; where the beginning is outside any comment or string literal are |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
298 ;; significant. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
299 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
300 ;; HIGHLIGHTS is a list of highlight specs, just like in |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
301 ;; `font-lock-keywords', with these limitations: The face is always |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
302 ;; overridden (no big disadvantage, since hits in comments etc are |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
303 ;; filtered anyway), there is no "laxmatch", and an anchored matcher |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
304 ;; is always a form which must do all the fontification directly. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
305 ;; `limit' is a variable bound to the real limit in the context of |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
306 ;; the anchored matcher forms. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
307 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
308 ;; This function does not do any hidden buffer changes, but the |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
309 ;; generated functions will. (They are however used in places |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
310 ;; covered by the font-lock context.) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
311 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
312 ;; Note: Replace `byte-compile' with `eval' to debug the generated |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
313 ;; lambda more easily. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
314 (byte-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
315 `(lambda (limit) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
316 (let (;; The font-lock package in Emacs is known to clobber |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
317 ;; `parse-sexp-lookup-properties' (when it exists). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
318 (parse-sexp-lookup-properties |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
319 (cc-eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
320 (boundp 'parse-sexp-lookup-properties)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
321 (while (re-search-forward ,regexp limit t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
322 (unless (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
323 (goto-char (match-beginning 0)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
324 (c-skip-comments-and-strings limit)) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
325 (goto-char (match-end 0)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
326 ,@(mapcar |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
327 (lambda (highlight) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
328 (if (integerp (car highlight)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
329 (progn |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
330 (unless (eq (nth 2 highlight) t) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
331 (error |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
332 "The override flag must currently be t in %s" |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
333 highlight)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
334 (when (nth 3 highlight) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
335 (error |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
336 "The laxmatch flag may currently not be set in %s" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
337 highlight)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
338 `(save-match-data |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
339 (c-put-font-lock-face |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
340 (match-beginning ,(car highlight)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
341 (match-end ,(car highlight)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
342 ,(elt highlight 1)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
343 (when (nth 3 highlight) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
344 (error "Match highlights currently not supported in %s" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
345 highlight)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
346 `(progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
347 ,(nth 1 highlight) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
348 (save-match-data ,(car highlight)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
349 ,(nth 2 highlight)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
350 highlights)))) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
351 nil))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
352 |
71754
60304f6ae360
* progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el,
Alan Mackenzie <acm@muc.de>
parents:
68773
diff
changeset
|
353 ; (eval-after-load "edebug" ; 2006-07-09: def-edebug-spec is now in subr.el. |
60304f6ae360
* progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el,
Alan Mackenzie <acm@muc.de>
parents:
68773
diff
changeset
|
354 ; '(progn |
60304f6ae360
* progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el,
Alan Mackenzie <acm@muc.de>
parents:
68773
diff
changeset
|
355 (def-edebug-spec c-fontify-types-and-refs let*) |
60304f6ae360
* progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el,
Alan Mackenzie <acm@muc.de>
parents:
68773
diff
changeset
|
356 (def-edebug-spec c-make-syntactic-matcher t) |
60304f6ae360
* progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el,
Alan Mackenzie <acm@muc.de>
parents:
68773
diff
changeset
|
357 ;; If there are literal quoted or backquoted highlight specs in |
60304f6ae360
* progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el,
Alan Mackenzie <acm@muc.de>
parents:
68773
diff
changeset
|
358 ;; the call to `c-make-font-lock-search-function' then let's |
60304f6ae360
* progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el,
Alan Mackenzie <acm@muc.de>
parents:
68773
diff
changeset
|
359 ;; instrument the forms in them. |
60304f6ae360
* progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el,
Alan Mackenzie <acm@muc.de>
parents:
68773
diff
changeset
|
360 (def-edebug-spec c-make-font-lock-search-function |
60304f6ae360
* progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el,
Alan Mackenzie <acm@muc.de>
parents:
68773
diff
changeset
|
361 (form &rest &or ("quote" (&rest form)) ("`" (&rest form)) form)));)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
362 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
363 (defun c-fontify-recorded-types-and-refs () |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
364 ;; Convert the ranges recorded on `c-record-type-identifiers' and |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
365 ;; `c-record-ref-identifiers' to fontification. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
366 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
367 ;; This function does hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
368 (let (elem) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
369 (while (consp c-record-type-identifiers) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
370 (setq elem (car c-record-type-identifiers) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
371 c-record-type-identifiers (cdr c-record-type-identifiers)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
372 (c-put-font-lock-face (car elem) (cdr elem) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
373 'font-lock-type-face)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
374 (while c-record-ref-identifiers |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
375 (setq elem (car c-record-ref-identifiers) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
376 c-record-ref-identifiers (cdr c-record-ref-identifiers)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
377 ;; Note that the reference face is a variable that is |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
378 ;; dereferenced, since it's an alias in Emacs. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
379 (c-put-font-lock-face (car elem) (cdr elem) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
380 c-reference-face-name)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
381 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
382 (c-lang-defconst c-cpp-matchers |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
383 "Font lock matchers for preprocessor directives and purely lexical |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
384 stuff. Used on level 1 and higher." |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
385 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
386 ;; Note: `c-font-lock-declarations' assumes that no matcher here |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
387 ;; sets `font-lock-type-face' in languages where |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
388 ;; `c-recognize-<>-arglists' is set. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
389 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
390 t `(,@(when (c-lang-const c-opt-cpp-prefix) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
391 (let* ((noncontinued-line-end "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n\r]\\)") |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
392 (ncle-depth (regexp-opt-depth noncontinued-line-end)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
393 (sws-depth (c-lang-const c-syntactic-ws-depth)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
394 (nsws-depth (c-lang-const c-nonempty-syntactic-ws-depth))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
395 |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
396 `(;; The stuff after #error and #warning is a message, so |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
397 ;; fontify it as a string. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
398 ,@(when (c-lang-const c-cpp-message-directives) |
80158
4c9d1aa65d34
Set of changes so that "obtrusive" syntactic elements in a C/C++/ObjC
Alan Mackenzie <acm@muc.de>
parents:
79717
diff
changeset
|
399 (let* ((re (c-make-keywords-re 'appendable ; nil |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
400 (c-lang-const c-cpp-message-directives))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
401 (re-depth (regexp-opt-depth re))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
402 `((,(concat noncontinued-line-end |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
403 (c-lang-const c-opt-cpp-prefix) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
404 re |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
405 "\\s +\\(.*\\)$") |
80158
4c9d1aa65d34
Set of changes so that "obtrusive" syntactic elements in a C/C++/ObjC
Alan Mackenzie <acm@muc.de>
parents:
79717
diff
changeset
|
406 ,(+ ncle-depth re-depth 1) font-lock-string-face t)))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
407 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
408 ;; Fontify filenames in #include <...> as strings. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
409 ,@(when (c-lang-const c-cpp-include-directives) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
410 (let* ((re (c-make-keywords-re nil |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
411 (c-lang-const c-cpp-include-directives))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
412 (re-depth (regexp-opt-depth re))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
413 `((,(concat noncontinued-line-end |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
414 (c-lang-const c-opt-cpp-prefix) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
415 re |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
416 (c-lang-const c-syntactic-ws) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
417 "\\(<[^>\n\r]*>?\\)") |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
418 (,(+ ncle-depth re-depth sws-depth 1) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
419 font-lock-string-face) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
420 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
421 ;; Use an anchored matcher to put paren syntax |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
422 ;; on the brackets. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
423 (,(byte-compile |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
424 `(lambda (limit) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
425 (let ((beg (match-beginning |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
426 ,(+ ncle-depth re-depth sws-depth 1))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
427 (end (1- (match-end ,(+ ncle-depth re-depth |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
428 sws-depth 1))))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
429 (if (eq (char-after end) ?>) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
430 (progn |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
431 (c-mark-<-as-paren beg) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
432 (c-mark->-as-paren end)) |
106395
f2b36fb84bf7
Enhance `c-parse-state' to run efficiently in "brace desserts".
Alan Mackenzie <acm@muc.de>
parents:
100908
diff
changeset
|
433 ;; (c-clear-char-property beg 'syntax-table) |
f2b36fb84bf7
Enhance `c-parse-state' to run efficiently in "brace desserts".
Alan Mackenzie <acm@muc.de>
parents:
100908
diff
changeset
|
434 (c-clear-char-property beg 'category))) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
435 nil))))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
436 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
437 ;; #define. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
438 ,@(when (c-lang-const c-opt-cpp-macro-define) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
439 `((,(c-make-font-lock-search-function |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
440 (concat |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
441 noncontinued-line-end |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
442 (c-lang-const c-opt-cpp-prefix) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
443 (c-lang-const c-opt-cpp-macro-define) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
444 (c-lang-const c-nonempty-syntactic-ws) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
445 "\\(" (c-lang-const ; 1 + ncle + nsws |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
446 c-symbol-key) "\\)" |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
447 (concat "\\(" ; 2 + ncle + nsws + c-sym-key |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
448 ;; Macro with arguments - a "function". |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
449 "\\(\(\\)" ; 3 + ncle + nsws + c-sym-key |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
450 "\\|" |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
451 ;; Macro without arguments - a "variable". |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
452 "\\([^\(]\\|$\\)" |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
453 "\\)")) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
454 `((if (match-beginning |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
455 ,(+ 3 ncle-depth nsws-depth |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
456 (c-lang-const c-symbol-key-depth))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
457 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
458 ;; "Function". Fontify the name and the arguments. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
459 (save-restriction |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
460 (c-put-font-lock-face |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
461 (match-beginning ,(+ 1 ncle-depth nsws-depth)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
462 (match-end ,(+ 1 ncle-depth nsws-depth)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
463 'font-lock-function-name-face) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
464 (goto-char |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
465 (match-end |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
466 ,(+ 3 ncle-depth nsws-depth |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
467 (c-lang-const c-symbol-key-depth)))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
468 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
469 (narrow-to-region (point-min) limit) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
470 (while (and |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
471 (progn |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
472 (c-forward-syntactic-ws) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
473 (looking-at c-symbol-key)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
474 (progn |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
475 (c-put-font-lock-face |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
476 (match-beginning 0) (match-end 0) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
477 'font-lock-variable-name-face) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
478 (goto-char (match-end 0)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
479 (c-forward-syntactic-ws) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
480 (eq (char-after) ?,))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
481 (forward-char))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
482 |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
483 ;; "Variable". |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
484 (c-put-font-lock-face |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
485 (match-beginning ,(+ 1 ncle-depth nsws-depth)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
486 (match-end ,(+ 1 ncle-depth nsws-depth)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
487 'font-lock-variable-name-face))))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
488 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
489 ;; Fontify cpp function names in preprocessor |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
490 ;; expressions in #if and #elif. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
491 ,@(when (and (c-lang-const c-cpp-expr-directives) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
492 (c-lang-const c-cpp-expr-functions)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
493 (let ((ced-re (c-make-keywords-re t |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
494 (c-lang-const c-cpp-expr-directives))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
495 (cef-re (c-make-keywords-re t |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
496 (c-lang-const c-cpp-expr-functions)))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
497 `((,(c-make-font-lock-search-function |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
498 (concat noncontinued-line-end |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
499 (c-lang-const c-opt-cpp-prefix) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
500 ced-re ; 1 + ncle-depth |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
501 ;; Match the whole logical line to look |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
502 ;; for the functions in. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
503 "\\(\\\\\\(.\\|[\n\r]\\)\\|[^\n\r]\\)*") |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
504 `((let ((limit (match-end 0))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
505 (while (re-search-forward ,cef-re limit 'move) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
506 (c-put-font-lock-face (match-beginning 1) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
507 (match-end 1) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
508 c-preprocessor-face-name))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
509 (goto-char (match-end ,(1+ ncle-depth))))))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
510 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
511 ;; Fontify the directive names. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
512 (,(c-make-font-lock-search-function |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
513 (concat noncontinued-line-end |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
514 "\\(" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
515 (c-lang-const c-opt-cpp-prefix) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
516 "[" (c-lang-const c-symbol-chars) "]+" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
517 "\\)") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
518 `(,(1+ ncle-depth) c-preprocessor-face-name t))) |
62079
bd033c2d7fd4
(c-cpp-matchers): Use font-lock-negation-char-face.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
61394
diff
changeset
|
519 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
520 (eval . (list ,(c-make-syntactic-matcher |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
521 (concat noncontinued-line-end |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
522 (c-lang-const c-opt-cpp-prefix) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
523 "if\\(n\\)def\\>")) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
524 ,(+ ncle-depth 1) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
525 c-negation-char-face-name |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
526 'append)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
527 ))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
528 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
529 ,@(when (c-major-mode-is 'pike-mode) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
530 ;; Recognize hashbangs in Pike. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
531 `((eval . (list "\\`#![^\n\r]*" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
532 0 c-preprocessor-face-name)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
533 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
534 ;; Make hard spaces visible through an inverted `font-lock-warning-face'. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
535 (eval . (list |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
536 "\240" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
537 0 (progn |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
538 (unless (c-face-name-p 'c-nonbreakable-space-face) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
539 (c-make-inverse-face 'font-lock-warning-face |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
540 'c-nonbreakable-space-face)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
541 ''c-nonbreakable-space-face))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
542 )) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
543 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
544 (defun c-font-lock-invalid-string () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
545 ;; Assuming the point is after the opening character of a string, |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
546 ;; fontify that char with `font-lock-warning-face' if the string |
52606
e1373b8163ac
(c-font-lock-declarations): Fixed recognition of constructors and
Martin Stjernholm <mast@lysator.liu.se>
parents:
52401
diff
changeset
|
547 ;; decidedly isn't terminated properly. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
548 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
549 ;; This function does hidden buffer changes. |
52606
e1373b8163ac
(c-font-lock-declarations): Fixed recognition of constructors and
Martin Stjernholm <mast@lysator.liu.se>
parents:
52401
diff
changeset
|
550 (let ((start (1- (point)))) |
e1373b8163ac
(c-font-lock-declarations): Fixed recognition of constructors and
Martin Stjernholm <mast@lysator.liu.se>
parents:
52401
diff
changeset
|
551 (save-excursion |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
552 (and (eq (elt (parse-partial-sexp start (c-point 'eol)) 8) start) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
553 (if (integerp c-multiline-string-start-char) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
554 ;; There's no multiline string start char before the |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
555 ;; string, so newlines aren't allowed. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
556 (not (eq (char-before start) c-multiline-string-start-char)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
557 ;; Multiline strings are allowed anywhere if |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
558 ;; c-multiline-string-start-char is t. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
559 (not c-multiline-string-start-char)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
560 (if c-string-escaped-newlines |
52606
e1373b8163ac
(c-font-lock-declarations): Fixed recognition of constructors and
Martin Stjernholm <mast@lysator.liu.se>
parents:
52401
diff
changeset
|
561 ;; There's no \ before the newline. |
e1373b8163ac
(c-font-lock-declarations): Fixed recognition of constructors and
Martin Stjernholm <mast@lysator.liu.se>
parents:
52401
diff
changeset
|
562 (not (eq (char-before (point)) ?\\)) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
563 ;; Escaped newlines aren't supported. |
52606
e1373b8163ac
(c-font-lock-declarations): Fixed recognition of constructors and
Martin Stjernholm <mast@lysator.liu.se>
parents:
52401
diff
changeset
|
564 t) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
565 (c-put-font-lock-face start (1+ start) 'font-lock-warning-face))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
566 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
567 (c-lang-defconst c-basic-matchers-before |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
568 "Font lock matchers for basic keywords, labels, references and various |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
569 other easily recognizable things that should be fontified before generic |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
570 casts and declarations are fontified. Used on level 2 and higher." |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
571 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
572 ;; Note: `c-font-lock-declarations' assumes that no matcher here |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
573 ;; sets `font-lock-type-face' in languages where |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
574 ;; `c-recognize-<>-arglists' is set. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
575 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
576 t `(;; Put a warning face on the opener of unclosed strings that |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
577 ;; can't span lines. Later font |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
578 ;; lock packages have a `font-lock-syntactic-face-function' for |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
579 ;; this, but it doesn't give the control we want since any |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
580 ;; fontification done inside the function will be |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
581 ;; unconditionally overridden. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
582 ,(c-make-font-lock-search-function |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
583 ;; Match a char before the string starter to make |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
584 ;; `c-skip-comments-and-strings' work correctly. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
585 (concat ".\\(" c-string-limit-regexp "\\)") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
586 '((c-font-lock-invalid-string))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
587 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
588 ;; Fontify keyword constants. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
589 ,@(when (c-lang-const c-constant-kwds) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
590 (let ((re (c-make-keywords-re nil (c-lang-const c-constant-kwds)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
591 (if (c-major-mode-is 'pike-mode) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
592 ;; No symbol is a keyword after "->" in Pike. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
593 `((eval . (list ,(concat "\\(\\=.?\\|[^>]\\|[^-]>\\)" |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
594 "\\<\\(" re "\\)\\>") |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
595 2 c-constant-face-name))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
596 `((eval . (list ,(concat "\\<\\(" re "\\)\\>") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
597 1 c-constant-face-name)))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
598 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
599 ;; Fontify all keywords except the primitive types. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
600 ,(if (c-major-mode-is 'pike-mode) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
601 ;; No symbol is a keyword after "->" in Pike. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
602 `(,(concat "\\(\\=.?\\|[^>]\\|[^-]>\\)" |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
603 "\\<" (c-lang-const c-regular-keywords-regexp)) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
604 2 font-lock-keyword-face) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
605 `(,(concat "\\<" (c-lang-const c-regular-keywords-regexp)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
606 1 font-lock-keyword-face)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
607 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
608 ;; Fontify leading identifiers in fully qualified names like |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
609 ;; "foo::bar" in languages that supports such things. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
610 ,@(when (c-lang-const c-opt-identifier-concat-key) |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
611 (if (c-major-mode-is 'java-mode) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
612 ;; Java needs special treatment since "." is used both to |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
613 ;; qualify names and in normal indexing. Here we look for |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
614 ;; capital characters at the beginning of an identifier to |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
615 ;; recognize the class. "*" is also recognized to cover |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
616 ;; wildcard import declarations. All preceding dot separated |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
617 ;; identifiers are taken as package names and therefore |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
618 ;; fontified as references. |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
619 `(,(c-make-font-lock-search-function |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
620 ;; Search for class identifiers preceded by ".". The |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
621 ;; anchored matcher takes it from there. |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
622 (concat (c-lang-const c-opt-identifier-concat-key) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
623 (c-lang-const c-simple-ws) "*" |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
624 (concat "\\(" |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
625 "[" c-upper "]" |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
626 "[" (c-lang-const c-symbol-chars) "]*" |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
627 "\\|" |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
628 "\\*" |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
629 "\\)")) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
630 `((let (id-end) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
631 (goto-char (1+ (match-beginning 0))) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
632 (while (and (eq (char-before) ?.) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
633 (progn |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
634 (backward-char) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
635 (c-backward-syntactic-ws) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
636 (setq id-end (point)) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
637 (< (skip-chars-backward |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
638 ,(c-lang-const c-symbol-chars)) 0)) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
639 (not (get-text-property (point) 'face))) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
640 (c-put-font-lock-face (point) id-end |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
641 c-reference-face-name) |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
642 (c-backward-syntactic-ws))) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
643 nil |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
644 (goto-char (match-end 0))))) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
645 |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
646 `((,(byte-compile |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
647 ;; Must use a function here since we match longer than |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
648 ;; we want to move before doing a new search. This is |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
649 ;; not necessary for XEmacs since it restarts the |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
650 ;; search from the end of the first highlighted |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
651 ;; submatch (something that causes problems in other |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
652 ;; places). |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
653 `(lambda (limit) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
654 (while (re-search-forward |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
655 ,(concat "\\(\\<" ; 1 |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
656 "\\(" (c-lang-const c-symbol-key) "\\)" ; 2 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
657 (c-lang-const c-simple-ws) "*" |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
658 (c-lang-const c-opt-identifier-concat-key) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
659 (c-lang-const c-simple-ws) "*" |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
660 "\\)" |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
661 "\\(" |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
662 (c-lang-const c-opt-after-id-concat-key) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
663 "\\)") |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
664 limit t) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
665 (unless (progn |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
666 (goto-char (match-beginning 0)) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
667 (c-skip-comments-and-strings limit)) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
668 (or (get-text-property (match-beginning 2) 'face) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
669 (c-put-font-lock-face (match-beginning 2) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
670 (match-end 2) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
671 c-reference-face-name)) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
672 (goto-char (match-end 1)))))))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
673 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
674 ;; Fontify the special declarations in Objective-C. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
675 ,@(when (c-major-mode-is 'objc-mode) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
676 `(;; Fontify class names in the beginning of message expressions. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
677 ,(c-make-font-lock-search-function |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
678 "\\[" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
679 '((c-fontify-types-and-refs () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
680 (c-forward-syntactic-ws limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
681 (let ((start (point))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
682 ;; In this case we accept both primitive and known types. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
683 (when (eq (c-forward-type) 'known) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
684 (goto-char start) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
685 (let ((c-promote-possible-types t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
686 (c-forward-type)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
687 (if (> (point) limit) (goto-char limit))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
688 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
689 ;; The @interface/@implementation/@protocol directives. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
690 ,(c-make-font-lock-search-function |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
691 (concat "\\<" |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
692 (regexp-opt |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
693 '("@interface" "@implementation" "@protocol") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
694 t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
695 "\\>") |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
696 '((c-fontify-types-and-refs |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
697 (;; The font-lock package in Emacs is known to clobber |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
698 ;; `parse-sexp-lookup-properties' (when it exists). |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
699 (parse-sexp-lookup-properties |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
700 (cc-eval-when-compile |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
701 (boundp 'parse-sexp-lookup-properties)))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
702 (c-forward-objc-directive) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
703 nil) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
704 (goto-char (match-beginning 0)))))) |
62079
bd033c2d7fd4
(c-cpp-matchers): Use font-lock-negation-char-face.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
61394
diff
changeset
|
705 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
706 (eval . (list "\\(!\\)[^=]" 1 c-negation-char-face-name)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
707 )) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
708 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
709 (defun c-font-lock-complex-decl-prepare (limit) |
76986
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
710 ;; This function will be called from font-lock for a region bounded by POINT |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
711 ;; and LIMIT, as though it were to identify a keyword for |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
712 ;; font-lock-keyword-face. It always returns NIL to inhibit this and |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
713 ;; prevent a repeat invocation. See elisp/lispref page "Search-based |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
714 ;; Fontification". |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
715 ;; |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
716 ;; Called before any of the matchers in `c-complex-decl-matchers'. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
717 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
718 ;; This function does hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
719 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
720 ;;(message "c-font-lock-complex-decl-prepare %s %s" (point) limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
721 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
722 ;; Clear the list of found types if we start from the start of the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
723 ;; buffer, to make it easier to get rid of misspelled types and |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
724 ;; variables that have gotten recognized as types in malformed code. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
725 (when (bobp) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
726 (c-clear-found-types)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
727 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
728 ;; Clear the c-type char properties which mark the region, to recalculate |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
729 ;; them properly. The most interesting properties are those put on the |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
730 ;; closest token before the region. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
731 (save-excursion |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
732 (let ((pos (point))) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
733 (c-backward-syntactic-ws) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
734 (c-clear-char-properties |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
735 (if (and (not (bobp)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
736 (memq (c-get-char-property (1- (point)) 'c-type) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
737 '(c-decl-arg-start |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
738 c-decl-end |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
739 c-decl-id-start |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
740 c-decl-type-start))) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
741 (1- (point)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
742 pos) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
743 limit 'c-type))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
744 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
745 ;; Update `c-state-cache' to the beginning of the region. This will |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
746 ;; make `c-beginning-of-syntax' go faster when it's used later on, |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
747 ;; and it's near the point most of the time. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
748 (c-parse-state) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
749 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
750 ;; Check if the fontified region starts inside a declarator list so |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
751 ;; that `c-font-lock-declarators' should be called at the start. |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
752 ;; The declared identifiers are font-locked correctly as types, if |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
753 ;; that is what they are. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
754 (let ((prop (save-excursion |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
755 (c-backward-syntactic-ws) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
756 (unless (bobp) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
757 (c-get-char-property (1- (point)) 'c-type))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
758 (when (memq prop '(c-decl-id-start c-decl-type-start)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
759 (c-forward-syntactic-ws limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
760 (c-font-lock-declarators limit t (eq prop 'c-decl-type-start)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
761 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
762 nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
763 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
764 (defun c-font-lock-<>-arglists (limit) |
76986
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
765 ;; This function will be called from font-lock for a region bounded by POINT |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
766 ;; and LIMIT, as though it were to identify a keyword for |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
767 ;; font-lock-keyword-face. It always returns NIL to inhibit this and |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
768 ;; prevent a repeat invocation. See elisp/lispref page "Search-based |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
769 ;; Fontification". |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
770 ;; |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
771 ;; Fontify types and references in names containing angle bracket |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
772 ;; arglists from the point to LIMIT. Note that |
76986
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
773 ;; `c-font-lock-declarations' already has handled many of them. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
774 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
775 ;; This function might do hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
776 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
777 (let (;; The font-lock package in Emacs is known to clobber |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
778 ;; `parse-sexp-lookup-properties' (when it exists). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
779 (parse-sexp-lookup-properties |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
780 (cc-eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
781 (boundp 'parse-sexp-lookup-properties))) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
782 (c-parse-and-markup-<>-arglists t) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
783 c-restricted-<>-arglists |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
784 id-start id-end id-face pos kwd-sym) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
785 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
786 (while (and (< (point) limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
787 (re-search-forward c-opt-<>-arglist-start limit t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
788 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
789 (setq id-start (match-beginning 1) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
790 id-end (match-end 1) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
791 pos (point)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
792 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
793 (goto-char id-start) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
794 (unless (c-skip-comments-and-strings limit) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
795 (setq kwd-sym nil |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
796 c-restricted-<>-arglists nil |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
797 id-face (get-text-property id-start 'face)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
798 |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
799 (if (cond |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
800 ((eq id-face 'font-lock-type-face) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
801 ;; The identifier got the type face so it has already been |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
802 ;; handled in `c-font-lock-declarations'. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
803 nil) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
804 |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
805 ((eq id-face 'font-lock-keyword-face) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
806 (when (looking-at c-opt-<>-sexp-key) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
807 ;; There's a special keyword before the "<" that tells |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
808 ;; that it's an angle bracket arglist. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
809 (setq kwd-sym (c-keyword-sym (match-string 1))))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
810 |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
811 (t |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
812 ;; There's a normal identifier before the "<". If we're not in |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
813 ;; a declaration context then we set `c-restricted-<>-arglists' |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
814 ;; to avoid recognizing templates in function calls like "foo (a |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
815 ;; < b, c > d)". |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
816 (c-backward-syntactic-ws) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
817 (when (and (memq (char-before) '(?\( ?,)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
818 (not (eq (get-text-property (1- (point)) 'c-type) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
819 'c-decl-arg-start))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
820 (setq c-restricted-<>-arglists t)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
821 t)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
822 |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
823 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
824 (goto-char (1- pos)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
825 ;; Check for comment/string both at the identifier and |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
826 ;; at the "<". |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
827 (unless (c-skip-comments-and-strings limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
828 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
829 (c-fontify-types-and-refs () |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
830 (when (c-forward-<>-arglist (c-keyword-member |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
831 kwd-sym 'c-<>-type-kwds)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
832 (when (and c-opt-identifier-concat-key |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
833 (not (get-text-property id-start 'face))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
834 (c-forward-syntactic-ws) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
835 (if (looking-at c-opt-identifier-concat-key) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
836 (c-put-font-lock-face id-start id-end |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
837 c-reference-face-name) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
838 (c-put-font-lock-face id-start id-end |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
839 'font-lock-type-face))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
840 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
841 (goto-char pos))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
842 (goto-char pos))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
843 nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
844 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
845 (defun c-font-lock-declarators (limit list types) |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
846 ;; Assuming the point is at the start of a declarator in a declaration, |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
847 ;; fontify the identifier it declares. (If TYPES is set, it does this via |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
848 ;; the macro `c-fontify-types-and-refs'.) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
849 ;; |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
850 ;; If LIST is non-nil, also fontify the ids in any following declarators in |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
851 ;; a comma separated list (e.g. "foo" and "*bar" in "int foo = 17, *bar;"); |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
852 ;; additionally, mark the commas with c-type property 'c-decl-id-start or |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
853 ;; 'c-decl-type-start (according to TYPES). Stop at LIMIT. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
854 ;; |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
855 ;; If TYPES is non-nil, fontify all identifiers as types. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
856 ;; |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
857 ;; Nil is always returned. The function leaves point at the delimiter after |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
858 ;; the last declarator it processes. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
859 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
860 ;; This function might do hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
861 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
862 ;;(message "c-font-lock-declarators from %s to %s" (point) limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
863 (c-fontify-types-and-refs |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
864 ((pos (point)) next-pos id-start id-end |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
865 paren-depth |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
866 id-face got-init |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
867 c-last-identifier-range |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
868 (separator-prop (if types 'c-decl-type-start 'c-decl-id-start))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
869 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
870 ;; The following `while' fontifies a single declarator id each time round. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
871 ;; It loops only when LIST is non-nil. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
872 (while |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
873 ;; Inside the following "condition form", we move forward over the |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
874 ;; declarator's identifier up as far as any opening bracket (for array |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
875 ;; size) or paren (for parameters of function-type) or brace (for |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
876 ;; array/struct initialisation) or "=" or terminating delimiter |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
877 ;; (e.g. "," or ";" or "}"). |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
878 (and |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
879 pos |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
880 (< (point) limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
881 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
882 ;; The following form moves forward over the declarator's |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
883 ;; identifier (and what precedes it), returning t. If there |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
884 ;; wasn't one, it returns nil, terminating the `while'. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
885 (let (got-identifier) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
886 (setq paren-depth 0) |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
887 ;; Skip over type decl prefix operators, one for each iteration |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
888 ;; of the while. These are, e.g. "*" in "int *foo" or "(" and |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
889 ;; "*" in "int (*foo) (void)" (Note similar code in |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
890 ;; `c-forward-decl-or-cast-1'.) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
891 (while (and (looking-at c-type-decl-prefix-key) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
892 (if (and (c-major-mode-is 'c++-mode) |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
893 (match-beginning 3)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
894 ;; If the third submatch matches in C++ then |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
895 ;; we're looking at an identifier that's a |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
896 ;; prefix only if it specifies a member pointer. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
897 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
898 (setq id-start (point)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
899 (c-forward-name) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
900 (if (looking-at "\\(::\\)") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
901 ;; We only check for a trailing "::" and |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
902 ;; let the "*" that should follow be |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
903 ;; matched in the next round. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
904 t |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
905 ;; It turned out to be the real identifier, |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
906 ;; so flag that and stop. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
907 (setq got-identifier t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
908 nil)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
909 t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
910 (if (eq (char-after) ?\() |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
911 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
912 (setq paren-depth (1+ paren-depth)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
913 (forward-char)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
914 (goto-char (match-end 1))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
915 (c-forward-syntactic-ws)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
916 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
917 ;; If we haven't passed the identifier already, do it now. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
918 (unless got-identifier |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
919 (setq id-start (point)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
920 (c-forward-name)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
921 (setq id-end (point)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
922 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
923 (/= id-end pos)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
924 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
925 ;; Skip out of the parens surrounding the identifier. If closing |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
926 ;; parens are missing, this form returns nil. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
927 (or (= paren-depth 0) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
928 (c-safe (goto-char (scan-lists (point) 1 paren-depth)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
929 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
930 (<= (point) limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
931 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
932 ;; Skip over any trailing bit, such as "__attribute__". |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
933 (progn |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
934 (when (looking-at c-decl-hangon-key) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
935 (c-forward-keyword-clause 1)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
936 (<= (point) limit)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
937 |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
938 ;; Search syntactically to the end of the declarator (";", |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
939 ;; ",", a closen paren, eob etc) or to the beginning of an |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
940 ;; initializer or function prototype ("=" or "\\s\("). |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
941 ;; Note that the open paren will match array specs in |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
942 ;; square brackets, and we treat them as initializers too. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
943 (c-syntactic-re-search-forward |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
944 "[;,]\\|\\s)\\|\\'\\|\\(=\\|\\s(\\)" limit t t)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
945 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
946 (setq next-pos (match-beginning 0) |
74009
0588a1acad14
(c-font-lock-declarators): Iff at the top-level or inside a class
Chong Yidong <cyd@stupidchicken.com>
parents:
73903
diff
changeset
|
947 id-face (if (and (eq (char-after next-pos) ?\() |
0588a1acad14
(c-font-lock-declarators): Iff at the top-level or inside a class
Chong Yidong <cyd@stupidchicken.com>
parents:
73903
diff
changeset
|
948 (let (c-last-identifier-range) |
0588a1acad14
(c-font-lock-declarators): Iff at the top-level or inside a class
Chong Yidong <cyd@stupidchicken.com>
parents:
73903
diff
changeset
|
949 (save-excursion |
0588a1acad14
(c-font-lock-declarators): Iff at the top-level or inside a class
Chong Yidong <cyd@stupidchicken.com>
parents:
73903
diff
changeset
|
950 (goto-char next-pos) |
0588a1acad14
(c-font-lock-declarators): Iff at the top-level or inside a class
Chong Yidong <cyd@stupidchicken.com>
parents:
73903
diff
changeset
|
951 (c-at-toplevel-p)))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
952 'font-lock-function-name-face |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
953 'font-lock-variable-name-face) |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
954 got-init (and (match-beginning 1) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
955 (char-after (match-beginning 1)))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
956 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
957 (if types |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
958 ;; Register and fontify the identifer as a type. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
959 (let ((c-promote-possible-types t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
960 (goto-char id-start) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
961 (c-forward-type)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
962 ;; Fontify the last symbol in the identifier if it isn't fontified |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
963 ;; already. The check is necessary only in certain cases where this |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
964 ;; function is used "sloppily", e.g. in `c-simple-decl-matchers'. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
965 (when (and c-last-identifier-range |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
966 (not (get-text-property (car c-last-identifier-range) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
967 'face))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
968 (c-put-font-lock-face (car c-last-identifier-range) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
969 (cdr c-last-identifier-range) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
970 id-face))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
971 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
972 (goto-char next-pos) |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
973 (setq pos nil) ; So as to terminate the enclosing `while' form. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
974 (when list |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
975 ;; Jump past any initializer or function prototype to see if |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
976 ;; there's a ',' to continue at. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
977 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
978 (cond ((eq id-face 'font-lock-function-name-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
979 ;; Skip a parenthesized initializer (C++) or a function |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
980 ;; prototype. |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
981 (if (c-safe (c-forward-sexp 1) t) ; over the parameter list. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
982 (c-forward-syntactic-ws limit) |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
983 (goto-char limit))) ; unbalanced parens |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
984 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
985 (got-init ; "=" sign OR opening "(", "[", or "{" |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
986 ;; Skip an initializer expression. If we're at a '=' |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
987 ;; then accept a brace list directly after it to cope |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
988 ;; with array initializers. Otherwise stop at braces |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
989 ;; to avoid going past full function and class blocks. |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
990 (and (if (and (eq got-init ?=) |
62641
27b53b1903b6
2005-05-23 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
62254
diff
changeset
|
991 (= (c-forward-token-2 1 nil limit) 0) |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
992 (looking-at "{")) |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
993 (c-safe (c-forward-sexp) t) ; over { .... } |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
994 t) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
995 ;; FIXME: Should look for c-decl-end markers here; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
996 ;; we might go far into the following declarations |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
997 ;; in e.g. ObjC mode (see e.g. methods-4.m). |
56646
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
998 (c-syntactic-re-search-forward "[;,{]" limit 'move t) |
b7446b6f097d
Updated CC Mode to 5.30.9.
Martin Stjernholm <mast@lysator.liu.se>
parents:
53073
diff
changeset
|
999 (backward-char))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1000 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1001 (t (c-forward-syntactic-ws limit))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1002 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1003 ;; If a ',' is found we set pos to the next declarator and iterate. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1004 (when (and (< (point) limit) (looking-at ",")) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1005 (c-put-char-property (point) 'c-type separator-prop) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1006 (forward-char) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1007 (c-forward-syntactic-ws limit) |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1008 (setq pos (point)))))) ; acts to make the `while' form continue. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1009 nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1010 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1011 (defconst c-font-lock-maybe-decl-faces |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1012 ;; List of faces that might be put at the start of a type when |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1013 ;; `c-font-lock-declarations' runs. This needs to be evaluated to |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1014 ;; ensure that face name aliases in Emacs are resolved. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1015 (list nil |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1016 font-lock-type-face |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1017 c-reference-face-name |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1018 font-lock-keyword-face)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1019 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1020 (defun c-font-lock-declarations (limit) |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1021 ;; Fontify all the declarations, casts and labels from the point to LIMIT. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1022 ;; Assumes that strings and comments have been fontified already. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1023 ;; |
76986
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1024 ;; This function will be called from font-lock for a region bounded by POINT |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1025 ;; and LIMIT, as though it were to identify a keyword for |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1026 ;; font-lock-keyword-face. It always returns NIL to inhibit this and |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1027 ;; prevent a repeat invocation. See elisp/lispref page "Search-based |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1028 ;; Fontification". |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1029 ;; |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1030 ;; This function might do hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1031 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1032 ;;(message "c-font-lock-declarations search from %s to %s" (point) limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1033 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1034 (save-restriction |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1035 (let (;; The position where `c-find-decl-spots' last stopped. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1036 start-pos |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1037 ;; o - 'decl if we're in an arglist containing declarations |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1038 ;; (but if `c-recognize-paren-inits' is set it might also be |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1039 ;; an initializer arglist); |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1040 ;; o - '<> if the arglist is of angle bracket type; |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1041 ;; o - 'arglist if it's some other arglist; |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1042 ;; o - nil, if not in an arglist at all. This includes the |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1043 ;; parenthesised condition which follows "if", "while", etc. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1044 context |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1045 ;; The position of the next token after the closing paren of |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1046 ;; the last detected cast. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1047 last-cast-end |
111139
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1048 ;; Start of containing declaration (if any); limit for searching |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1049 ;; backwards for it. |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1050 decl-start decl-search-lim |
111241
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1051 ;; Start of containing declaration (if any); limit for searching |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1052 ;; backwards for it. |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1053 decl-start decl-search-lim |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1054 ;; The result from `c-forward-decl-or-cast-1'. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1055 decl-or-cast |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1056 ;; The maximum of the end positions of all the checked type |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1057 ;; decl expressions in the successfully identified |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1058 ;; declarations. The position might be either before or |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1059 ;; after the syntactic whitespace following the last token |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1060 ;; in the type decl expression. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1061 (max-type-decl-end 0) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1062 ;; Same as `max-type-decl-*', but used when we're before |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1063 ;; `token-pos'. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1064 (max-type-decl-end-before-token 0) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1065 ;; Set according to the context to direct the heuristics for |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1066 ;; recognizing C++ templates. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1067 c-restricted-<>-arglists |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1068 ;; Turn on recording of identifier ranges in |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1069 ;; `c-forward-decl-or-cast-1' and `c-forward-label' for |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1070 ;; later fontification. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1071 (c-record-type-identifiers t) |
76986
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1072 label-type |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1073 c-record-ref-identifiers |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1074 ;; Make `c-forward-type' calls mark up template arglists if |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1075 ;; it finds any. That's necessary so that we later will |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1076 ;; stop inside them to fontify types there. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1077 (c-parse-and-markup-<>-arglists t) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1078 ;; The font-lock package in Emacs is known to clobber |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1079 ;; `parse-sexp-lookup-properties' (when it exists). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1080 (parse-sexp-lookup-properties |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1081 (cc-eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1082 (boundp 'parse-sexp-lookup-properties)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1083 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1084 ;; Below we fontify a whole declaration even when it crosses the limit, |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1085 ;; to avoid gaps when lazy-lock fontifies the file a screenful at a |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1086 ;; time. That is however annoying during editing, e.g. the following is |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1087 ;; a common situation while the first line is being written: |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1088 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1089 ;; my_variable |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1090 ;; some_other_variable = 0; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1091 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1092 ;; font-lock will put the limit at the beginning of the second line |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1093 ;; here, and if we go past it we'll fontify "my_variable" as a type and |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1094 ;; "some_other_variable" as an identifier, and the latter will not |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1095 ;; correct itself until the second line is changed. To avoid that we |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1096 ;; narrow to the limit if the region to fontify is a single line. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1097 (narrow-to-region |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1098 (point-min) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1099 (if (<= limit (c-point 'bonl)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1100 (save-excursion |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1101 ;; Narrow after any operator chars following the limit though, |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1102 ;; since those characters can be useful in recognizing a |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1103 ;; declaration (in particular the '{' that opens a function body |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1104 ;; after the header). |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1105 (goto-char limit) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1106 (skip-chars-forward c-nonsymbol-chars) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1107 (point)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1108 limit)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1109 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1110 (c-find-decl-spots |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1111 limit |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1112 c-decl-start-re |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1113 c-font-lock-maybe-decl-faces |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1114 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1115 (lambda (match-pos inside-macro) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1116 (setq start-pos (point)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1117 (when |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1118 ;; The result of the form below is true when we don't recognize a |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1119 ;; declaration or cast. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1120 (if (and (eq (get-text-property (point) 'face) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1121 'font-lock-keyword-face) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1122 (looking-at c-not-decl-init-keywords)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1123 ;; Don't do anything more if we're looking at a keyword that |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1124 ;; can't start a declaration. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1125 t |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1126 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1127 ;; Set `context' and `c-restricted-<>-arglists'. Look for |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1128 ;; "<" for the sake of C++-style template arglists. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1129 ;; Ignore "(" when it's part of a control flow construct |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1130 ;; (e.g. "for ("). |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1131 (let ((type (and (> match-pos (point-min)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1132 (c-get-char-property (1- match-pos) 'c-type)))) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1133 (cond ((not (memq (char-before match-pos) '(?\( ?, ?\[ ?<))) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1134 (setq context nil |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1135 c-restricted-<>-arglists nil)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1136 ;; A control flow expression |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1137 ((and (eq (char-before match-pos) ?\() |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1138 (save-excursion |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1139 (goto-char match-pos) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1140 (backward-char) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1141 (c-backward-token-2) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1142 (looking-at c-block-stmt-2-key))) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1143 (setq context nil |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1144 c-restricted-<>-arglists t)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1145 ;; Near BOB. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1146 ((<= match-pos (point-min)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1147 (setq context 'arglist |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1148 c-restricted-<>-arglists t)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1149 ;; Got a cached hit in a declaration arglist. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1150 ((eq type 'c-decl-arg-start) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1151 (setq context 'decl |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1152 c-restricted-<>-arglists nil)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1153 ;; Inside an angle bracket arglist. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1154 ((or (eq type 'c-<>-arg-sep) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1155 (eq (char-before match-pos) ?<)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1156 (setq context '<> |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1157 c-restricted-<>-arglists nil)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1158 ;; Got a cached hit in some other type of arglist. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1159 (type |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1160 (setq context 'arglist |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1161 c-restricted-<>-arglists t)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1162 ((if inside-macro |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1163 (< match-pos max-type-decl-end-before-token) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1164 (< match-pos max-type-decl-end)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1165 ;; The point is within the range of a previously |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1166 ;; encountered type decl expression, so the arglist |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1167 ;; is probably one that contains declarations. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1168 ;; However, if `c-recognize-paren-inits' is set it |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1169 ;; might also be an initializer arglist. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1170 (setq context 'decl |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1171 c-restricted-<>-arglists nil) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1172 ;; The result of this check is cached with a char |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1173 ;; property on the match token, so that we can look |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1174 ;; it up again when refontifying single lines in a |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1175 ;; multiline declaration. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1176 (c-put-char-property (1- match-pos) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1177 'c-type 'c-decl-arg-start)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1178 (t (setq context 'arglist |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1179 c-restricted-<>-arglists t)))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1180 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1181 ;; Check we haven't missed a preceding "typedef". |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1182 (when (not (looking-at c-typedef-key)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1183 (c-backward-syntactic-ws) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1184 (c-backward-token-2) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1185 (or (looking-at c-typedef-key) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1186 (goto-char start-pos))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1187 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1188 ;; Now analyze the construct. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1189 (setq decl-or-cast (c-forward-decl-or-cast-1 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1190 match-pos context last-cast-end)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1191 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1192 (if (not decl-or-cast) |
111139
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1193 ;; Are we at a declarator? Try to go back to the declaration |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1194 ;; to check this. Note that `c-beginning-of-decl-1' is slow, |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1195 ;; so we cache its result between calls. |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1196 (let (paren-state bod-res encl-pos is-typedef) |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1197 (goto-char start-pos) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1198 (save-excursion |
111139
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1199 (unless (and decl-search-lim |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1200 (eq decl-search-lim |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1201 (save-excursion |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1202 (c-syntactic-skip-backward "^;" nil t) |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1203 (point)))) |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1204 (setq decl-search-lim |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1205 (and (c-syntactic-skip-backward "^;" nil t) (point))) |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1206 (setq bod-res (car (c-beginning-of-decl-1 decl-search-lim))) |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1207 (if (and (eq bod-res 'same) |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1208 (progn |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1209 (c-backward-syntactic-ws) |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1210 (eq (char-before) ?\}))) |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1211 (c-beginning-of-decl-1 decl-search-lim)) |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1212 (setq decl-start (point)))) |
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1213 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1214 (save-excursion |
111139
d383b5e03a3d
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
Alan Mackenzie <acm@muc.de>
parents:
110888
diff
changeset
|
1215 (goto-char decl-start) |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1216 ;; We're now putatively at the declaration. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1217 (setq paren-state (c-parse-state)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1218 ;; At top level or inside a "{"? |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1219 (if (or (not (setq encl-pos |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1220 (c-most-enclosing-brace paren-state))) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1221 (eq (char-after encl-pos) ?\{)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1222 (progn |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1223 (when (looking-at c-typedef-key) ; "typedef" |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1224 (setq is-typedef t) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1225 (goto-char (match-end 0)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1226 (c-forward-syntactic-ws)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1227 ;; At a real declaration? |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1228 (if (memq (c-forward-type t) '(t known found)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1229 (progn |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1230 (c-font-lock-declarators limit t is-typedef) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1231 nil) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1232 ;; False alarm. Return t to go on to the next check. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1233 (goto-char start-pos) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1234 t)) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1235 t))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1236 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1237 (if (eq decl-or-cast 'cast) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1238 ;; Save the position after the previous cast so we can feed |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1239 ;; it to `c-forward-decl-or-cast-1' in the next round. That |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1240 ;; helps it discover cast chains like "(a) (b) c". |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1241 (setq last-cast-end (point)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1242 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1243 ;; Set `max-type-decl-end' or `max-type-decl-end-before-token' |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1244 ;; under the assumption that we're after the first type decl |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1245 ;; expression in the declaration now. That's not really true; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1246 ;; we could also be after a parenthesized initializer |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1247 ;; expression in C++, but this is only used as a last resort |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1248 ;; to slant ambiguous expression/declarations, and overall |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1249 ;; it's worth the risk to occasionally fontify an expression |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1250 ;; as a declaration in an initializer expression compared to |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1251 ;; getting ambiguous things in normal function prototypes |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1252 ;; fontified as expressions. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1253 (if inside-macro |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1254 (when (> (point) max-type-decl-end-before-token) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1255 (setq max-type-decl-end-before-token (point))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1256 (when (> (point) max-type-decl-end) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1257 (setq max-type-decl-end (point)))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1258 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1259 ;; Back up to the type to fontify the declarator(s). |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1260 (goto-char (car decl-or-cast)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1261 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1262 (let ((decl-list |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1263 (if context |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1264 ;; Should normally not fontify a list of |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1265 ;; declarators inside an arglist, but the first |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1266 ;; argument in the ';' separated list of a "for" |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1267 ;; statement is an exception. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1268 (when (eq (char-before match-pos) ?\() |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1269 (save-excursion |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1270 (goto-char (1- match-pos)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1271 (c-backward-syntactic-ws) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1272 (and (c-simple-skip-symbol-backward) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1273 (looking-at c-paren-stmt-key)))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1274 t))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1275 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1276 ;; Fix the `c-decl-id-start' or `c-decl-type-start' property |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1277 ;; before the first declarator if it's a list. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1278 ;; `c-font-lock-declarators' handles the rest. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1279 (when decl-list |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1280 (save-excursion |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1281 (c-backward-syntactic-ws) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1282 (unless (bobp) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1283 (c-put-char-property (1- (point)) 'c-type |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1284 (if (cdr decl-or-cast) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1285 'c-decl-type-start |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1286 'c-decl-id-start))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1287 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1288 (c-font-lock-declarators |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1289 (point-max) decl-list (cdr decl-or-cast)))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1290 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1291 ;; A cast or declaration has been successfully identified, so do |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1292 ;; all the fontification of types and refs that's been recorded. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1293 (c-fontify-recorded-types-and-refs) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1294 nil)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1295 |
76986
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1296 ;; It was a false alarm. Check if we're in a label (or other |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1297 ;; construct with `:' except bitfield) instead. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1298 (goto-char start-pos) |
76986
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1299 (when (setq label-type (c-forward-label t match-pos nil)) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1300 ;; Can't use `c-fontify-types-and-refs' here since we |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1301 ;; use the label face at times. |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1302 (cond ((eq label-type 'goto-target) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1303 (c-put-font-lock-face (caar c-record-ref-identifiers) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1304 (cdar c-record-ref-identifiers) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1305 c-label-face-name)) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1306 ((eq label-type 'qt-1kwd-colon) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1307 (c-put-font-lock-face (caar c-record-ref-identifiers) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1308 (cdar c-record-ref-identifiers) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1309 'font-lock-keyword-face)) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1310 ((eq label-type 'qt-2kwds-colon) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1311 (mapc |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1312 (lambda (kwd) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1313 (c-put-font-lock-face (car kwd) (cdr kwd) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1314 'font-lock-keyword-face)) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1315 c-record-ref-identifiers))) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1316 (setq c-record-ref-identifiers nil) |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1317 ;; `c-forward-label' has probably added a `c-decl-end' |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1318 ;; marker, so return t to `c-find-decl-spots' to signal |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1319 ;; that. |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1320 t)))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1321 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1322 nil))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1323 |
111241
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1324 (defun c-font-lock-enum-tail (limit) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1325 ;; Fontify an enum's identifiers when POINT is within the enum's brace |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1326 ;; block. |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1327 ;; |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1328 ;; This function will be called from font-lock for a region bounded by POINT |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1329 ;; and LIMIT, as though it were to identify a keyword for |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1330 ;; font-lock-keyword-face. It always returns NIL to inhibit this and |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1331 ;; prevent a repeat invocation. See elisp/lispref page "Search-based |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1332 ;; Fontification". |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1333 ;; |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1334 ;; Note that this function won't attempt to fontify beyond the end of the |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1335 ;; current enum block, if any. |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1336 (let* ((paren-state (c-parse-state)) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1337 (encl-pos (c-most-enclosing-brace paren-state)) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1338 (start (point)) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1339 ) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1340 (when (and |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1341 encl-pos |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1342 (eq (char-after encl-pos) ?\{) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1343 (save-excursion |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1344 (goto-char encl-pos) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1345 (c-backward-syntactic-ws) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1346 (c-simple-skip-symbol-backward) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1347 (or (looking-at c-brace-list-key) ; "enum" |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1348 (progn (c-backward-syntactic-ws) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1349 (c-simple-skip-symbol-backward) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1350 (looking-at c-brace-list-key))))) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1351 (c-syntactic-skip-backward "^{," nil t) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1352 (c-put-char-property (1- (point)) 'c-type 'c-decl-id-start) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1353 |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1354 (c-forward-syntactic-ws) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1355 (c-font-lock-declarators limit t nil))) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1356 nil) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1357 |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1358 (c-lang-defconst c-simple-decl-matchers |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1359 "Simple font lock matchers for types and declarations. These are used |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1360 on level 2 only and so aren't combined with `c-complex-decl-matchers'." |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1361 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1362 t `(;; Objective-C methods. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1363 ,@(when (c-major-mode-is 'objc-mode) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1364 `((,(c-lang-const c-opt-method-key) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1365 (,(byte-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1366 (lambda (limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1367 (let (;; The font-lock package in Emacs is known to clobber |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1368 ;; `parse-sexp-lookup-properties' (when it exists). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1369 (parse-sexp-lookup-properties |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1370 (cc-eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1371 (boundp 'parse-sexp-lookup-properties)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1372 (save-restriction |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1373 (narrow-to-region (point-min) limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1374 (c-font-lock-objc-method))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1375 nil)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1376 (goto-char (match-end 1)))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1377 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1378 ;; Fontify all type names and the identifiers in the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1379 ;; declarations they might start. Use eval here since |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1380 ;; `c-known-type-key' gets its value from |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1381 ;; `*-font-lock-extra-types' on mode init. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1382 (eval . (list ,(c-make-font-lock-search-function |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1383 'c-known-type-key |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1384 '(1 'font-lock-type-face t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1385 '((c-font-lock-declarators limit t nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1386 (save-match-data |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1387 (goto-char (match-end 1)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1388 (c-forward-syntactic-ws)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1389 (goto-char (match-end 1)))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1390 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1391 ;; Fontify types preceded by `c-type-prefix-kwds' and the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1392 ;; identifiers in the declarations they might start. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1393 ,@(when (c-lang-const c-type-prefix-kwds) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1394 (let* ((prefix-re (c-make-keywords-re nil |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1395 (c-lang-const c-type-prefix-kwds))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1396 (type-match (+ 2 |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1397 (regexp-opt-depth prefix-re) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1398 (c-lang-const c-simple-ws-depth)))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1399 `((,(c-make-font-lock-search-function |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1400 (concat "\\<\\(" prefix-re "\\)" ; 1 |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1401 (c-lang-const c-simple-ws) "+" |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1402 (concat "\\(" ; 2 + prefix-re + c-simple-ws |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1403 (c-lang-const c-symbol-key) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1404 "\\)")) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1405 `(,type-match |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1406 'font-lock-type-face t) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1407 `((c-font-lock-declarators limit t nil) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1408 (save-match-data |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1409 (goto-char (match-end ,type-match)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1410 (c-forward-syntactic-ws)) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1411 (goto-char (match-end ,type-match)))))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1412 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1413 ;; Fontify special declarations that lacks a type. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1414 ,@(when (c-lang-const c-typeless-decl-kwds) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1415 `((,(c-make-font-lock-search-function |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1416 (concat "\\<\\(" |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1417 (regexp-opt (c-lang-const c-typeless-decl-kwds)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1418 "\\)\\>") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1419 '((c-font-lock-declarators limit t nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1420 (save-match-data |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1421 (goto-char (match-end 1)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1422 (c-forward-syntactic-ws)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1423 (goto-char (match-end 1))))))) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1424 |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1425 ;; Fontify generic colon labels in languages that support them. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1426 ,@(when (c-lang-const c-recognize-colon-labels) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1427 `(c-font-lock-labels)))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1428 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1429 (c-lang-defconst c-complex-decl-matchers |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1430 "Complex font lock matchers for types and declarations. Used on level |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1431 3 and higher." |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1432 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1433 ;; Note: This code in this form dumps a number of functions into the |
76986
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1434 ;; resulting constant, `c-matchers-3'. At run time, font lock will call |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1435 ;; each of them as a "FUNCTION" (see Elisp page "Search-based |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1436 ;; Fontification"). The font lock region is delimited by POINT and the |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1437 ;; single parameter, LIMIT. Each of these functions returns NIL (thus |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1438 ;; inhibiting spurious font-lock-keyword-face highlighting and another |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1439 ;; call). |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1440 |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1441 t `(;; Initialize some things before the search functions below. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1442 c-font-lock-complex-decl-prepare |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1443 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1444 ,@(if (c-major-mode-is 'objc-mode) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1445 ;; Fontify method declarations in Objective-C, but first |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1446 ;; we have to put the `c-decl-end' `c-type' property on |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1447 ;; all the @-style directives that haven't been handled in |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1448 ;; `c-basic-matchers-before'. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1449 `(,(c-make-font-lock-search-function |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1450 (c-make-keywords-re t |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1451 ;; Exclude "@class" since that directive ends with a |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1452 ;; semicolon anyway. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1453 (delete "@class" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1454 (append (c-lang-const c-protection-kwds) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1455 (c-lang-const c-other-decl-kwds) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1456 nil))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1457 '((c-put-char-property (1- (match-end 1)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1458 'c-type 'c-decl-end))) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1459 c-font-lock-objc-methods)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1460 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1461 ;; Fontify all declarations, casts and normal labels. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1462 c-font-lock-declarations |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1463 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1464 ;; Fontify angle bracket arglists like templates in C++. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1465 ,@(when (c-lang-const c-recognize-<>-arglists) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1466 `(c-font-lock-<>-arglists)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1467 |
106837
855f55740303
Fix typos in comments.
Juanma Barranquero <lekktu@gmail.com>
parents:
106815
diff
changeset
|
1468 ;; The first two rules here mostly find occurrences that |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1469 ;; `c-font-lock-declarations' has found already, but not |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1470 ;; declarations containing blocks in the type (see note below). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1471 ;; It's also useful to fontify these everywhere to show e.g. when |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1472 ;; a type keyword is accidentally used as an identifier. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1473 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1474 ;; Fontify basic types. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1475 ,(let ((re (c-make-keywords-re nil |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1476 (c-lang-const c-primitive-type-kwds)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1477 (if (c-major-mode-is 'pike-mode) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1478 ;; No symbol is a keyword after "->" in Pike. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1479 `(,(concat "\\(\\=.?\\|[^>]\\|[^-]>\\)" |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1480 "\\<\\(" re "\\)\\>") |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1481 2 font-lock-type-face) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1482 `(,(concat "\\<\\(" re "\\)\\>") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1483 1 'font-lock-type-face))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1484 |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1485 ;; Fontify types preceded by `c-type-prefix-kwds' (e.g. "struct"). |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1486 ,@(when (c-lang-const c-type-prefix-kwds) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1487 `((,(byte-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1488 `(lambda (limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1489 (c-fontify-types-and-refs |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1490 ((c-promote-possible-types t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1491 ;; The font-lock package in Emacs is known to clobber |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1492 ;; `parse-sexp-lookup-properties' (when it exists). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1493 (parse-sexp-lookup-properties |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1494 (cc-eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1495 (boundp 'parse-sexp-lookup-properties)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1496 (save-restriction |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1497 ;; Narrow to avoid going past the limit in |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1498 ;; `c-forward-type'. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1499 (narrow-to-region (point) limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1500 (while (re-search-forward |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1501 ,(concat "\\<\\(" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1502 (c-make-keywords-re nil |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1503 (c-lang-const c-type-prefix-kwds)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1504 "\\)\\>") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1505 limit t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1506 (unless (c-skip-comments-and-strings limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1507 (c-forward-syntactic-ws) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1508 ;; Handle prefix declaration specifiers. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1509 (when (looking-at c-prefix-spec-kwds-re) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1510 (c-forward-keyword-clause 1)) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1511 ,(if (c-major-mode-is 'c++-mode) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1512 `(when (and (c-forward-type) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1513 (eq (char-after) ?=)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1514 ;; In C++ we additionally check for a "class |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1515 ;; X = Y" construct which is used in |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1516 ;; templates, to fontify Y as a type. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1517 (forward-char) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1518 (c-forward-syntactic-ws) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1519 (c-forward-type)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1520 `(c-forward-type)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1521 ))))))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1522 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1523 ;; Fontify symbols after closing braces as declaration |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1524 ;; identifiers under the assumption that they are part of |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1525 ;; declarations like "class Foo { ... } foo;". It's too |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1526 ;; expensive to check this accurately by skipping past the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1527 ;; brace block, so we use the heuristic that it's such a |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1528 ;; declaration if the first identifier is on the same line as |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1529 ;; the closing brace. `c-font-lock-declarations' will later |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1530 ;; override it if it turns out to be an new declaration, but |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1531 ;; it will be wrong if it's an expression (see the test |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1532 ;; decls-8.cc). |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1533 ;; ,@(when (c-lang-const c-opt-block-decls-with-vars-key) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1534 ;; `((,(c-make-font-lock-search-function |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1535 ;; (concat "}" |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1536 ;; (c-lang-const c-single-line-syntactic-ws) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1537 ;; "\\(" ; 1 + c-single-line-syntactic-ws-depth |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1538 ;; (c-lang-const c-type-decl-prefix-key) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1539 ;; "\\|" |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1540 ;; (c-lang-const c-symbol-key) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1541 ;; "\\)") |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1542 ;; `((c-font-lock-declarators limit t nil) ; That `nil' says use `font-lock-variable-name-face'; |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1543 ;; ; `t' would mean `font-lock-function-name-face'. |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1544 ;; (progn |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1545 ;; (c-put-char-property (match-beginning 0) 'c-type |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1546 ;; 'c-decl-id-start) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1547 ;; ; 'c-decl-type-start) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1548 ;; (goto-char (match-beginning |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1549 ;; ,(1+ (c-lang-const |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1550 ;; c-single-line-syntactic-ws-depth))))) |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1551 ;; (goto-char (match-end 0))))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1552 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1553 ;; Fontify the type in C++ "new" expressions. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1554 ,@(when (c-major-mode-is 'c++-mode) |
76986
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1555 ;; This pattern is a probably a "(MATCHER . ANCHORED-HIGHLIGHTER)" |
469570420bff
Fix fontification of labels, and other things with ":".
Alan Mackenzie <acm@muc.de>
parents:
75347
diff
changeset
|
1556 ;; (see Elisp page "Search-based Fontification"). |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1557 `(("\\<new\\>" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1558 (c-font-lock-c++-new)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1559 )) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1560 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1561 (defun c-font-lock-labels (limit) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1562 ;; Fontify all statement labels from the point to LIMIT. Assumes |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1563 ;; that strings and comments have been fontified already. Nil is |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1564 ;; always returned. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1565 ;; |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1566 ;; Note: This function is only used on decoration level 2; this is |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1567 ;; taken care of directly by the gargantuan |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1568 ;; `c-font-lock-declarations' on higher levels. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1569 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1570 ;; This function might do hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1571 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1572 (let (continue-pos id-start |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1573 ;; The font-lock package in Emacs is known to clobber |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1574 ;; `parse-sexp-lookup-properties' (when it exists). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1575 (parse-sexp-lookup-properties |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1576 (cc-eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1577 (boundp 'parse-sexp-lookup-properties)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1578 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1579 (while (re-search-forward ":[^:]" limit t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1580 (setq continue-pos (point)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1581 (goto-char (match-beginning 0)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1582 (unless (c-skip-comments-and-strings limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1583 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1584 (c-backward-syntactic-ws) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1585 (and (setq id-start (c-on-identifier)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1586 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1587 (not (get-text-property id-start 'face)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1588 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1589 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1590 (goto-char id-start) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1591 (c-backward-syntactic-ws) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1592 (or |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1593 ;; Check for a char that precedes a statement. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1594 (memq (char-before) '(?\} ?\{ ?\;)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1595 ;; Check for a preceding label. We exploit the font |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1596 ;; locking made earlier by this function. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1597 (and (eq (char-before) ?:) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1598 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1599 (backward-char) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1600 (c-backward-syntactic-ws) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1601 (not (bobp))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1602 (eq (get-text-property (1- (point)) 'face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1603 c-label-face-name)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1604 ;; Check for a keyword that precedes a statement. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1605 (c-after-conditional))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1606 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1607 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1608 ;; Got a label. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1609 (goto-char id-start) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1610 (looking-at c-symbol-key) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1611 (c-put-font-lock-face (match-beginning 0) (match-end 0) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1612 c-label-face-name))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1613 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1614 (goto-char continue-pos)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1615 nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1616 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1617 (c-lang-defconst c-basic-matchers-after |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1618 "Font lock matchers for various things that should be fontified after |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1619 generic casts and declarations are fontified. Used on level 2 and |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1620 higher." |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1621 |
111241
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1622 t `(,@(when (c-lang-const c-brace-id-list-kwds) |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1623 ;; Fontify the remaining identifiers inside an enum list when we start |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1624 ;; inside it. |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1625 `(c-font-lock-enum-tail |
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1626 ;; Fontify the identifiers inside enum lists. (The enum type |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1627 ;; name is handled by `c-simple-decl-matchers' or |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1628 ;; `c-complex-decl-matchers' below. |
111241
07533ffce7c3
progmodes/cc-fonts.el (c-font-lock-enum-tail): New function which
Alan Mackenzie <acm@muc.de>
parents:
111139
diff
changeset
|
1629 (,(c-make-font-lock-search-function |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1630 (concat |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1631 "\\<\\(" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1632 (c-make-keywords-re nil (c-lang-const c-brace-id-list-kwds)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1633 "\\)\\>" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1634 ;; Disallow various common punctuation chars that can't come |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1635 ;; before the '{' of the enum list, to avoid searching too far. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1636 "[^\]\[{}();,/#=]*" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1637 "{") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1638 '((c-font-lock-declarators limit t nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1639 (save-match-data |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1640 (goto-char (match-end 0)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1641 (c-put-char-property (1- (point)) 'c-type |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1642 'c-decl-id-start) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1643 (c-forward-syntactic-ws)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1644 (goto-char (match-end 0))))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1645 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1646 ;; Fontify labels after goto etc. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1647 ,@(when (c-lang-const c-before-label-kwds) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1648 `(;; (Got three different interpretation levels here, |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1649 ;; which makes it a bit complicated: 1) The backquote |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1650 ;; stuff is expanded when compiled or loaded, 2) the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1651 ;; eval form is evaluated at font-lock setup (to |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1652 ;; substitute c-label-face-name correctly), and 3) the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1653 ;; resulting structure is interpreted during |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1654 ;; fontification.) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1655 (eval |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1656 . ,(let* ((c-before-label-re |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1657 (c-make-keywords-re nil |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1658 (c-lang-const c-before-label-kwds)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1659 `(list |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1660 ,(concat "\\<\\(" c-before-label-re "\\)\\>" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1661 "\\s *" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1662 "\\(" ; identifier-offset |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1663 (c-lang-const c-symbol-key) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1664 "\\)") |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1665 (list ,(+ (regexp-opt-depth c-before-label-re) 2) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1666 c-label-face-name nil t)))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1667 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1668 ;; Fontify the clauses after various keywords. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1669 ,@(when (or (c-lang-const c-type-list-kwds) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1670 (c-lang-const c-ref-list-kwds) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1671 (c-lang-const c-colon-type-list-kwds) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1672 (c-lang-const c-paren-type-kwds)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1673 `((,(c-make-font-lock-search-function |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1674 (concat "\\<\\(" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1675 (c-make-keywords-re nil |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1676 (append (c-lang-const c-type-list-kwds) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1677 (c-lang-const c-ref-list-kwds) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1678 (c-lang-const c-colon-type-list-kwds) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1679 (c-lang-const c-paren-type-kwds))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1680 "\\)\\>") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1681 '((c-fontify-types-and-refs ((c-promote-possible-types t)) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1682 (c-forward-keyword-clause 1) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1683 (if (> (point) limit) (goto-char limit)))))))) |
109599
c18dffa2ba46
Enhance Java Mode to handle Java 5.0 (Tiger) and Java 6 (Mustang).
Alan Mackenzie <acm@muc.de>
parents:
106837
diff
changeset
|
1684 |
c18dffa2ba46
Enhance Java Mode to handle Java 5.0 (Tiger) and Java 6 (Mustang).
Alan Mackenzie <acm@muc.de>
parents:
106837
diff
changeset
|
1685 ,@(when (c-major-mode-is 'java-mode) |
c18dffa2ba46
Enhance Java Mode to handle Java 5.0 (Tiger) and Java 6 (Mustang).
Alan Mackenzie <acm@muc.de>
parents:
106837
diff
changeset
|
1686 `((eval . (list "\\<\\(@[a-zA-Z0-9]+\\)\\>" 1 c-annotation-face)))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1687 )) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1688 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1689 (c-lang-defconst c-matchers-1 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1690 t (c-lang-const c-cpp-matchers)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1691 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1692 (c-lang-defconst c-matchers-2 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1693 t (append (c-lang-const c-matchers-1) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1694 (c-lang-const c-basic-matchers-before) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1695 (c-lang-const c-simple-decl-matchers) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1696 (c-lang-const c-basic-matchers-after))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1697 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1698 (c-lang-defconst c-matchers-3 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1699 t (append (c-lang-const c-matchers-1) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1700 (c-lang-const c-basic-matchers-before) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1701 (c-lang-const c-complex-decl-matchers) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1702 (c-lang-const c-basic-matchers-after))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1703 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1704 (defun c-compose-keywords-list (base-list) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1705 ;; Incorporate the font lock keyword lists according to |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1706 ;; `c-doc-comment-style' on the given keyword list and return it. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1707 ;; This is used in the function bindings of the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1708 ;; `*-font-lock-keywords-*' symbols since we have to build the list |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1709 ;; when font-lock is initialized. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1710 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1711 (unless (memq c-doc-face-name c-literal-faces) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1712 (setq c-literal-faces (cons c-doc-face-name c-literal-faces))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1713 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1714 (let* ((doc-keywords |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1715 (if (consp (car-safe c-doc-comment-style)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1716 (cdr-safe (or (assq c-buffer-is-cc-mode c-doc-comment-style) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1717 (assq 'other c-doc-comment-style))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1718 c-doc-comment-style)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1719 (list (nconc (apply 'nconc |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1720 (mapcar |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1721 (lambda (doc-style) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1722 (let ((sym (intern |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1723 (concat (symbol-name doc-style) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1724 "-font-lock-keywords")))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1725 (cond ((fboundp sym) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1726 (funcall sym)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1727 ((boundp sym) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1728 (append (eval sym) nil))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1729 (if (listp doc-keywords) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1730 doc-keywords |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1731 (list doc-keywords)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1732 base-list))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1733 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1734 ;; Kludge: If `c-font-lock-complex-decl-prepare' is on the list we |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1735 ;; move it first since the doc comment font lockers might add |
51829
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
1736 ;; `c-type' text properties, so they have to be cleared before that. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1737 (when (memq 'c-font-lock-complex-decl-prepare list) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1738 (setq list (cons 'c-font-lock-complex-decl-prepare |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1739 (delq 'c-font-lock-complex-decl-prepare |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1740 (append list nil))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1741 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1742 list)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1743 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1744 (defun c-override-default-keywords (def-var) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1745 ;; This is used to override the value on a `*-font-lock-keywords' |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1746 ;; variable only if it's nil or has the same value as one of the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1747 ;; `*-font-lock-keywords-*' variables. Older font-lock packages |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1748 ;; define a default value for `*-font-lock-keywords' which we want |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1749 ;; to override, but we should otoh avoid clobbering a user setting. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1750 ;; This heuristic for that isn't perfect, but I can't think of any |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1751 ;; better. /mast |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1752 (when (and (boundp def-var) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1753 (memq (symbol-value def-var) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1754 (cons nil |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1755 (mapcar |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1756 (lambda (suffix) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1757 (let ((sym (intern (concat (symbol-name def-var) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1758 suffix)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1759 (and (boundp sym) (symbol-value sym)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1760 '("-1" "-2" "-3"))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1761 ;; The overriding is done by unbinding the variable so that the normal |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1762 ;; defvar will install its default value later on. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1763 (makunbound def-var))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1764 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1765 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1766 ;;; C. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1767 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1768 (c-override-default-keywords 'c-font-lock-keywords) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1769 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1770 (defconst c-font-lock-keywords-1 (c-lang-const c-matchers-1 c) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1771 "Minimal font locking for C mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1772 Fontifies only preprocessor directives (in addition to the syntactic |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1773 fontification of strings and comments).") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1774 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1775 (defconst c-font-lock-keywords-2 (c-lang-const c-matchers-2 c) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1776 "Fast normal font locking for C mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1777 In addition to `c-font-lock-keywords-1', this adds fontification of |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1778 keywords, simple types, declarations that are easy to recognize, the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1779 user defined types on `c-font-lock-extra-types', and the doc comment |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1780 styles specified by `c-doc-comment-style'.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1781 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1782 (defconst c-font-lock-keywords-3 (c-lang-const c-matchers-3 c) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1783 "Accurate normal font locking for C mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1784 Like `c-font-lock-keywords-2' but detects declarations in a more |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1785 accurate way that works in most cases for arbitrary types without the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1786 need for `c-font-lock-extra-types'.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1787 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1788 (defvar c-font-lock-keywords c-font-lock-keywords-3 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1789 "Default expressions to highlight in C mode.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1790 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1791 (defun c-font-lock-keywords-2 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1792 (c-compose-keywords-list c-font-lock-keywords-2)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1793 (defun c-font-lock-keywords-3 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1794 (c-compose-keywords-list c-font-lock-keywords-3)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1795 (defun c-font-lock-keywords () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1796 (c-compose-keywords-list c-font-lock-keywords)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1797 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1798 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1799 ;;; C++. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1800 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1801 (defun c-font-lock-c++-new (limit) |
110888
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1802 ;; FIXME!!! Put in a comment about the context of this function's |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1803 ;; invocation. I think it's called as an ANCHORED-MATCHER within an |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1804 ;; ANCHORED-HIGHLIGHTER. (2007/2/10). |
fb9b207b7488
Enhance fontification of declarators to take account of the
Alan Mackenzie <acm@muc.de>
parents:
110015
diff
changeset
|
1805 ;; |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1806 ;; Assuming point is after a "new" word, check that it isn't inside |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1807 ;; a string or comment, and if so try to fontify the type in the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1808 ;; allocation expression. Nil is always returned. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1809 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1810 ;; As usual, C++ takes the prize in coming up with a hard to parse |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1811 ;; syntax. :P |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1812 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1813 ;; This function might do hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1814 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1815 (unless (c-skip-comments-and-strings limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1816 (save-excursion |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1817 (catch 'false-alarm |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1818 ;; A "new" keyword is followed by one to three expressions, where |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1819 ;; the type is the middle one, and the only required part. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1820 (let (expr1-pos expr2-pos |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1821 ;; Enable recording of identifier ranges in `c-forward-type' |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1822 ;; etc for later fontification. Not using |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1823 ;; `c-fontify-types-and-refs' here since the ranges should |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1824 ;; be fontified selectively only when an allocation |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1825 ;; expression is successfully recognized. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1826 (c-record-type-identifiers t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1827 c-record-ref-identifiers |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1828 ;; The font-lock package in Emacs is known to clobber |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1829 ;; `parse-sexp-lookup-properties' (when it exists). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1830 (parse-sexp-lookup-properties |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1831 (cc-eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1832 (boundp 'parse-sexp-lookup-properties)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1833 (c-forward-syntactic-ws) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1834 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1835 ;; The first placement arglist is always parenthesized, if it |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1836 ;; exists. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1837 (when (eq (char-after) ?\() |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1838 (setq expr1-pos (1+ (point))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1839 (condition-case nil |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1840 (c-forward-sexp) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1841 (scan-error (throw 'false-alarm t))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1842 (c-forward-syntactic-ws)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1843 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1844 ;; The second expression is either a type followed by some "*" or |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1845 ;; "[...]" or similar, or a parenthesized type followed by a full |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1846 ;; identifierless declarator. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1847 (setq expr2-pos (1+ (point))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1848 (cond ((eq (char-after) ?\()) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1849 ((let ((c-promote-possible-types t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1850 (c-forward-type))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1851 (t (setq expr2-pos nil))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1852 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1853 (when expr1-pos |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1854 (cond |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1855 ((not expr2-pos) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1856 ;; No second expression, so the first has to be a |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1857 ;; parenthesized type. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1858 (goto-char expr1-pos) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1859 (let ((c-promote-possible-types t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1860 (c-forward-type))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1861 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1862 ((eq (char-before expr2-pos) ?\() |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1863 ;; Got two parenthesized expressions, so we have to look |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1864 ;; closer at them to decide which is the type. No need to |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1865 ;; handle `c-record-ref-identifiers' since all references |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1866 ;; has already been handled by other fontification rules. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1867 (let (expr1-res expr2-res) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1868 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1869 (goto-char expr1-pos) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1870 (when (setq expr1-res (c-forward-type)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1871 (unless (looking-at |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1872 (cc-eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1873 (concat (c-lang-const c-symbol-start c++) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1874 "\\|[*:\)\[]"))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1875 ;; There's something after the would-be type that |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1876 ;; can't be there, so this is a placement arglist. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1877 (setq expr1-res nil))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1878 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1879 (goto-char expr2-pos) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1880 (when (setq expr2-res (c-forward-type)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1881 (unless (looking-at |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1882 (cc-eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1883 (concat (c-lang-const c-symbol-start c++) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1884 "\\|[*:\)\[]"))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1885 ;; There's something after the would-be type that can't |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1886 ;; be there, so this is an initialization expression. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1887 (setq expr2-res nil)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1888 (when (and (c-go-up-list-forward) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1889 (progn (c-forward-syntactic-ws) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1890 (eq (char-after) ?\())) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1891 ;; If there's a third initialization expression |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1892 ;; then the second one is the type, so demote the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1893 ;; first match. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1894 (setq expr1-res nil))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1895 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1896 ;; We fontify the most likely type, with a preference for |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1897 ;; the first argument since a placement arglist is more |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1898 ;; unusual than an initializer. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1899 (cond ((memq expr1-res '(t known prefix))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1900 ((memq expr2-res '(t known prefix))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1901 ((eq expr1-res 'found) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1902 (let ((c-promote-possible-types t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1903 (goto-char expr1-pos) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1904 (c-forward-type))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1905 ((eq expr2-res 'found) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1906 (let ((c-promote-possible-types t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1907 (goto-char expr2-pos) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1908 (c-forward-type))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1909 ((and (eq expr1-res 'maybe) (not expr2-res)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1910 (let ((c-promote-possible-types t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1911 (goto-char expr1-pos) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1912 (c-forward-type))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1913 ((and (not expr1-res) (eq expr2-res 'maybe)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1914 (let ((c-promote-possible-types t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1915 (goto-char expr2-pos) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1916 (c-forward-type))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1917 ;; If both type matches are 'maybe then we're |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1918 ;; too uncertain to promote either of them. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1919 ))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1920 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1921 ;; Fontify the type that now is recorded in |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1922 ;; `c-record-type-identifiers', if any. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1923 (c-fontify-recorded-types-and-refs))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1924 nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1925 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1926 (c-override-default-keywords 'c++-font-lock-keywords) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1927 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1928 (defconst c++-font-lock-keywords-1 (c-lang-const c-matchers-1 c++) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1929 "Minimal font locking for C++ mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1930 Fontifies only preprocessor directives (in addition to the syntactic |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1931 fontification of strings and comments).") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1932 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1933 (defconst c++-font-lock-keywords-2 (c-lang-const c-matchers-2 c++) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1934 "Fast normal font locking for C++ mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1935 In addition to `c++-font-lock-keywords-1', this adds fontification of |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1936 keywords, simple types, declarations that are easy to recognize, the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1937 user defined types on `c++-font-lock-extra-types', and the doc comment |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1938 styles specified by `c-doc-comment-style'.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1939 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1940 (defconst c++-font-lock-keywords-3 (c-lang-const c-matchers-3 c++) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1941 "Accurate normal font locking for C++ mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1942 Like `c++-font-lock-keywords-2' but detects declarations in a more |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1943 accurate way that works in most cases for arbitrary types without the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1944 need for `c++-font-lock-extra-types'.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1945 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1946 (defvar c++-font-lock-keywords c++-font-lock-keywords-3 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1947 "Default expressions to highlight in C++ mode.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1948 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1949 (defun c++-font-lock-keywords-2 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1950 (c-compose-keywords-list c++-font-lock-keywords-2)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1951 (defun c++-font-lock-keywords-3 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1952 (c-compose-keywords-list c++-font-lock-keywords-3)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1953 (defun c++-font-lock-keywords () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1954 (c-compose-keywords-list c++-font-lock-keywords)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1955 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1956 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1957 ;;; Objective-C. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1958 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1959 (defun c-font-lock-objc-method () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1960 ;; Assuming the point is after the + or - that starts an Objective-C |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1961 ;; method declaration, fontify it. This must be done before normal |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1962 ;; casts, declarations and labels are fontified since they will get |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1963 ;; false matches in these things. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1964 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
1965 ;; This function might do hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1966 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1967 (c-fontify-types-and-refs |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1968 ((first t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1969 (c-promote-possible-types t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1970 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1971 (while (and |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1972 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1973 (c-forward-syntactic-ws) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1974 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1975 ;; An optional method type. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1976 (if (eq (char-after) ?\() |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1977 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1978 (forward-char) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1979 (c-forward-syntactic-ws) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1980 (c-forward-type) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1981 (prog1 (c-go-up-list-forward) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1982 (c-forward-syntactic-ws))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1983 t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1984 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1985 ;; The name. The first time it's the first part of |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1986 ;; the function name, the rest of the time it's an |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1987 ;; argument name. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1988 (looking-at c-symbol-key) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1989 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1990 (goto-char (match-end 0)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1991 (c-put-font-lock-face (match-beginning 0) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1992 (point) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1993 (if first |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1994 'font-lock-function-name-face |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1995 'font-lock-variable-name-face)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1996 (c-forward-syntactic-ws) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1997 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1998 ;; Another optional part of the function name. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
1999 (when (looking-at c-symbol-key) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2000 (goto-char (match-end 0)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2001 (c-put-font-lock-face (match-beginning 0) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2002 (point) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2003 'font-lock-function-name-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2004 (c-forward-syntactic-ws)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2005 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2006 ;; There's another argument if a colon follows. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2007 (eq (char-after) ?:))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2008 (forward-char) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2009 (setq first nil)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2010 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2011 (defun c-font-lock-objc-methods (limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2012 ;; Fontify method declarations in Objective-C. Nil is always |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2013 ;; returned. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2014 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2015 ;; This function might do hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2016 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2017 (let (;; The font-lock package in Emacs is known to clobber |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2018 ;; `parse-sexp-lookup-properties' (when it exists). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2019 (parse-sexp-lookup-properties |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2020 (cc-eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2021 (boundp 'parse-sexp-lookup-properties)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2022 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2023 (c-find-decl-spots |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2024 limit |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2025 "[-+]" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2026 nil |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2027 (lambda (match-pos inside-macro) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2028 (forward-char) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2029 (c-font-lock-objc-method)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2030 nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2031 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2032 (c-override-default-keywords 'objc-font-lock-keywords) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2033 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2034 (defconst objc-font-lock-keywords-1 (c-lang-const c-matchers-1 objc) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2035 "Minimal font locking for Objective-C mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2036 Fontifies only compiler directives (in addition to the syntactic |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2037 fontification of strings and comments).") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2038 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2039 (defconst objc-font-lock-keywords-2 (c-lang-const c-matchers-2 objc) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2040 "Fast normal font locking for Objective-C mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2041 In addition to `objc-font-lock-keywords-1', this adds fontification of |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2042 keywords, simple types, declarations that are easy to recognize, the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2043 user defined types on `objc-font-lock-extra-types', and the doc |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2044 comment styles specified by `c-doc-comment-style'.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2045 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2046 (defconst objc-font-lock-keywords-3 (c-lang-const c-matchers-3 objc) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2047 "Accurate normal font locking for Objective-C mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2048 Like `objc-font-lock-keywords-2' but detects declarations in a more |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2049 accurate way that works in most cases for arbitrary types without the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2050 need for `objc-font-lock-extra-types'.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2051 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2052 (defvar objc-font-lock-keywords objc-font-lock-keywords-3 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2053 "Default expressions to highlight in Objective-C mode.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2054 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2055 (defun objc-font-lock-keywords-2 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2056 (c-compose-keywords-list objc-font-lock-keywords-2)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2057 (defun objc-font-lock-keywords-3 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2058 (c-compose-keywords-list objc-font-lock-keywords-3)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2059 (defun objc-font-lock-keywords () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2060 (c-compose-keywords-list objc-font-lock-keywords)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2061 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2062 ;; Kludge to override the default value that |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2063 ;; `objc-font-lock-extra-types' might have gotten from the font-lock |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2064 ;; package. The value replaced here isn't relevant now anyway since |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2065 ;; those types are builtin and therefore listed directly in |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2066 ;; `c-primitive-type-kwds'. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2067 (when (equal (sort (append objc-font-lock-extra-types nil) 'string-lessp) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2068 '("BOOL" "Class" "IMP" "SEL")) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2069 (setq objc-font-lock-extra-types |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2070 (cc-eval-when-compile (list (concat "[" c-upper "]\\sw*"))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2071 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2072 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2073 ;;; Java. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2074 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2075 (c-override-default-keywords 'java-font-lock-keywords) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2076 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2077 (defconst java-font-lock-keywords-1 (c-lang-const c-matchers-1 java) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2078 "Minimal font locking for Java mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2079 Fontifies nothing except the syntactic fontification of strings and |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2080 comments.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2081 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2082 (defconst java-font-lock-keywords-2 (c-lang-const c-matchers-2 java) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2083 "Fast normal font locking for Java mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2084 In addition to `java-font-lock-keywords-1', this adds fontification of |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2085 keywords, simple types, declarations that are easy to recognize, the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2086 user defined types on `java-font-lock-extra-types', and the doc |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2087 comment styles specified by `c-doc-comment-style'.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2088 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2089 (defconst java-font-lock-keywords-3 (c-lang-const c-matchers-3 java) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2090 "Accurate normal font locking for Java mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2091 Like `java-font-lock-keywords-2' but detects declarations in a more |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2092 accurate way that works in most cases for arbitrary types without the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2093 need for `java-font-lock-extra-types'.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2094 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2095 (defvar java-font-lock-keywords java-font-lock-keywords-3 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2096 "Default expressions to highlight in Java mode.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2097 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2098 (defun java-font-lock-keywords-2 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2099 (c-compose-keywords-list java-font-lock-keywords-2)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2100 (defun java-font-lock-keywords-3 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2101 (c-compose-keywords-list java-font-lock-keywords-3)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2102 (defun java-font-lock-keywords () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2103 (c-compose-keywords-list java-font-lock-keywords)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2104 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2105 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2106 ;;; CORBA IDL. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2107 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2108 (c-override-default-keywords 'idl-font-lock-keywords) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2109 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2110 (defconst idl-font-lock-keywords-1 (c-lang-const c-matchers-1 idl) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2111 "Minimal font locking for CORBA IDL mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2112 Fontifies nothing except the syntactic fontification of strings and |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2113 comments.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2114 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2115 (defconst idl-font-lock-keywords-2 (c-lang-const c-matchers-2 idl) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2116 "Fast normal font locking for CORBA IDL mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2117 In addition to `idl-font-lock-keywords-1', this adds fontification of |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2118 keywords, simple types, declarations that are easy to recognize, the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2119 user defined types on `idl-font-lock-extra-types', and the doc comment |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2120 styles specified by `c-doc-comment-style'.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2121 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2122 (defconst idl-font-lock-keywords-3 (c-lang-const c-matchers-3 idl) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2123 "Accurate normal font locking for CORBA IDL mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2124 Like `idl-font-lock-keywords-2' but detects declarations in a more |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2125 accurate way that works in most cases for arbitrary types without the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2126 need for `idl-font-lock-extra-types'.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2127 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2128 (defvar idl-font-lock-keywords idl-font-lock-keywords-3 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2129 "Default expressions to highlight in CORBA IDL mode.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2130 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2131 (defun idl-font-lock-keywords-2 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2132 (c-compose-keywords-list idl-font-lock-keywords-2)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2133 (defun idl-font-lock-keywords-3 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2134 (c-compose-keywords-list idl-font-lock-keywords-3)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2135 (defun idl-font-lock-keywords () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2136 (c-compose-keywords-list idl-font-lock-keywords)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2137 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2138 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2139 ;;; Pike. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2140 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2141 (c-override-default-keywords 'pike-font-lock-keywords) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2142 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2143 (defconst pike-font-lock-keywords-1 (c-lang-const c-matchers-1 pike) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2144 "Minimal font locking for Pike mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2145 Fontifies only preprocessor directives (in addition to the syntactic |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2146 fontification of strings and comments).") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2147 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2148 (defconst pike-font-lock-keywords-2 (c-lang-const c-matchers-2 pike) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2149 "Fast normal font locking for Pike mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2150 In addition to `pike-font-lock-keywords-1', this adds fontification of |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2151 keywords, simple types, declarations that are easy to recognize, the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2152 user defined types on `pike-font-lock-extra-types', and the doc |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2153 comment styles specified by `c-doc-comment-style'.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2154 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2155 (defconst pike-font-lock-keywords-3 (c-lang-const c-matchers-3 pike) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2156 "Accurate normal font locking for Pike mode. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2157 Like `pike-font-lock-keywords-2' but detects declarations in a more |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2158 accurate way that works in most cases for arbitrary types without the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2159 need for `pike-font-lock-extra-types'.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2160 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2161 (defvar pike-font-lock-keywords pike-font-lock-keywords-3 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2162 "Default expressions to highlight in Pike mode.") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2163 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2164 (defun pike-font-lock-keywords-2 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2165 (c-compose-keywords-list pike-font-lock-keywords-2)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2166 (defun pike-font-lock-keywords-3 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2167 (c-compose-keywords-list pike-font-lock-keywords-3)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2168 (defun pike-font-lock-keywords () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2169 (c-compose-keywords-list pike-font-lock-keywords)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2170 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2171 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2172 ;;; Doc comments. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2173 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2174 (defun c-font-lock-doc-comments (prefix limit keywords) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2175 ;; Fontify the comments between the point and LIMIT whose start |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2176 ;; matches PREFIX with `c-doc-face-name'. Assumes comments have been |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2177 ;; fontified with `font-lock-comment-face' already. nil is always |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2178 ;; returned. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2179 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2180 ;; After the fontification of a matching comment, fontification |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2181 ;; according to KEYWORDS is applied inside it. It's a list like |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2182 ;; `font-lock-keywords' except that anchored matches and eval |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2183 ;; clauses aren't supported and that some abbreviated forms can't be |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2184 ;; used. The buffer is narrowed to the comment while KEYWORDS is |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2185 ;; applied; leading comment starters are included but trailing |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2186 ;; comment enders for block comment are not. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2187 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2188 ;; Note that faces added through KEYWORDS should never replace the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2189 ;; existing `c-doc-face-name' face since the existence of that face |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2190 ;; is used as a flag in other code to skip comments. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2191 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2192 ;; This function might do hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2193 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2194 (let (comment-beg region-beg) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2195 (if (eq (get-text-property (point) 'face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2196 'font-lock-comment-face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2197 ;; Handle the case when the fontified region starts inside a |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2198 ;; comment. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2199 (let ((range (c-literal-limits))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2200 (setq region-beg (point)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2201 (when range |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2202 (goto-char (car range))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2203 (when (looking-at prefix) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2204 (setq comment-beg (point))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2205 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2206 (while (or |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2207 comment-beg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2208 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2209 ;; Search for the prefix until a match is found at the start |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2210 ;; of a comment. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2211 (while (when (re-search-forward prefix limit t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2212 (setq comment-beg (match-beginning 0)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2213 (or (not (c-got-face-at comment-beg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2214 c-literal-faces)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2215 (and (/= comment-beg (point-min)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2216 (c-got-face-at (1- comment-beg) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2217 c-literal-faces)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2218 (setq comment-beg nil)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2219 (setq region-beg comment-beg)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2220 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2221 (if (eq (elt (parse-partial-sexp comment-beg (+ comment-beg 2)) 7) t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2222 ;; Collect a sequence of doc style line comments. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2223 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2224 (goto-char comment-beg) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2225 (while (and (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2226 (c-forward-single-comment) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2227 (skip-syntax-forward " ") |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2228 (< (point) limit)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2229 (looking-at prefix)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2230 (goto-char comment-beg) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2231 (c-forward-single-comment)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2232 (if (> (point) limit) (goto-char limit)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2233 (setq comment-beg nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2234 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2235 (let ((region-end (point)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2236 (keylist keywords) keyword matcher highlights) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2237 (c-put-font-lock-face region-beg region-end c-doc-face-name) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2238 (save-restriction |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2239 ;; Narrow to the doc comment. Among other things, this |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2240 ;; helps by making "^" match at the start of the comment. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2241 ;; Do not include a trailing block comment ender, though. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2242 (and (> region-end (1+ region-beg)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2243 (progn (goto-char region-end) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2244 (backward-char 2) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2245 (looking-at "\\*/")) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2246 (setq region-end (point))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2247 (narrow-to-region region-beg region-end) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2248 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2249 (while keylist |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2250 (setq keyword (car keylist) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2251 keylist (cdr keylist) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2252 matcher (car keyword)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2253 (goto-char region-beg) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2254 (while (if (stringp matcher) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2255 (re-search-forward matcher region-end t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2256 (funcall matcher region-end)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2257 (setq highlights (cdr keyword)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2258 (if (consp (car highlights)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2259 (while highlights |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2260 (font-lock-apply-highlight (car highlights)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2261 (setq highlights (cdr highlights))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2262 (font-lock-apply-highlight highlights)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2263 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2264 (goto-char region-end))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2265 nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2266 (put 'c-font-lock-doc-comments 'lisp-indent-function 2) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2267 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2268 (defun c-find-invalid-doc-markup (regexp limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2269 ;; Used to fontify invalid markup in doc comments after the correct |
106837
855f55740303
Fix typos in comments.
Juanma Barranquero <lekktu@gmail.com>
parents:
106815
diff
changeset
|
2270 ;; ones have been fontified: Find the first occurrence of REGEXP |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2271 ;; between the point and LIMIT that only is fontified with |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2272 ;; `c-doc-face-name'. If a match is found then submatch 0 surrounds |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2273 ;; the first char and t is returned, otherwise nil is returned. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2274 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2275 ;; This function might do hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2276 (let (start) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2277 (while (if (re-search-forward regexp limit t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2278 (not (eq (get-text-property |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2279 (setq start (match-beginning 0)) 'face) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2280 c-doc-face-name)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2281 (setq start nil))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2282 (when start |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2283 (store-match-data (list (copy-marker start) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2284 (copy-marker (1+ start)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2285 t))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2286 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2287 ;; GtkDoc patterns contributed by Masatake YAMATO <jet@gyve.org>. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2288 |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2289 (defconst gtkdoc-font-lock-doc-comments |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2290 (let ((symbol "[a-zA-Z0-9_]+") |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2291 (header "^ \\* ")) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2292 `((,(concat header "\\(" symbol "\\):[ \t]*$") |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2293 1 ,c-doc-markup-face-name prepend nil) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2294 (,(concat symbol "()") |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2295 0 ,c-doc-markup-face-name prepend nil) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2296 (,(concat header "\\(" "@" symbol "\\):") |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2297 1 ,c-doc-markup-face-name prepend nil) |
82794
35605ce0fa34
(gtkdoc-font-lock-doc-comments): Highlight name of parameters in document body.
Masatake YAMATO <jet@gyve.org>
parents:
78234
diff
changeset
|
2298 (,(concat "[#%@]" symbol) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2299 0 ,c-doc-markup-face-name prepend nil)) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2300 )) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2301 |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2302 (defconst gtkdoc-font-lock-doc-protection |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2303 `(("< \\(public\\|private\\|protected\\) >" |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2304 1 ,c-doc-markup-face-name prepend nil))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2305 |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2306 (defconst gtkdoc-font-lock-keywords |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2307 `((,(lambda (limit) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2308 (c-font-lock-doc-comments "/\\*\\*$" limit |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2309 gtkdoc-font-lock-doc-comments) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2310 (c-font-lock-doc-comments "/\\*< " limit |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2311 gtkdoc-font-lock-doc-protection) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2312 )))) |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2313 |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2314 ;; Javadoc. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2315 |
51829
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2316 (defconst javadoc-font-lock-doc-comments |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2317 `(("{@[a-z]+[^}\n\r]*}" ; "{@foo ...}" markup. |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2318 0 ,c-doc-markup-face-name prepend nil) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2319 ("^\\(/\\*\\)?\\(\\s \\|\\*\\)*\\(@[a-z]+\\)" ; "@foo ..." markup. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2320 3 ,c-doc-markup-face-name prepend nil) |
51829
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2321 (,(concat "</?\\sw" ; HTML tags. |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2322 "\\(" |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2323 (concat "\\sw\\|\\s \\|[=\n\r*.:]\\|" |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2324 "\"[^\"]*\"\\|'[^']*'") |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2325 "\\)*>") |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2326 0 ,c-doc-markup-face-name prepend nil) |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2327 ("&\\(\\sw\\|[.:]\\)+;" ; HTML entities. |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2328 0 ,c-doc-markup-face-name prepend nil) |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2329 ;; Fontify remaining markup characters as invalid. Note |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2330 ;; that the Javadoc spec is hazy about when "@" is |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2331 ;; allowed in non-markup use. |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2332 (,(lambda (limit) |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2333 (c-find-invalid-doc-markup "[<>&]\\|{@" limit)) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2334 0 'font-lock-warning-face prepend nil))) |
51829
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2335 |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2336 (defconst javadoc-font-lock-keywords |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2337 `((,(lambda (limit) |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2338 (c-font-lock-doc-comments "/\\*\\*" limit |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2339 javadoc-font-lock-doc-comments))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2340 |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2341 ;; Pike autodoc. |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2342 |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2343 (defconst autodoc-decl-keywords |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2344 ;; Adorned regexp matching the keywords that introduce declarations |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2345 ;; in Pike Autodoc. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2346 (cc-eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2347 (c-make-keywords-re t '("@decl" "@elem" "@index" "@member") 'pike-mode))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2348 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2349 (defconst autodoc-decl-type-keywords |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2350 ;; Adorned regexp matching the keywords that are followed by a type. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2351 (cc-eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2352 (c-make-keywords-re t '("@elem" "@member") 'pike-mode))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2353 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2354 (defun autodoc-font-lock-line-markup (limit) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2355 ;; Fontify all line oriented keywords between the point and LIMIT. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2356 ;; Nil is always returned. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2357 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2358 ;; This function might do hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2359 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2360 (let ((line-re (concat "^\\(\\(/\\*!\\|\\s *\\(" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2361 c-current-comment-prefix |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2362 "\\)\\)\\s *\\)@[A-Za-z_-]+\\(\\s \\|$\\)")) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2363 (markup-faces (list c-doc-markup-face-name c-doc-face-name))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2364 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2365 (while (re-search-forward line-re limit t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2366 (goto-char (match-end 1)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2367 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2368 (if (looking-at autodoc-decl-keywords) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2369 (let* ((kwd-pos (point)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2370 (start (match-end 1)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2371 (pos start) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2372 end) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2373 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2374 (c-put-font-lock-face (point) pos markup-faces) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2375 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2376 ;; Put a declaration end mark at the markup keyword and |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2377 ;; remove the faces from the rest of the line so that it |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2378 ;; gets refontified as a declaration later on by |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2379 ;; `c-font-lock-declarations'. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2380 (c-put-char-property (1- pos) 'c-type 'c-decl-end) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2381 (goto-char pos) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2382 (while (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2383 (end-of-line) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2384 (setq end (point)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2385 (and (eq (char-before) ?@) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2386 (not (eobp)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2387 (progn (forward-char) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2388 (skip-syntax-forward " ") |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2389 (looking-at c-current-comment-prefix)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2390 (goto-char (match-end 0)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2391 (c-remove-font-lock-face pos (1- end)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2392 (c-put-font-lock-face (1- end) end markup-faces) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2393 (setq pos (point))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2394 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2395 ;; Include the final newline in the removed area. This |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2396 ;; has no visual effect but it avoids some tricky special |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2397 ;; cases in the testsuite wrt the differences in string |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2398 ;; fontification in Emacs vs XEmacs. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2399 (c-remove-font-lock-face pos (min (1+ (point)) (point-max))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2400 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2401 ;; Must handle string literals explicitly inside the declaration. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2402 (goto-char start) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2403 (while (re-search-forward |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2404 "\"\\([^\\\"]\\|\\\\.\\)*\"\\|'\\([^\\']\\|\\\\.\\)*'" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2405 end 'move) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2406 (c-put-font-lock-string-face (match-beginning 0) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2407 (point))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2408 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2409 ;; Fontify types after keywords that always are followed |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2410 ;; by them. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2411 (goto-char kwd-pos) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2412 (when (looking-at autodoc-decl-type-keywords) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2413 (c-fontify-types-and-refs ((c-promote-possible-types t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2414 (goto-char start) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2415 (c-forward-syntactic-ws) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2416 (c-forward-type)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2417 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2418 ;; Mark each whole line as markup, as long as the logical line |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2419 ;; continues. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2420 (while (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2421 (c-put-font-lock-face (point) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2422 (progn (end-of-line) (point)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2423 markup-faces) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2424 (and (eq (char-before) ?@) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2425 (not (eobp)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2426 (progn (forward-char) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2427 (skip-syntax-forward " ") |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2428 (looking-at c-current-comment-prefix)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2429 (goto-char (match-end 0)))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2430 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2431 nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2432 |
51829
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2433 (defconst autodoc-font-lock-doc-comments |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2434 `(("@\\(\\w+{\\|\\[\\([^\]@\n\r]\\|@@\\)*\\]\\|[@}]\\|$\\)" |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2435 ;; In-text markup. |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2436 0 ,c-doc-markup-face-name prepend nil) |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2437 (autodoc-font-lock-line-markup) |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2438 ;; Fontify remaining markup characters as invalid. |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2439 (,(lambda (limit) |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2440 (c-find-invalid-doc-markup "@" limit)) |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2441 0 'font-lock-warning-face prepend nil) |
51829
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2442 )) |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2443 |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2444 (defun autodoc-font-lock-keywords () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2445 ;; Note that we depend on that `c-current-comment-prefix' has got |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2446 ;; its proper value here. |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2447 ;; |
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
2448 ;; This function might do hidden buffer changes. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2449 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2450 ;; The `c-type' text property with `c-decl-end' is used to mark the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2451 ;; end of the `autodoc-decl-keywords' occurrences to fontify the |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2452 ;; following declarations. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2453 (setq c-type-decl-end-used t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2454 |
51829
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2455 `((,(lambda (limit) |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2456 (c-font-lock-doc-comments "/[*/]!" limit |
d508ffa43505
2003-07-08 Martin Stjernholm <bug-cc-mode@gnu.org>
Martin Stjernholm <mast@lysator.liu.se>
parents:
51714
diff
changeset
|
2457 autodoc-font-lock-doc-comments))))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2458 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2459 |
71754
60304f6ae360
* progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el,
Alan Mackenzie <acm@muc.de>
parents:
68773
diff
changeset
|
2460 ;; 2006-07-10: awk-font-lock-keywords has been moved back to cc-awk.el. |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2461 (cc-provide 'cc-fonts) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2462 |
93975
1e3a407766b9
Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92148
diff
changeset
|
2463 ;; arch-tag: 2f65f405-735f-4da5-8d4b-b957844c5203 |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
diff
changeset
|
2464 ;;; cc-fonts.el ends here |