Mercurial > emacs
annotate lisp/progmodes/cc-mode.el @ 49506:ac9e2eeeb03d
New format of AUTHORS file; list each
author name once followed by contributed and changed files.
Improve selection of entries to include in list, and generate list
of unrecognized entries indicating syntax errors in ChangeLog files.
(authors-coding-system): New variable.
(authors-many-files): Update doc string.
(authors-aliases): Change format. Now one entry with multiple
aliases per author.
(authors-valid-file-names, authors-renamed-files-alist)
(authors-renamed-files-regexps): New variables.
(authors-canonical-file-name): New function. Validates that file
exists or occurs in one of the above lists. Record unrecognized
file names in global authors-invalid-file-names list.
(authors-add): Change to record per-change counts.
(authors-canonical-author-name): Handle new format of
authors-aliases list.
(authors-scan-change-log): Rename FILE arg to LOG-FILE.
Change doc string to describe new entry format.
Only add author entries for valid file names.
(authors-print): Replace by authors-add-to-author-list.
(authors-add-to-author-list): New function which reorders
per-file entries and adds them to global authors-author-list.
(authors): Instead of authors-print to insert in *Authors* buffer,
use authors-add-to-author-list to reorder the list and then
insert result in *Authors* buffer with new format.
Generate *Authors Errors* compilation-mode buffer listing
unrecognized ChangeLog entries.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Wed, 29 Jan 2003 00:13:11 +0000 |
parents | 2c05c557df6c |
children | b025ca405045 |
rev | line source |
---|---|
18720 | 1 ;;; cc-mode.el --- major mode for editing C, C++, Objective-C, and Java code |
2 | |
36920 | 3 ;; Copyright (C) 1985,1987,1992-2001 Free Software Foundation, Inc. |
18720 | 4 |
30401
b85ee58b24ec
(c-initialize-cc-mode): Handling of obsolete
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
5 ;; Authors: 2000- Martin Stjernholm |
b85ee58b24ec
(c-initialize-cc-mode): Handling of obsolete
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
6 ;; 1998-1999 Barry A. Warsaw and Martin Stjernholm |
24282 | 7 ;; 1992-1997 Barry A. Warsaw |
18720 | 8 ;; 1987 Dave Detlefs and Stewart Clamen |
9 ;; 1985 Richard M. Stallman | |
24282 | 10 ;; Maintainer: bug-cc-mode@gnu.org |
18720 | 11 ;; Created: a long, long, time ago. adapted from the original c-mode.el |
12 ;; Keywords: c languages oop | |
13 | |
14 ;; This file is part of GNU Emacs. | |
15 | |
16 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
17 ;; it under the terms of the GNU General Public License as published by | |
18 ;; the Free Software Foundation; either version 2, or (at your option) | |
19 ;; any later version. | |
20 | |
21 ;; GNU Emacs is distributed in the hope that it will be useful, | |
22 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
23 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
24 ;; GNU General Public License for more details. | |
25 | |
26 ;; You should have received a copy of the GNU General Public License | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
27 ;; along with GNU Emacs; see the file COPYING. If not, write to |
36920 | 28 ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
18720 | 29 ;; Boston, MA 02111-1307, USA. |
30 | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
31 (defconst c-version "5.29" |
36920 | 32 "CC Mode version number.") |
33 | |
34 ;; NOTE: Read the commentary below for the right way to submit bug reports! | |
35 ;; NOTE: See the accompanying texinfo manual for details on using this mode! | |
36 | |
18720 | 37 ;;; Commentary: |
38 | |
39 ;; This package provides GNU Emacs major modes for editing C, C++, | |
24282 | 40 ;; Objective-C, Java, IDL and Pike code. As of the latest Emacs and |
41 ;; XEmacs releases, it is the default package for editing these | |
42 ;; languages. This package is called "CC Mode", and should be spelled | |
43 ;; exactly this way. | |
44 | |
45 ;; CC Mode supports K&R and ANSI C, ANSI C++, Objective-C, Java, | |
46 ;; CORBA's IDL, and Pike with a consistent indentation model across | |
47 ;; all modes. This indentation model is intuitive and very flexible, | |
48 ;; so that almost any desired style of indentation can be supported. | |
19253
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
49 ;; Installation, usage, and programming details are contained in an |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
50 ;; accompanying texinfo manual. |
18720 | 51 |
52 ;; CC Mode's immediate ancestors were, c++-mode.el, cplus-md.el, and | |
53 ;; cplus-md1.el.. | |
54 | |
55 ;; NOTE: This mode does not perform font-locking (a.k.a syntactic | |
56 ;; coloring, keyword highlighting, etc.) for any of the supported | |
57 ;; modes. Typically this is done by a package called font-lock.el | |
24282 | 58 ;; which we do *not* maintain. You should contact the Emacs or XEmacs |
18720 | 59 ;; maintainers for questions about coloring or highlighting in any |
60 ;; language mode. | |
61 | |
62 ;; To submit bug reports, type "C-c C-b". These will be sent to | |
24282 | 63 ;; bug-gnu-emacs@gnu.org (mirrored as the Usenet newsgroup |
64 ;; gnu.emacs.bug) as well as bug-cc-mode@gnu.org, which directly | |
65 ;; contacts the CC Mode maintainers. Questions can sent to | |
66 ;; help-gnu-emacs@gnu.org (mirrored as gnu.emacs.help) and/or | |
36920 | 67 ;; bug-cc-mode@gnu.org. Please do not send bugs or questions to our |
68 ;; personal accounts; we reserve the right to ignore such email! | |
18720 | 69 |
70 ;; Many, many thanks go out to all the folks on the beta test list. | |
71 ;; Without their patience, testing, insight, code contributions, and | |
72 ;; encouragement CC Mode would be a far inferior package. | |
73 | |
74 ;; You can get the latest version of CC Mode, including PostScript | |
75 ;; documentation and separate individual files from: | |
76 ;; | |
30401
b85ee58b24ec
(c-initialize-cc-mode): Handling of obsolete
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
77 ;; http://cc-mode.sourceforge.net/ |
18720 | 78 ;; |
24282 | 79 ;; You can join a moderated CC Mode announcement-only mailing list by |
80 ;; visiting | |
81 ;; | |
30401
b85ee58b24ec
(c-initialize-cc-mode): Handling of obsolete
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
82 ;; http://lists.sourceforge.net/mailman/listinfo/cc-mode-announce |
18720 | 83 |
84 ;;; Code: | |
85 | |
26817 | 86 (eval-when-compile |
87 (let ((load-path | |
36920 | 88 (if (and (boundp 'byte-compile-dest-file) |
89 (stringp byte-compile-dest-file)) | |
90 (cons (file-name-directory byte-compile-dest-file) load-path) | |
26817 | 91 load-path))) |
36920 | 92 (require 'cc-bytecomp))) |
21109
a0eda86dd0be
(c-initialize-cc-mode): Moved require's to top level.
Richard M. Stallman <rms@gnu.org>
parents:
20917
diff
changeset
|
93 |
36920 | 94 (cc-require 'cc-defs) |
95 (cc-require 'cc-menus) | |
96 (cc-require 'cc-vars) | |
97 (cc-require 'cc-langs) | |
98 (cc-require 'cc-styles) | |
99 (cc-require 'cc-engine) | |
100 (cc-require 'cc-cmds) | |
101 (cc-require 'cc-align) | |
102 | |
103 ;; Silence the compiler. | |
104 (cc-bytecomp-defvar comment-line-break-function) ; (X)Emacs 20+ | |
105 (cc-bytecomp-defvar adaptive-fill-first-line-regexp) ; Emacs 20+ | |
106 (cc-bytecomp-defun set-keymap-parents) ; XEmacs | |
107 | |
108 ;; Menu support for both XEmacs and Emacs. If you don't have easymenu | |
109 ;; with your version of Emacs, you are incompatible! | |
110 (require 'easymenu) | |
18720 | 111 |
112 | |
18847
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
113 ;; Other modes and packages which depend on CC Mode should do the |
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
114 ;; following to make sure everything is loaded and available for their |
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
115 ;; use: |
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
116 ;; |
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
117 ;; (require 'cc-mode) |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
118 ;; |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
119 ;; And in the major mode function: |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
120 ;; |
18847
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
121 ;; (c-initialize-cc-mode) |
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
122 |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
123 (defun c-leave-cc-mode-mode () |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
124 (setq c-buffer-is-cc-mode nil)) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
125 |
19253
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
126 ;;;###autoload |
24282 | 127 (defun c-initialize-cc-mode () |
19299
7cd7373cc021
(c-initialize-cc-mode): Set c-buffer-is-cc-mode to t.
Richard M. Stallman <rms@gnu.org>
parents:
19253
diff
changeset
|
128 (setq c-buffer-is-cc-mode t) |
24282 | 129 (let ((initprop 'cc-mode-is-initialized) |
130 c-initialization-ok) | |
131 (unless (get 'c-initialize-cc-mode initprop) | |
132 (unwind-protect | |
133 (progn | |
26817 | 134 (put 'c-initialize-cc-mode initprop t) |
135 (c-initialize-builtin-style) | |
24282 | 136 (run-hooks 'c-initialization-hook) |
26817 | 137 ;; Fix obsolete variables. |
138 (if (boundp 'c-comment-continuation-stars) | |
139 (setq c-block-comment-prefix c-comment-continuation-stars)) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
140 (add-hook 'change-major-mode-hook 'c-leave-cc-mode-mode) |
24282 | 141 (setq c-initialization-ok t)) |
142 ;; Will try initialization hooks again if they failed. | |
26817 | 143 (put 'c-initialize-cc-mode initprop c-initialization-ok))) |
19253
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
144 )) |
18847
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
145 |
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
146 |
36920 | 147 ;; Common routines |
148 (defvar c-mode-base-map () | |
149 "Keymap shared by all CC Mode related modes.") | |
150 | |
151 (defun c-make-inherited-keymap () | |
152 (let ((map (make-sparse-keymap))) | |
153 (cond | |
154 ;; XEmacs 19 & 20 | |
155 ((fboundp 'set-keymap-parents) | |
156 (set-keymap-parents map c-mode-base-map)) | |
157 ;; Emacs 19 | |
158 ((fboundp 'set-keymap-parent) | |
159 (set-keymap-parent map c-mode-base-map)) | |
160 ;; incompatible | |
161 (t (error "CC Mode is incompatible with this version of Emacs"))) | |
162 map)) | |
163 | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
164 (defun c-define-abbrev-table (name defs) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
165 ;; Compatibility wrapper for `define-abbrev' which passes a non-nil |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
166 ;; sixth argument for SYSTEM-FLAG in emacsen that support it |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
167 ;; (currently only Emacs 21.2). |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
168 (define-abbrev-table name nil) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
169 (let ((table (symbol-value name))) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
170 (while defs |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
171 (condition-case nil |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
172 (apply 'define-abbrev table (append (car defs) '(t))) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
173 (wrong-number-of-arguments |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
174 (apply 'define-abbrev table (car defs)))) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
175 (setq defs (cdr defs))))) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
176 |
36920 | 177 (if c-mode-base-map |
178 nil | |
179 ;; TBD: should we even worry about naming this keymap. My vote: no, | |
180 ;; because Emacs and XEmacs do it differently. | |
181 (setq c-mode-base-map (make-sparse-keymap)) | |
182 ;; put standard keybindings into MAP | |
183 ;; the following mappings correspond more or less directly to BOCM | |
184 (define-key c-mode-base-map "{" 'c-electric-brace) | |
185 (define-key c-mode-base-map "}" 'c-electric-brace) | |
186 (define-key c-mode-base-map ";" 'c-electric-semi&comma) | |
187 (define-key c-mode-base-map "#" 'c-electric-pound) | |
188 (define-key c-mode-base-map ":" 'c-electric-colon) | |
189 (define-key c-mode-base-map "(" 'c-electric-paren) | |
190 (define-key c-mode-base-map ")" 'c-electric-paren) | |
191 ;; Separate M-BS from C-M-h. The former should remain | |
192 ;; backward-kill-word. | |
193 (define-key c-mode-base-map [(control meta h)] 'c-mark-function) | |
194 (define-key c-mode-base-map "\e\C-q" 'c-indent-exp) | |
195 (substitute-key-definition 'backward-sentence | |
196 'c-beginning-of-statement | |
197 c-mode-base-map global-map) | |
198 (substitute-key-definition 'forward-sentence | |
199 'c-end-of-statement | |
200 c-mode-base-map global-map) | |
201 (substitute-key-definition 'indent-new-comment-line | |
202 'c-indent-new-comment-line | |
203 c-mode-base-map global-map) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
204 (when (fboundp 'comment-indent-new-line) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
205 ;; indent-new-comment-line has changed name to |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
206 ;; comment-indent-new-line in Emacs 21. |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
207 (substitute-key-definition 'comment-indent-new-line |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
208 'c-indent-new-comment-line |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
209 c-mode-base-map global-map)) |
36920 | 210 ;; RMS says don't make these the default. |
211 ;; (define-key c-mode-base-map "\e\C-a" 'c-beginning-of-defun) | |
212 ;; (define-key c-mode-base-map "\e\C-e" 'c-end-of-defun) | |
213 (define-key c-mode-base-map "\C-c\C-n" 'c-forward-conditional) | |
214 (define-key c-mode-base-map "\C-c\C-p" 'c-backward-conditional) | |
215 (define-key c-mode-base-map "\C-c\C-u" 'c-up-conditional) | |
216 (substitute-key-definition 'indent-for-tab-command | |
217 'c-indent-command | |
218 c-mode-base-map global-map) | |
219 ;; It doesn't suffice to put c-fill-paragraph on | |
220 ;; fill-paragraph-function due to the way it works. | |
221 (substitute-key-definition 'fill-paragraph 'c-fill-paragraph | |
222 c-mode-base-map global-map) | |
223 ;; In XEmacs the default fill function is called | |
224 ;; fill-paragraph-or-region. | |
225 (substitute-key-definition 'fill-paragraph-or-region 'c-fill-paragraph | |
226 c-mode-base-map global-map) | |
37563
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
227 ;; Bind the electric deletion functions to C-d and DEL. Emacs 21 |
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
228 ;; automatically maps the [delete] and [backspace] keys to these two |
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
229 ;; depending on window system and user preferences. (In earlier |
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
230 ;; versions it's possible to do the same by using `function-key-map'.) |
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
231 (define-key c-mode-base-map "\C-d" 'c-electric-delete-forward) |
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
232 (define-key c-mode-base-map "\177" 'c-electric-backspace) |
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
233 (when (boundp 'delete-key-deletes-forward) |
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
234 ;; In XEmacs 20 and later we fix the forward and backward deletion |
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
235 ;; behavior by binding the keysyms for the [delete] and |
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
236 ;; [backspace] keys directly, and use `delete-forward-p' or |
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
237 ;; `delete-key-deletes-forward' to decide what [delete] should do. |
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
238 (define-key c-mode-base-map [delete] 'c-electric-delete) |
79039a33283a
Bind c-electric-delete-forward to C-d and c-electric-backspace to DEL.
Eli Zaretskii <eliz@gnu.org>
parents:
36920
diff
changeset
|
239 (define-key c-mode-base-map [backspace] 'c-electric-backspace)) |
36920 | 240 ;; these are new keybindings, with no counterpart to BOCM |
241 (define-key c-mode-base-map "," 'c-electric-semi&comma) | |
242 (define-key c-mode-base-map "*" 'c-electric-star) | |
243 (define-key c-mode-base-map "/" 'c-electric-slash) | |
244 (define-key c-mode-base-map "\C-c\C-q" 'c-indent-defun) | |
245 (define-key c-mode-base-map "\C-c\C-\\" 'c-backslash-region) | |
246 ;; TBD: where if anywhere, to put c-backward|forward-into-nomenclature | |
247 (define-key c-mode-base-map "\C-c\C-a" 'c-toggle-auto-state) | |
248 (define-key c-mode-base-map "\C-c\C-b" 'c-submit-bug-report) | |
249 (define-key c-mode-base-map "\C-c\C-c" 'comment-region) | |
250 (define-key c-mode-base-map "\C-c\C-d" 'c-toggle-hungry-state) | |
251 (define-key c-mode-base-map "\C-c\C-o" 'c-set-offset) | |
252 (define-key c-mode-base-map "\C-c\C-s" 'c-show-syntactic-information) | |
253 (define-key c-mode-base-map "\C-c\C-t" 'c-toggle-auto-hungry-state) | |
254 (define-key c-mode-base-map "\C-c." 'c-set-style) | |
255 ;; conflicts with OOBR | |
256 ;;(define-key c-mode-base-map "\C-c\C-v" 'c-version) | |
257 ) | |
258 | |
259 (defvar c-c-menu nil) | |
260 (defvar c-c++-menu nil) | |
261 (defvar c-objc-menu nil) | |
262 (defvar c-java-menu nil) | |
263 (defvar c-pike-menu nil) | |
264 | |
265 (defun c-mode-menu (modestr) | |
266 (let ((m | |
267 '(["Comment Out Region" comment-region (c-fn-region-is-active-p)] | |
268 ["Uncomment Region" | |
269 (comment-region (region-beginning) (region-end) '(4)) | |
270 (c-fn-region-is-active-p)] | |
271 ["Fill Comment Paragraph" c-fill-paragraph t] | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
272 "----" |
36920 | 273 ["Indent Expression" c-indent-exp |
274 (memq (char-after) '(?\( ?\[ ?\{))] | |
275 ["Indent Line or Region" c-indent-line-or-region t] | |
276 ["Up Conditional" c-up-conditional t] | |
277 ["Backward Conditional" c-backward-conditional t] | |
278 ["Forward Conditional" c-forward-conditional t] | |
279 ["Backward Statement" c-beginning-of-statement t] | |
280 ["Forward Statement" c-end-of-statement t] | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
281 "----" |
36920 | 282 ["Macro Expand Region" c-macro-expand (c-fn-region-is-active-p)] |
283 ["Backslashify" c-backslash-region | |
284 (c-fn-region-is-active-p)] | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
285 "----" |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
286 ("Toggle..." |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
287 ["Syntactic indentation" c-toggle-syntactic-indentation t] |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
288 ["Auto newline" c-toggle-auto-state t] |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
289 ["Hungry delete" c-toggle-hungry-state t]) |
36920 | 290 ))) |
291 (cons modestr m))) | |
292 | |
293 ;; We don't require the outline package, but we configure it a bit anyway. | |
294 (cc-bytecomp-defvar outline-level) | |
295 | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
296 (defun c-common-init (mode) |
36920 | 297 ;; Common initializations for all modes. |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
298 (setq c-buffer-is-cc-mode mode) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
299 |
36920 | 300 ;; these variables should always be buffer local; they do not affect |
301 ;; indentation style. | |
302 (make-local-variable 'parse-sexp-ignore-comments) | |
303 (make-local-variable 'indent-line-function) | |
304 (make-local-variable 'indent-region-function) | |
305 (make-local-variable 'outline-regexp) | |
306 (make-local-variable 'outline-level) | |
307 (make-local-variable 'normal-auto-fill-function) | |
308 (make-local-variable 'comment-start) | |
309 (make-local-variable 'comment-end) | |
310 (make-local-variable 'comment-column) | |
311 (make-local-variable 'comment-start-skip) | |
312 (make-local-variable 'comment-multi-line) | |
313 (make-local-variable 'paragraph-start) | |
314 (make-local-variable 'paragraph-separate) | |
315 (make-local-variable 'paragraph-ignore-fill-prefix) | |
316 (make-local-variable 'adaptive-fill-mode) | |
317 (make-local-variable 'adaptive-fill-regexp) | |
318 (make-local-variable 'imenu-generic-expression) ;set in the mode functions | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
319 |
36920 | 320 ;; X/Emacs 20 only |
321 (and (boundp 'comment-line-break-function) | |
322 (progn | |
323 (make-local-variable 'comment-line-break-function) | |
324 (setq comment-line-break-function | |
325 'c-indent-new-comment-line))) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
326 |
36920 | 327 ;; now set their values |
49496
2c05c557df6c
(c-require-final-newline): Made this variable an alist to specify a value
Martin Stjernholm <mast@lysator.liu.se>
parents:
49470
diff
changeset
|
328 (setq parse-sexp-ignore-comments t |
36920 | 329 indent-line-function 'c-indent-line |
330 indent-region-function 'c-indent-region | |
331 outline-regexp "[^#\n\^M]" | |
332 outline-level 'c-outline-level | |
333 normal-auto-fill-function 'c-do-auto-fill | |
334 comment-column 32 | |
335 comment-start-skip "/\\*+ *\\|//+ *" | |
336 comment-multi-line t) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
337 |
49496
2c05c557df6c
(c-require-final-newline): Made this variable an alist to specify a value
Martin Stjernholm <mast@lysator.liu.se>
parents:
49470
diff
changeset
|
338 ;; Set `require-final-newline' only if we should. |
2c05c557df6c
(c-require-final-newline): Made this variable an alist to specify a value
Martin Stjernholm <mast@lysator.liu.se>
parents:
49470
diff
changeset
|
339 (let ((rfn (assq mode c-require-final-newline))) |
2c05c557df6c
(c-require-final-newline): Made this variable an alist to specify a value
Martin Stjernholm <mast@lysator.liu.se>
parents:
49470
diff
changeset
|
340 (when rfn |
2c05c557df6c
(c-require-final-newline): Made this variable an alist to specify a value
Martin Stjernholm <mast@lysator.liu.se>
parents:
49470
diff
changeset
|
341 (make-local-variable 'require-final-newline) |
2c05c557df6c
(c-require-final-newline): Made this variable an alist to specify a value
Martin Stjernholm <mast@lysator.liu.se>
parents:
49470
diff
changeset
|
342 (setq require-final-newline (cdr rfn)))) |
2c05c557df6c
(c-require-final-newline): Made this variable an alist to specify a value
Martin Stjernholm <mast@lysator.liu.se>
parents:
49470
diff
changeset
|
343 |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
344 ;; Fix keyword regexps. |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
345 (c-init-language-vars) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
346 |
36920 | 347 ;; now set the mode style based on c-default-style |
348 (let ((style (if (stringp c-default-style) | |
349 c-default-style | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
350 (or (cdr (assq mode c-default-style)) |
36920 | 351 (cdr (assq 'other c-default-style)) |
352 "gnu")))) | |
353 ;; Override style variables if `c-old-style-variable-behavior' is | |
354 ;; set. Also override if we are using global style variables, | |
355 ;; have already initialized a style once, and are switching to a | |
356 ;; different style. (It's doubtful whether this is desirable, but | |
357 ;; the whole situation with nonlocal style variables is a bit | |
358 ;; awkward. It's at least the most compatible way with the old | |
359 ;; style init procedure.) | |
360 (c-set-style style (not (or c-old-style-variable-behavior | |
361 (and (not c-style-variables-are-local-p) | |
362 c-indentation-style | |
363 (not (string-equal c-indentation-style | |
364 style))))))) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
365 (c-setup-paragraph-variables) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
366 |
36920 | 367 ;; we have to do something special for c-offsets-alist so that the |
368 ;; buffer local value has its own alist structure. | |
369 (setq c-offsets-alist (copy-alist c-offsets-alist)) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
370 |
36920 | 371 ;; setup the comment indent variable in a Emacs version portable way |
372 (make-local-variable 'comment-indent-function) | |
373 (setq comment-indent-function 'c-comment-indent) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
374 |
36920 | 375 ;; add menus to menubar |
376 (easy-menu-add (c-mode-menu mode-name)) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
377 |
36920 | 378 ;; put auto-hungry designators onto minor-mode-alist, but only once |
379 (or (assq 'c-auto-hungry-string minor-mode-alist) | |
380 (setq minor-mode-alist | |
381 (cons '(c-auto-hungry-string c-auto-hungry-string) | |
382 minor-mode-alist))) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
383 |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
384 ;; Install the function that ensures `c-state-cache' doesn't become |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
385 ;; invalid. |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
386 (make-local-variable 'after-change-functions) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
387 (add-hook 'after-change-functions 'c-check-state-cache)) |
36920 | 388 |
389 (defun c-postprocess-file-styles () | |
390 "Function that post processes relevant file local variables. | |
391 Currently, this function simply applies any style and offset settings | |
392 found in the file's Local Variable list. It first applies any style | |
393 setting found in `c-file-style', then it applies any offset settings | |
394 it finds in `c-file-offsets'. | |
395 | |
396 Note that the style variables are always made local to the buffer." | |
397 ;; apply file styles and offsets | |
45632
9d60ac21968f
(c-postprocess-file-styles): Do nothing except in CC modes.
Richard M. Stallman <rms@gnu.org>
parents:
44728
diff
changeset
|
398 (when c-buffer-is-cc-mode |
9d60ac21968f
(c-postprocess-file-styles): Do nothing except in CC modes.
Richard M. Stallman <rms@gnu.org>
parents:
44728
diff
changeset
|
399 (if (or c-file-style c-file-offsets) |
9d60ac21968f
(c-postprocess-file-styles): Do nothing except in CC modes.
Richard M. Stallman <rms@gnu.org>
parents:
44728
diff
changeset
|
400 (c-make-styles-buffer-local t)) |
9d60ac21968f
(c-postprocess-file-styles): Do nothing except in CC modes.
Richard M. Stallman <rms@gnu.org>
parents:
44728
diff
changeset
|
401 (and c-file-style |
9d60ac21968f
(c-postprocess-file-styles): Do nothing except in CC modes.
Richard M. Stallman <rms@gnu.org>
parents:
44728
diff
changeset
|
402 (c-set-style c-file-style)) |
9d60ac21968f
(c-postprocess-file-styles): Do nothing except in CC modes.
Richard M. Stallman <rms@gnu.org>
parents:
44728
diff
changeset
|
403 (and c-file-offsets |
9d60ac21968f
(c-postprocess-file-styles): Do nothing except in CC modes.
Richard M. Stallman <rms@gnu.org>
parents:
44728
diff
changeset
|
404 (mapcar |
9d60ac21968f
(c-postprocess-file-styles): Do nothing except in CC modes.
Richard M. Stallman <rms@gnu.org>
parents:
44728
diff
changeset
|
405 (lambda (langentry) |
9d60ac21968f
(c-postprocess-file-styles): Do nothing except in CC modes.
Richard M. Stallman <rms@gnu.org>
parents:
44728
diff
changeset
|
406 (let ((langelem (car langentry)) |
9d60ac21968f
(c-postprocess-file-styles): Do nothing except in CC modes.
Richard M. Stallman <rms@gnu.org>
parents:
44728
diff
changeset
|
407 (offset (cdr langentry))) |
9d60ac21968f
(c-postprocess-file-styles): Do nothing except in CC modes.
Richard M. Stallman <rms@gnu.org>
parents:
44728
diff
changeset
|
408 (c-set-offset langelem offset))) |
9d60ac21968f
(c-postprocess-file-styles): Do nothing except in CC modes.
Richard M. Stallman <rms@gnu.org>
parents:
44728
diff
changeset
|
409 c-file-offsets)))) |
36920 | 410 |
411 (add-hook 'hack-local-variables-hook 'c-postprocess-file-styles) | |
412 | |
413 | |
414 ;; Support for C | |
415 | |
416 (defvar c-mode-abbrev-table nil | |
417 "Abbreviation table used in c-mode buffers.") | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
418 (c-define-abbrev-table 'c-mode-abbrev-table |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
419 '(("else" "else" c-electric-continued-statement 0) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
420 ("while" "while" c-electric-continued-statement 0))) |
36920 | 421 |
422 (defvar c-mode-map () | |
423 "Keymap used in c-mode buffers.") | |
424 (if c-mode-map | |
425 nil | |
426 (setq c-mode-map (c-make-inherited-keymap)) | |
427 ;; add bindings which are only useful for C | |
428 (define-key c-mode-map "\C-c\C-e" 'c-macro-expand) | |
429 ) | |
430 | |
431 (easy-menu-define c-c-menu c-mode-map "C Mode Commands" | |
432 (c-mode-menu "C")) | |
433 | |
18720 | 434 ;;;###autoload |
435 (defun c-mode () | |
436 "Major mode for editing K&R and ANSI C code. | |
437 To submit a problem report, enter `\\[c-submit-bug-report]' from a | |
438 c-mode buffer. This automatically sets up a mail buffer with version | |
439 information already added. You just need to add a description of the | |
440 problem, including a reproducible test case and send the message. | |
441 | |
442 To see what version of CC Mode you are running, enter `\\[c-version]'. | |
443 | |
444 The hook variable `c-mode-hook' is run with no args, if that value is | |
445 bound and has a non-nil value. Also the hook `c-mode-common-hook' is | |
446 run first. | |
447 | |
448 Key bindings: | |
449 \\{c-mode-map}" | |
450 (interactive) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
451 (kill-all-local-variables) |
18847
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
452 (c-initialize-cc-mode) |
18720 | 453 (set-syntax-table c-mode-syntax-table) |
454 (setq major-mode 'c-mode | |
455 mode-name "C" | |
36920 | 456 local-abbrev-table c-mode-abbrev-table |
457 abbrev-mode t) | |
18720 | 458 (use-local-map c-mode-map) |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
459 (c-common-init 'c-mode) |
26817 | 460 (cc-imenu-init cc-imenu-c-generic-expression) |
18720 | 461 (run-hooks 'c-mode-common-hook) |
462 (run-hooks 'c-mode-hook) | |
463 (c-update-modeline)) | |
464 | |
465 | |
36920 | 466 ;; Support for C++ |
467 | |
468 (defvar c++-mode-abbrev-table nil | |
469 "Abbreviation table used in c++-mode buffers.") | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
470 (c-define-abbrev-table 'c++-mode-abbrev-table |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
471 '(("else" "else" c-electric-continued-statement 0) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
472 ("while" "while" c-electric-continued-statement 0) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
473 ("catch" "catch" c-electric-continued-statement 0))) |
36920 | 474 |
475 (defvar c++-mode-map () | |
476 "Keymap used in c++-mode buffers.") | |
477 (if c++-mode-map | |
478 nil | |
479 (setq c++-mode-map (c-make-inherited-keymap)) | |
480 ;; add bindings which are only useful for C++ | |
481 (define-key c++-mode-map "\C-c\C-e" 'c-macro-expand) | |
482 (define-key c++-mode-map "\C-c:" 'c-scope-operator) | |
483 (define-key c++-mode-map "<" 'c-electric-lt-gt) | |
484 (define-key c++-mode-map ">" 'c-electric-lt-gt)) | |
485 | |
486 (easy-menu-define c-c++-menu c++-mode-map "C++ Mode Commands" | |
487 (c-mode-menu "C++")) | |
488 | |
18720 | 489 ;;;###autoload |
490 (defun c++-mode () | |
491 "Major mode for editing C++ code. | |
492 To submit a problem report, enter `\\[c-submit-bug-report]' from a | |
493 c++-mode buffer. This automatically sets up a mail buffer with | |
494 version information already added. You just need to add a description | |
495 of the problem, including a reproducible test case, and send the | |
496 message. | |
497 | |
498 To see what version of CC Mode you are running, enter `\\[c-version]'. | |
499 | |
500 The hook variable `c++-mode-hook' is run with no args, if that | |
501 variable is bound and has a non-nil value. Also the hook | |
502 `c-mode-common-hook' is run first. | |
503 | |
504 Key bindings: | |
505 \\{c++-mode-map}" | |
506 (interactive) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
507 (kill-all-local-variables) |
18847
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
508 (c-initialize-cc-mode) |
18720 | 509 (set-syntax-table c++-mode-syntax-table) |
510 (setq major-mode 'c++-mode | |
511 mode-name "C++" | |
36920 | 512 local-abbrev-table c++-mode-abbrev-table |
513 abbrev-mode t) | |
18720 | 514 (use-local-map c++-mode-map) |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
515 (c-common-init 'c++-mode) |
26817 | 516 (cc-imenu-init cc-imenu-c++-generic-expression) |
18720 | 517 (run-hooks 'c-mode-common-hook) |
518 (run-hooks 'c++-mode-hook) | |
519 (c-update-modeline)) | |
520 | |
521 | |
36920 | 522 ;; Support for Objective-C |
523 | |
524 (defvar objc-mode-abbrev-table nil | |
525 "Abbreviation table used in objc-mode buffers.") | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
526 (c-define-abbrev-table 'objc-mode-abbrev-table |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
527 '(("else" "else" c-electric-continued-statement 0) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
528 ("while" "while" c-electric-continued-statement 0))) |
36920 | 529 |
530 (defvar objc-mode-map () | |
531 "Keymap used in objc-mode buffers.") | |
532 (if objc-mode-map | |
533 nil | |
534 (setq objc-mode-map (c-make-inherited-keymap)) | |
535 ;; add bindings which are only useful for Objective-C | |
536 (define-key objc-mode-map "\C-c\C-e" 'c-macro-expand)) | |
537 | |
538 (easy-menu-define c-objc-menu objc-mode-map "ObjC Mode Commands" | |
539 (c-mode-menu "ObjC")) | |
540 | |
18720 | 541 ;;;###autoload |
542 (defun objc-mode () | |
543 "Major mode for editing Objective C code. | |
544 To submit a problem report, enter `\\[c-submit-bug-report]' from an | |
545 objc-mode buffer. This automatically sets up a mail buffer with | |
546 version information already added. You just need to add a description | |
547 of the problem, including a reproducible test case, and send the | |
548 message. | |
549 | |
550 To see what version of CC Mode you are running, enter `\\[c-version]'. | |
551 | |
552 The hook variable `objc-mode-hook' is run with no args, if that value | |
553 is bound and has a non-nil value. Also the hook `c-mode-common-hook' | |
554 is run first. | |
555 | |
556 Key bindings: | |
557 \\{objc-mode-map}" | |
558 (interactive) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
559 (kill-all-local-variables) |
18847
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
560 (c-initialize-cc-mode) |
18720 | 561 (set-syntax-table objc-mode-syntax-table) |
562 (setq major-mode 'objc-mode | |
563 mode-name "ObjC" | |
36920 | 564 local-abbrev-table objc-mode-abbrev-table |
565 abbrev-mode t) | |
18720 | 566 (use-local-map objc-mode-map) |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
567 (c-common-init 'objc-mode) |
26817 | 568 (cc-imenu-init cc-imenu-objc-generic-expression) |
18720 | 569 (run-hooks 'c-mode-common-hook) |
570 (run-hooks 'objc-mode-hook) | |
571 (c-update-modeline)) | |
572 | |
573 | |
36920 | 574 ;; Support for Java |
575 | |
576 (defvar java-mode-abbrev-table nil | |
577 "Abbreviation table used in java-mode buffers.") | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
578 (c-define-abbrev-table 'java-mode-abbrev-table |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
579 '(("else" "else" c-electric-continued-statement 0) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
580 ("while" "while" c-electric-continued-statement 0) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
581 ("catch" "catch" c-electric-continued-statement 0) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
582 ("finally" "finally" c-electric-continued-statement 0))) |
36920 | 583 |
584 (defvar java-mode-map () | |
585 "Keymap used in java-mode buffers.") | |
586 (if java-mode-map | |
587 nil | |
588 (setq java-mode-map (c-make-inherited-keymap)) | |
589 ;; add bindings which are only useful for Java | |
590 ) | |
591 | |
592 (easy-menu-define c-java-menu java-mode-map "Java Mode Commands" | |
593 (c-mode-menu "Java")) | |
594 | |
18720 | 595 ;;;###autoload |
596 (defun java-mode () | |
597 "Major mode for editing Java code. | |
20135
ecb78a6ccd8d
(objc-mode): Bind imenu-create-index-function
Karl Heuer <kwzh@gnu.org>
parents:
19808
diff
changeset
|
598 To submit a problem report, enter `\\[c-submit-bug-report]' from a |
18720 | 599 java-mode buffer. This automatically sets up a mail buffer with |
600 version information already added. You just need to add a description | |
601 of the problem, including a reproducible test case and send the | |
602 message. | |
603 | |
604 To see what version of CC Mode you are running, enter `\\[c-version]'. | |
605 | |
606 The hook variable `java-mode-hook' is run with no args, if that value | |
607 is bound and has a non-nil value. Also the common hook | |
608 `c-mode-common-hook' is run first. Note that this mode automatically | |
609 sets the \"java\" style before calling any hooks so be careful if you | |
610 set styles in `c-mode-common-hook'. | |
611 | |
612 Key bindings: | |
613 \\{java-mode-map}" | |
614 (interactive) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
615 (kill-all-local-variables) |
18847
dd7615d21a97
(c-initialize-cc-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
18720
diff
changeset
|
616 (c-initialize-cc-mode) |
18720 | 617 (set-syntax-table java-mode-syntax-table) |
618 (setq major-mode 'java-mode | |
619 mode-name "Java" | |
30401
b85ee58b24ec
(c-initialize-cc-mode): Handling of obsolete
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
620 local-abbrev-table java-mode-abbrev-table |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
621 abbrev-mode t) |
18720 | 622 (use-local-map java-mode-map) |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
623 (c-common-init 'java-mode) |
26817 | 624 (cc-imenu-init cc-imenu-java-generic-expression) |
18720 | 625 (run-hooks 'c-mode-common-hook) |
626 (run-hooks 'java-mode-hook) | |
627 (c-update-modeline)) | |
628 | |
629 | |
36920 | 630 ;; Support for CORBA's IDL language |
631 | |
632 (defvar idl-mode-abbrev-table nil | |
633 "Abbreviation table used in idl-mode buffers.") | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
634 (c-define-abbrev-table 'idl-mode-abbrev-table nil) |
36920 | 635 |
636 (defvar idl-mode-map () | |
637 "Keymap used in idl-mode buffers.") | |
638 (if idl-mode-map | |
639 nil | |
640 (setq idl-mode-map (c-make-inherited-keymap)) | |
641 ;; add bindings which are only useful for IDL | |
642 ) | |
643 | |
644 (easy-menu-define c-idl-menu idl-mode-map "IDL Mode Commands" | |
645 (c-mode-menu "IDL")) | |
646 | |
19253
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
647 ;;;###autoload |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
648 (defun idl-mode () |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
649 "Major mode for editing CORBA's IDL code. |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
650 To submit a problem report, enter `\\[c-submit-bug-report]' from an |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
651 idl-mode buffer. This automatically sets up a mail buffer with |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
652 version information already added. You just need to add a description |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
653 of the problem, including a reproducible test case, and send the |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
654 message. |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
655 |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
656 To see what version of CC Mode you are running, enter `\\[c-version]'. |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
657 |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
658 The hook variable `idl-mode-hook' is run with no args, if that |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
659 variable is bound and has a non-nil value. Also the hook |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
660 `c-mode-common-hook' is run first. |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
661 |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
662 Key bindings: |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
663 \\{idl-mode-map}" |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
664 (interactive) |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
665 (kill-all-local-variables) |
19253
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
666 (c-initialize-cc-mode) |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
667 (set-syntax-table idl-mode-syntax-table) |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
668 (setq major-mode 'idl-mode |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
669 mode-name "IDL" |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
670 local-abbrev-table idl-mode-abbrev-table) |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
671 (use-local-map idl-mode-map) |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
672 (c-common-init 'idl-mode) |
26817 | 673 ;;(cc-imenu-init cc-imenu-idl-generic-expression) ;FIXME |
19253
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
674 (run-hooks 'c-mode-common-hook) |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
675 (run-hooks 'idl-mode-hook) |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
676 (c-update-modeline)) |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
677 |
2bda7e07f25d
(idl-mode): Support for CORBA's IDL language.
Richard M. Stallman <rms@gnu.org>
parents:
18847
diff
changeset
|
678 |
36920 | 679 ;; Support for Pike |
680 | |
681 (defvar pike-mode-abbrev-table nil | |
682 "Abbreviation table used in pike-mode buffers.") | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
683 (c-define-abbrev-table 'pike-mode-abbrev-table |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
684 '(("else" "else" c-electric-continued-statement 0) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
685 ("while" "while" c-electric-continued-statement 0))) |
36920 | 686 |
687 (defvar pike-mode-map () | |
688 "Keymap used in pike-mode buffers.") | |
689 (if pike-mode-map | |
690 nil | |
691 (setq pike-mode-map (c-make-inherited-keymap)) | |
692 ;; additional bindings | |
693 (define-key pike-mode-map "\C-c\C-e" 'c-macro-expand)) | |
694 | |
695 (easy-menu-define c-pike-menu pike-mode-map "Pike Mode Commands" | |
696 (c-mode-menu "Pike")) | |
697 | |
24282 | 698 ;;;###autoload |
699 (defun pike-mode () | |
700 "Major mode for editing Pike code. | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
701 To submit a problem report, enter `\\[c-submit-bug-report]' from a |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
702 pike-mode buffer. This automatically sets up a mail buffer with |
24282 | 703 version information already added. You just need to add a description |
704 of the problem, including a reproducible test case, and send the | |
705 message. | |
706 | |
707 To see what version of CC Mode you are running, enter `\\[c-version]'. | |
708 | |
709 The hook variable `pike-mode-hook' is run with no args, if that value | |
710 is bound and has a non-nil value. Also the common hook | |
711 `c-mode-common-hook' is run first. | |
712 | |
713 Key bindings: | |
714 \\{pike-mode-map}" | |
715 (interactive) | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
716 (kill-all-local-variables) |
24282 | 717 (c-initialize-cc-mode) |
718 (set-syntax-table pike-mode-syntax-table) | |
719 (setq major-mode 'pike-mode | |
720 mode-name "Pike" | |
36920 | 721 local-abbrev-table pike-mode-abbrev-table |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
722 abbrev-mode t) |
24282 | 723 (use-local-map pike-mode-map) |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
724 (c-common-init 'pike-mode) |
26817 | 725 ;;(cc-imenu-init cc-imenu-pike-generic-expression) ;FIXME |
24282 | 726 (run-hooks 'c-mode-common-hook) |
727 (run-hooks 'pike-mode-hook) | |
728 (c-update-modeline)) | |
729 | |
730 | |
20146 | 731 ;; bug reporting |
18720 | 732 |
733 (defconst c-mode-help-address | |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
734 "bug-cc-mode@gnu.org" |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
735 "Address(es) for CC Mode bug reports.") |
18720 | 736 |
737 (defun c-version () | |
738 "Echo the current version of CC Mode in the minibuffer." | |
739 (interactive) | |
740 (message "Using CC Mode version %s" c-version) | |
741 (c-keep-region-active)) | |
742 | |
36920 | 743 (defvar c-prepare-bug-report-hooks nil) |
744 | |
745 ;; Dynamic variables used by reporter. | |
746 (defvar reporter-prompt-for-summary-p) | |
747 (defvar reporter-dont-compact-list) | |
748 | |
18720 | 749 (defun c-submit-bug-report () |
750 "Submit via mail a bug report on CC Mode." | |
751 (interactive) | |
20917
c6e2c4d9a305
(c-mode, c++-mode, objc-mode, java-mode): Set
Richard M. Stallman <rms@gnu.org>
parents:
20459
diff
changeset
|
752 (require 'reporter) |
18720 | 753 ;; load in reporter |
754 (let ((reporter-prompt-for-summary-p t) | |
755 (reporter-dont-compact-list '(c-offsets-alist)) | |
756 (style c-indentation-style) | |
757 (c-features c-emacs-features)) | |
758 (and | |
759 (if (y-or-n-p "Do you want to submit a report on CC Mode? ") | |
760 t (message "") nil) | |
761 (require 'reporter) | |
762 (reporter-submit-bug-report | |
763 c-mode-help-address | |
764 (concat "CC Mode " c-version " (" | |
765 (cond ((eq major-mode 'c++-mode) "C++") | |
766 ((eq major-mode 'c-mode) "C") | |
767 ((eq major-mode 'objc-mode) "ObjC") | |
768 ((eq major-mode 'java-mode) "Java") | |
26817 | 769 ((eq major-mode 'idl-mode) "IDL") |
24282 | 770 ((eq major-mode 'pike-mode) "Pike") |
18720 | 771 ) |
772 ")") | |
26817 | 773 (let ((vars (append |
18720 | 774 ;; report only the vars that affect indentation |
26817 | 775 c-style-variables |
776 '(c-delete-function | |
777 c-electric-pound-behavior | |
778 c-indent-comments-syntactically-p | |
779 c-tab-always-indent | |
780 defun-prompt-regexp | |
781 tab-width | |
782 comment-column | |
783 parse-sexp-ignore-comments | |
784 ;; A brain-damaged XEmacs only variable that, if | |
785 ;; set to nil can cause all kinds of chaos. | |
786 signal-error-on-buffer-boundary | |
787 ;; Variables that affect line breaking and comments. | |
30401
b85ee58b24ec
(c-initialize-cc-mode): Handling of obsolete
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
788 auto-fill-function |
26817 | 789 filladapt-mode |
790 comment-multi-line | |
791 comment-start-skip | |
792 fill-prefix | |
793 paragraph-start | |
794 adaptive-fill-mode | |
795 adaptive-fill-regexp) | |
796 nil))) | |
797 (delq 'c-special-indent-hook vars) | |
30401
b85ee58b24ec
(c-initialize-cc-mode): Handling of obsolete
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
798 (mapcar (lambda (var) (unless (boundp var) (delq var vars))) |
b85ee58b24ec
(c-initialize-cc-mode): Handling of obsolete
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
799 '(signal-error-on-buffer-boundary |
b85ee58b24ec
(c-initialize-cc-mode): Handling of obsolete
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
800 filladapt-mode |
b85ee58b24ec
(c-initialize-cc-mode): Handling of obsolete
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
801 defun-prompt-regexp)) |
26817 | 802 vars) |
41592
b89d0c514129
(c-submit-bug-report): Make sure that the arguments to `insert' are strings.
Sam Steingold <sds@gnu.org>
parents:
37563
diff
changeset
|
803 (lambda () |
44728
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
804 (run-hooks 'c-prepare-bug-report-hooks) |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
805 (insert (format "Buffer Style: %s\n\nc-emacs-features: %s\n" |
7a3ac6c387fe
CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents:
42390
diff
changeset
|
806 style c-features))))))) |
18720 | 807 |
808 | |
36920 | 809 (cc-provide 'cc-mode) |
18720 | 810 ;;; cc-mode.el ends here |