Mercurial > emacs
annotate lisp/progmodes/cc-vars.el @ 42811:cf0c0ef57504
*** empty log message ***
| author | Jason Rumney <jasonr@gnu.org> |
|---|---|
| date | Thu, 17 Jan 2002 19:29:24 +0000 |
| parents | be541feb06cc |
| children | 85a7b7660c2d |
| rev | line source |
|---|---|
| 18720 | 1 ;;; cc-vars.el --- user customization variables for CC Mode |
| 2 | |
| 36920 | 3 ;; Copyright (C) 1985,1987,1992-2001 Free Software Foundation, Inc. |
| 18720 | 4 |
|
30399
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
5 ;; Authors: 2000- Martin Stjernholm |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
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: 22-Apr-1997 (split from cc-mode.el) |
|
20144
56d81cc7b4f5
(c-progress-interval): Document new semantics
Karl Heuer <kwzh@gnu.org>
parents:
20140
diff
changeset
|
12 ;; Version: See cc-mode.el |
| 18720 | 13 ;; Keywords: c languages oop |
| 14 | |
| 15 ;; This file is part of GNU Emacs. | |
| 16 | |
| 17 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
| 18 ;; it under the terms of the GNU General Public License as published by | |
| 19 ;; the Free Software Foundation; either version 2, or (at your option) | |
| 20 ;; any later version. | |
| 21 | |
| 22 ;; GNU Emacs is distributed in the hope that it will be useful, | |
| 23 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 24 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 25 ;; GNU General Public License for more details. | |
| 26 | |
| 27 ;; You should have received a copy of the GNU General Public License | |
| 36920 | 28 ;; along with this program; see the file COPYING. If not, write to |
| 29 ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
| 18720 | 30 ;; Boston, MA 02111-1307, USA. |
| 31 | |
|
38422
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Jan?k <Pavel@Janik.cz>
parents:
36920
diff
changeset
|
32 ;;; Commentary: |
|
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Jan?k <Pavel@Janik.cz>
parents:
36920
diff
changeset
|
33 |
|
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Jan?k <Pavel@Janik.cz>
parents:
36920
diff
changeset
|
34 ;;; Code: |
|
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Jan?k <Pavel@Janik.cz>
parents:
36920
diff
changeset
|
35 |
| 24282 | 36 (eval-when-compile |
| 26817 | 37 (let ((load-path |
| 36920 | 38 (if (and (boundp 'byte-compile-dest-file) |
| 39 (stringp byte-compile-dest-file)) | |
| 40 (cons (file-name-directory byte-compile-dest-file) load-path) | |
| 26817 | 41 load-path))) |
| 36920 | 42 (require 'cc-bytecomp))) |
| 43 | |
| 44 (cc-require 'cc-defs) | |
| 45 | |
| 46 ;; Silence the compiler. | |
| 47 (cc-bytecomp-defun get-char-table) ; XEmacs 20+ | |
| 48 (cc-bytecomp-defun char-table-range) ; Emacs 19+ | |
| 49 (cc-bytecomp-defun char-table-p) ; Emacs 19+, XEmacs 20+ | |
| 24282 | 50 |
| 36920 | 51 ;; Pull in custom if it exists and is recent enough (the one in Emacs |
| 52 ;; 19.34 isn't). | |
| 53 (eval | |
| 54 (cc-eval-when-compile | |
| 55 (condition-case nil | |
| 56 (progn | |
| 57 (require 'custom) | |
| 58 (or (fboundp 'defcustom) (error "")) | |
| 59 (require 'wid-edit) | |
| 60 '(progn ; Compile in the require's. | |
| 61 (require 'custom) | |
| 62 (require 'wid-edit))) | |
| 63 (error | |
| 64 (message "Warning: Compiling without Customize support \ | |
| 65 since a (good enough) custom library wasn't found") | |
| 66 (cc-bytecomp-defmacro define-widget (name class doc &rest args)) | |
| 67 (cc-bytecomp-defmacro defcustom (symbol value doc &rest args) | |
| 68 `(defvar ,symbol ,value ,doc)) | |
| 69 nil)))) | |
| 18720 | 70 |
| 71 | |
| 26817 | 72 ;;; Helpers |
| 18720 | 73 |
| 24282 | 74 ;; This widget will show up in newer versions of the Custom library |
| 75 (or (get 'other 'widget-type) | |
| 76 (define-widget 'other 'sexp | |
| 77 "Matches everything, but doesn't let the user edit the value. | |
| 78 Useful as last item in a `choice' widget." | |
| 79 :tag "Other" | |
| 80 :format "%t%n" | |
| 81 :value 'other)) | |
| 82 | |
| 26817 | 83 (define-widget 'c-const-symbol 'item |
| 84 "An uneditable lisp symbol." | |
| 85 :value nil | |
| 86 :tag "Symbol" | |
| 87 :format "%t: %v\n%d" | |
| 88 :match (lambda (widget value) (symbolp value)) | |
| 89 :value-to-internal | |
| 90 (lambda (widget value) | |
| 91 (let ((s (if (symbolp value) | |
| 92 (symbol-name value) | |
| 93 value)) | |
| 94 (l (widget-get widget :size))) | |
| 95 (if l | |
| 96 (setq s (concat s (make-string (- l (length s)) ?\ )))) | |
| 97 s)) | |
| 98 :value-to-external | |
| 99 (lambda (widget value) | |
| 100 (if (stringp value) | |
| 101 (intern (progn | |
| 102 (string-match "\\`[^ ]*" value) | |
| 103 (match-string 0 value))) | |
| 104 value))) | |
| 105 | |
| 106 (defvar c-style-variables | |
| 107 '(c-basic-offset c-comment-only-line-offset c-block-comment-prefix | |
| 108 c-comment-prefix-regexp c-cleanup-list c-hanging-braces-alist | |
| 109 c-hanging-colons-alist c-hanging-semi&comma-criteria c-backslash-column | |
| 110 c-special-indent-hook c-label-minimum-indentation c-offsets-alist) | |
| 111 "List of the style variables.") | |
| 112 | |
| 113 (defmacro defcustom-c-stylevar (name val doc &rest args) | |
| 114 "Defines a style variable." | |
| 115 `(progn | |
| 36920 | 116 (put ',name 'c-stylevar-fallback ,val) |
| 26817 | 117 (defcustom ,name 'set-from-style |
| 118 ,(concat doc " | |
| 119 | |
| 120 This is a style variable. Apart from the valid values described | |
| 121 above, it can be set to the symbol `set-from-style'. In that case, it | |
| 122 takes its value from the style system (see `c-default-style' and | |
| 123 `c-styles-alist') when a CC Mode buffer is initialized. Otherwise, | |
| 124 the value set here overrides the style system (there is a variable | |
| 125 `c-old-style-variable-behavior' that changes this, though).") | |
| 126 ,@(plist-put | |
| 127 args ':type | |
| 128 `'(radio | |
| 129 (const :tag "Use style settings" | |
| 130 set-from-style) | |
| 131 ,(let ((type (eval (plist-get args ':type)))) | |
| 132 (unless (consp type) | |
| 133 (setq type (list type))) | |
| 134 (unless (c-safe (plist-get (cdr type) ':value)) | |
| 135 (setcdr type (append `(:value ,val) | |
| 136 (cdr type)))) | |
| 137 (unless (c-safe (plist-get (cdr type) ':tag)) | |
| 138 (setcdr type (append '(:tag "Override style settings") | |
| 139 (cdr type)))) | |
| 140 type)))))) | |
| 141 | |
| 142 (defun c-valid-offset (offset) | |
| 143 "Return non-nil iff OFFSET is a valid offset for a syntactic symbol. | |
| 144 See `c-offsets-alist'." | |
| 145 (or (eq offset '+) | |
| 146 (eq offset '-) | |
| 147 (eq offset '++) | |
| 148 (eq offset '--) | |
| 149 (eq offset '*) | |
| 150 (eq offset '/) | |
| 151 (integerp offset) | |
| 36920 | 152 (vectorp offset) |
| 26817 | 153 (functionp offset) |
| 154 (and (symbolp offset) | |
| 155 (or (boundp offset) | |
| 156 (fboundp offset))) | |
| 157 (progn | |
| 158 (while (and (consp offset) | |
| 159 (c-valid-offset (car offset))) | |
| 160 (setq offset (cdr offset))) | |
| 161 (null offset)))) | |
| 162 | |
| 163 | |
| 164 | |
| 165 ;;; User variables | |
| 166 | |
| 167 (defcustom c-strict-syntax-p nil | |
| 168 "*If non-nil, all syntactic symbols must be found in `c-offsets-alist'. | |
| 169 If the syntactic symbol for a particular line does not match a symbol | |
| 170 in the offsets alist, or if no non-nil offset value can be determined | |
| 171 for a symbol, an error is generated, otherwise no error is reported | |
| 172 and the syntactic symbol is ignored. | |
| 173 | |
| 174 This variable is considered obsolete; it doesn't work well with lineup | |
| 175 functions that return nil to support the feature of using lists on | |
| 176 syntactic symbols in `c-offsets-alist'. Please keep it set to nil." | |
| 177 :type 'boolean | |
| 178 :group 'c) | |
| 179 | |
| 180 (defcustom c-echo-syntactic-information-p nil | |
| 181 "*If non-nil, syntactic info is echoed when the line is indented." | |
| 182 :type 'boolean | |
| 183 :group 'c) | |
| 184 | |
| 185 (defcustom-c-stylevar c-basic-offset 4 | |
|
30399
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
186 "*Amount of basic offset used by + and - symbols in `c-offsets-alist'. |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
187 Also used as the indentation step when `c-syntactic-indentation' is |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
188 nil." |
| 26817 | 189 :type 'integer |
| 190 :group 'c) | |
| 191 | |
| 18720 | 192 (defcustom c-tab-always-indent t |
| 193 "*Controls the operation of the TAB key. | |
| 194 If t, hitting TAB always just indents the current line. If nil, | |
| 195 hitting TAB indents the current line if point is at the left margin or | |
| 196 in the line's indentation, otherwise it insert a `real' tab character | |
| 24282 | 197 \(see note\). If the symbol `other', then tab is inserted only within |
| 198 literals -- defined as comments and strings -- and inside preprocessor | |
| 199 directives, but the line is always reindented. | |
| 18720 | 200 |
| 201 Note: The value of `indent-tabs-mode' will determine whether a real | |
| 26817 | 202 tab character will be inserted, or the equivalent number of spaces. |
| 18720 | 203 When inserting a tab, actually the function stored in the variable |
| 204 `c-insert-tab-function' is called. | |
| 205 | |
| 206 Note: indentation of lines containing only comments is also controlled | |
| 207 by the `c-comment-only-line-offset' variable." | |
| 208 :type '(radio | |
| 209 :extra-offset 8 | |
| 210 :format "%{C Tab Always Indent%}:\n The TAB key:\n%v" | |
| 211 (const :tag "always indents, never inserts TAB" t) | |
| 212 (const :tag "indents in left margin, otherwise inserts TAB" nil) | |
| 24282 | 213 (other :tag "inserts TAB in literals, otherwise indent" other)) |
| 18720 | 214 :group 'c) |
| 215 | |
| 216 (defcustom c-insert-tab-function 'insert-tab | |
|
30399
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
217 "*Function used when inserting a tab for \\[c-indent-command]. |
| 18720 | 218 Only used when `c-tab-always-indent' indicates a `real' tab character |
| 219 should be inserted. Value must be a function taking no arguments." | |
| 220 :type 'function | |
| 221 :group 'c) | |
| 222 | |
|
30399
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
223 (defcustom c-syntactic-indentation t |
| 36920 | 224 "*Whether the indentation should be controlled by the syntactic context. |
|
30399
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
225 |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
226 If t, the indentation functions indents according to the syntactic |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
227 context, using the style settings specified by `c-offsets-alist'. |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
228 |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
229 If nil, every line is just indented to the same level as the previous |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
230 one, and the \\[c-indent-command] command adjusts the indentation in steps |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
231 specified by `c-basic-offset'. The indentation style have no effect |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
232 in this mode, nor any of the indentation associated variables, |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
233 e.g. `c-special-indent-hook'." |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
234 :type 'boolean |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
235 :group 'c) |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
236 |
| 26817 | 237 (defcustom-c-stylevar c-comment-only-line-offset 0 |
| 18720 | 238 "*Extra offset for line which contains only the start of a comment. |
| 239 Can contain an integer or a cons cell of the form: | |
| 240 | |
| 241 (NON-ANCHORED-OFFSET . ANCHORED-OFFSET) | |
| 242 | |
| 243 Where NON-ANCHORED-OFFSET is the amount of offset given to | |
| 244 non-column-zero anchored comment-only lines, and ANCHORED-OFFSET is | |
| 245 the amount of offset to give column-zero anchored comment-only lines. | |
| 26817 | 246 Just an integer as value is equivalent to (<val> . -1000). |
| 247 | |
| 248 Note that this variable only has effect when the `c-lineup-comment' | |
| 249 lineup function is used on the `comment-intro' syntactic symbol (the | |
| 250 default)." | |
| 251 :type '(choice (integer :tag "Non-anchored offset" 0) | |
| 18720 | 252 (cons :tag "Non-anchored & anchored offset" |
| 253 :value (0 . 0) | |
| 254 :extra-offset 8 | |
| 255 (integer :tag "Non-anchored offset") | |
| 256 (integer :tag "Anchored offset"))) | |
| 257 :group 'c) | |
| 258 | |
| 259 (defcustom c-indent-comments-syntactically-p nil | |
| 26817 | 260 "*Specifies how \\[indent-for-comment] should handle comment-only lines. |
| 18720 | 261 When this variable is non-nil, comment-only lines are indented |
| 26817 | 262 according to syntactic analysis via `c-offsets-alist'. Otherwise, the |
| 263 comment is indented as if it was preceded by code. Note that this | |
| 264 variable does not affect how the normal line indentation treats | |
| 265 comment-only lines." | |
| 18720 | 266 :type 'boolean |
| 267 :group 'c) | |
| 268 | |
| 36920 | 269 (make-obsolete-variable 'c-comment-continuation-stars |
| 270 'c-block-comment-prefix) | |
| 271 | |
| 272 ;; Although c-comment-continuation-stars is obsolete, we look at it in | |
| 273 ;; some places in CC Mode anyway, so make the compiler ignore it | |
| 274 ;; during our compilation. | |
| 275 (cc-bytecomp-obsolete-var c-comment-continuation-stars) | |
| 276 (cc-bytecomp-defvar c-comment-continuation-stars) | |
| 277 | |
| 26817 | 278 (defcustom-c-stylevar c-block-comment-prefix |
| 279 (if (boundp 'c-comment-continuation-stars) | |
| 280 c-comment-continuation-stars | |
| 281 "* ") | |
| 282 "*Specifies the line prefix of continued C-style block comments. | |
|
19298
4a99e63dc4a9
(c-buffer-is-cc-mode): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
19255
diff
changeset
|
283 You should set this variable to the literal string that gets inserted |
|
4a99e63dc4a9
(c-buffer-is-cc-mode): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
19255
diff
changeset
|
284 at the front of continued block style comment lines. This should |
| 26817 | 285 either be the empty string, or some characters without preceding |
| 286 spaces. To adjust the alignment under the comment starter, put an | |
| 287 appropriate value on the `c' syntactic symbol (see the | |
| 288 `c-offsets-alist' variable). | |
| 289 | |
| 290 It's only used when a one-line block comment is broken into two or | |
| 291 more lines for the first time; otherwise the appropriate prefix is | |
| 292 adapted from the comment. This variable is not used for C++ line | |
| 293 style comments." | |
| 294 :type 'string | |
|
19298
4a99e63dc4a9
(c-buffer-is-cc-mode): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
19255
diff
changeset
|
295 :group 'c) |
|
4a99e63dc4a9
(c-buffer-is-cc-mode): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
19255
diff
changeset
|
296 |
| 36920 | 297 (defcustom-c-stylevar c-comment-prefix-regexp |
| 298 '((pike-mode . "//+!?\\|\\**") | |
| 299 (other . "//+\\|\\**")) | |
| 26817 | 300 "*Regexp to match the line prefix inside comments. |
| 301 This regexp is used to recognize the fill prefix inside comments for | |
| 302 correct paragraph filling and other things. | |
| 303 | |
| 36920 | 304 If this variable is a string, it will be used in all CC Mode major |
| 305 modes. It can also be an association list, to associate specific | |
| 306 regexps to specific major modes. The symbol for the major mode is | |
| 307 looked up in the association list, and its value is used as the line | |
| 308 prefix regexp. If it's not found, then the symbol `other' is looked | |
| 309 up and its value is used instead. | |
| 310 | |
| 311 The regexp should match the prefix used in both C++ style line | |
| 312 comments and C style block comments, but it does not need to match a | |
| 313 block comment starter. In other words, it should at least match | |
| 314 \"//\" for line comments and the string in `c-block-comment-prefix', | |
| 315 which is sometimes inserted by CC Mode inside block comments. It | |
| 316 should not match any surrounding whitespace. | |
| 26817 | 317 |
| 318 Note that CC Mode modifies other variables from this one at mode | |
| 36920 | 319 initialization, so you will need to do \\[c-mode] (or whatever mode |
| 26817 | 320 you're currently using) if you change it in a CC Mode buffer." |
| 36920 | 321 :type '(radio |
| 322 (regexp :tag "Regexp for all modes") | |
| 323 (list | |
| 324 :tag "Mode-specific regexps" | |
| 325 (set | |
| 326 :inline t :format "%v" | |
| 327 (cons :format "%v" | |
| 328 (const :format "C " c-mode) (regexp :format "%v")) | |
| 329 (cons :format "%v" | |
| 330 (const :format "C++ " c++-mode) (regexp :format "%v")) | |
| 331 (cons :format "%v" | |
| 332 (const :format "ObjC " objc-mode) (regexp :format "%v")) | |
| 333 (cons :format "%v" | |
| 334 (const :format "Java " java-mode) (regexp :format "%v")) | |
| 335 (cons :format "%v" | |
| 336 (const :format "IDL " idl-mode) (regexp :format "%v")) | |
| 337 (cons :format "%v" | |
| 338 (const :format "Pike " pike-mode) (regexp :format "%v"))) | |
| 339 (cons :format " %v" | |
| 340 (const :format "Other " other) (regexp :format "%v")))) | |
| 26817 | 341 :group 'c) |
| 342 | |
| 343 (defcustom c-ignore-auto-fill '(string cpp code) | |
| 344 "*List of contexts in which automatic filling never occurs. | |
| 345 If Auto Fill mode is active, it will be temporarily disabled if point | |
| 346 is in any context on this list. It's e.g. useful to enable Auto Fill | |
| 347 in comments only, but not in strings or normal code. The valid | |
| 348 contexts are: | |
| 349 | |
| 350 string -- inside a string or character literal | |
| 351 c -- inside a C style block comment | |
| 352 c++ -- inside a C++ style line comment | |
| 353 cpp -- inside a preprocessor directive | |
| 354 code -- anywhere else, i.e. in normal code" | |
| 355 :type '(set | |
| 356 :extra-offset 8 | |
| 357 (const :tag "String literals" string) | |
| 358 (const :tag "C style block comments" c) | |
| 359 (const :tag "C++ style line comments" c++) | |
| 360 (const :tag "Preprocessor directives" cpp) | |
| 361 (const :tag "Normal code" code)) | |
| 362 :group 'c) | |
| 363 | |
| 364 (defcustom-c-stylevar c-cleanup-list '(scope-operator) | |
| 18720 | 365 "*List of various C/C++/ObjC constructs to \"clean up\". |
| 36920 | 366 The following clean ups only take place when the auto-newline feature |
| 367 is turned on, as evidenced by the `/a' or `/ah' appearing next to the | |
| 368 mode name: | |
| 18720 | 369 |
| 36920 | 370 brace-else-brace -- Clean up \"} else {\" constructs by placing |
| 371 entire construct on a single line. This clean | |
| 372 up only takes place when there is nothing but | |
| 18720 | 373 white space between the braces and the `else'. |
| 26817 | 374 Clean up occurs when the open brace after the |
| 18720 | 375 `else' is typed. |
| 36920 | 376 brace-elseif-brace -- Similar to brace-else-brace, but clean up |
| 377 \"} else if (...) {\" constructs. Clean up | |
| 378 occurs after the open parenthesis and the open | |
| 379 brace. | |
| 380 brace-catch-brace -- Similar to brace-elseif-brace, but clean up | |
| 381 \"} catch (...) {\" constructs. | |
| 382 empty-defun-braces -- Clean up empty defun braces by placing the | |
| 18720 | 383 braces on the same line. Clean up occurs when |
| 384 the defun closing brace is typed. | |
| 36920 | 385 defun-close-semi -- Clean up the terminating semi-colon on defuns |
| 18720 | 386 by placing the semi-colon on the same line as |
| 387 the closing brace. Clean up occurs when the | |
| 388 semi-colon is typed. | |
| 36920 | 389 list-close-comma -- Clean up commas following braces in array |
| 18720 | 390 and aggregate initializers. Clean up occurs |
| 391 when the comma is typed. | |
| 36920 | 392 scope-operator -- Clean up double colons which may designate |
| 18720 | 393 a C++ scope operator split across multiple |
| 36920 | 394 lines. Note that certain C++ constructs can |
| 18720 | 395 generate ambiguous situations. This clean up |
| 396 only takes place when there is nothing but | |
| 36920 | 397 whitespace between colons. Clean up occurs |
| 398 when the second colon is typed. | |
| 399 | |
| 400 The following clean ups always take place when they are on this list, | |
| 401 regardless of the auto-newline feature, since they typically don't | |
| 402 involve auto-newline inserted newlines: | |
| 403 | |
| 404 space-before-funcall -- Insert exactly one space before the opening | |
| 405 parenthesis of a function call. Clean up | |
| 406 occurs when the opening parenthesis is typed. | |
| 407 compact-empty-funcall -- Clean up any space before the function call | |
| 408 opening parenthesis if and only if the | |
| 409 argument list is empty. This is typically | |
| 410 useful together with `space-before-funcall' to | |
| 411 get the style \"foo (bar)\" and \"foo()\". | |
| 412 Clean up occurs when the closing parenthesis | |
| 413 is typed." | |
| 18720 | 414 :type '(set |
| 415 :extra-offset 8 | |
| 36920 | 416 (const :tag "Put \"} else {\" on one line" |
| 417 brace-else-brace) | |
| 418 (const :tag "Put \"} else if (...) {\" on one line" | |
| 419 brace-elseif-brace) | |
| 420 (const :tag "Put \"} catch (...) {\" on one line" | |
| 421 brace-catch-brace) | |
| 422 (const :tag "Put empty defun braces on one line" | |
| 423 empty-defun-braces) | |
| 424 (const :tag "Put \"};\" ending defuns on one line" | |
| 425 defun-close-semi) | |
| 426 (const :tag "Put \"},\" in aggregates on one line" | |
| 427 list-close-comma) | |
| 428 (const :tag "Put C++ style \"::\" on one line" | |
| 429 scope-operator) | |
| 430 (const :tag "Put a space before funcall parens, e.g. \"foo (bar)\"" | |
| 431 space-before-funcall) | |
| 432 (const :tag "Remove space before empty funcalls, e.g. \"foo()\"" | |
| 433 compact-empty-funcall)) | |
| 18720 | 434 :group 'c) |
| 435 | |
| 26817 | 436 (defcustom-c-stylevar c-hanging-braces-alist '((brace-list-open) |
| 437 (brace-entry-open) | |
| 438 (substatement-open after) | |
| 439 (block-close . c-snug-do-while) | |
| 440 (extern-lang-open after) | |
| 441 (inexpr-class-open after) | |
| 442 (inexpr-class-close before)) | |
| 443 "*Controls the insertion of newlines before and after braces | |
| 444 when the auto-newline feature is active. This variable contains an | |
| 445 association list with elements of the following form: | |
| 446 \(SYNTACTIC-SYMBOL . ACTION). | |
| 18720 | 447 |
| 448 When a brace (either opening or closing) is inserted, the syntactic | |
| 449 context it defines is looked up in this list, and if found, the | |
| 450 associated ACTION is used to determine where newlines are inserted. | |
| 451 If the context is not found, the default is to insert a newline both | |
| 452 before and after the brace. | |
| 453 | |
| 454 SYNTACTIC-SYMBOL can be any of: defun-open, defun-close, class-open, | |
| 455 class-close, inline-open, inline-close, block-open, block-close, | |
| 456 substatement-open, statement-case-open, extern-lang-open, | |
| 457 extern-lang-close, brace-list-open, brace-list-close, | |
| 26817 | 458 brace-list-intro, brace-entry-open, namespace-open, namespace-close, |
| 459 inexpr-class-open, or inexpr-class-close. See `c-offsets-alist' for | |
| 460 details, except for inexpr-class-open and inexpr-class-close, which | |
| 461 doesn't have any corresponding symbols there. Those two symbols are | |
| 462 used for the opening and closing braces, respectively, of anonymous | |
| 463 inner classes in Java. | |
| 18720 | 464 |
| 465 ACTION can be either a function symbol or a list containing any | |
| 466 combination of the symbols `before' or `after'. If the list is empty, | |
| 467 no newlines are inserted either before or after the brace. | |
| 468 | |
| 469 When ACTION is a function symbol, the function is called with a two | |
| 470 arguments: the syntactic symbol for the brace and the buffer position | |
| 471 at which the brace was inserted. The function must return a list as | |
| 472 described in the preceding paragraph. Note that during the call to | |
| 473 the function, the variable `c-syntactic-context' is set to the entire | |
| 474 syntactic context for the brace line." | |
| 26817 | 475 :type |
| 476 `(set ,@(mapcar | |
| 477 (lambda (elt) | |
| 478 `(cons :format "%v" | |
| 479 (c-const-symbol :format "%v: " | |
| 480 :size 20 | |
| 481 :value ,elt) | |
| 482 (choice :format "%[Choice%] %v" | |
| 483 :value (before after) | |
| 484 (set :menu-tag "Before/after" | |
| 485 :format "Newline %v brace\n" | |
| 486 (const :format "%v, " before) | |
| 487 (const :format "%v" after)) | |
| 488 (function :menu-tag "Function" | |
| 489 :format "Run function: %v" | |
| 490 :value c-)))) | |
| 491 '(defun-open defun-close | |
| 492 class-open class-close | |
| 493 inline-open inline-close | |
| 494 block-open block-close | |
| 495 substatement-open statement-case-open | |
| 496 extern-lang-open extern-lang-close | |
| 497 brace-list-open brace-list-close | |
| 498 brace-list-intro brace-entry-open | |
| 499 namespace-open namespace-close | |
| 500 inexpr-class-open inexpr-class-close))) | |
| 501 :group 'c) | |
| 18720 | 502 |
| 26817 | 503 (defcustom-c-stylevar c-hanging-colons-alist nil |
| 18720 | 504 "*Controls the insertion of newlines before and after certain colons. |
| 505 This variable contains an association list with elements of the | |
| 506 following form: (SYNTACTIC-SYMBOL . ACTION). | |
| 507 | |
| 508 SYNTACTIC-SYMBOL can be any of: case-label, label, access-label, | |
| 509 member-init-intro, or inher-intro. | |
| 510 | |
| 511 See the variable `c-hanging-braces-alist' for the semantics of this | |
| 512 variable. Note however that making ACTION a function symbol is | |
| 513 currently not supported for this variable." | |
| 26817 | 514 :type |
| 515 `(set ,@(mapcar | |
| 516 (lambda (elt) | |
| 517 `(cons :format "%v" | |
| 518 (c-const-symbol :format "%v: " | |
| 519 :size 20 | |
| 520 :value ,elt) | |
| 521 (set :format "Newline %v brace\n" | |
| 522 (const :format "%v, " before) | |
| 523 (const :format "%v" after)))) | |
| 524 '(case-label label access-label member-init-intro inher-intro))) | |
| 18720 | 525 :group 'c) |
| 526 | |
| 26817 | 527 (defcustom-c-stylevar c-hanging-semi&comma-criteria |
| 528 '(c-semi&comma-inside-parenlist) | |
| 18720 | 529 "*List of functions that decide whether to insert a newline or not. |
| 530 The functions in this list are called, in order, whenever the | |
| 531 auto-newline minor mode is activated (as evidenced by a `/a' or `/ah' | |
| 532 string in the mode line), and a semicolon or comma is typed (see | |
| 533 `c-electric-semi&comma'). Each function in this list is called with | |
| 534 no arguments, and should return one of the following values: | |
| 535 | |
| 536 nil -- no determination made, continue checking | |
| 537 'stop -- do not insert a newline, and stop checking | |
| 538 (anything else) -- insert a newline, and stop checking | |
| 539 | |
| 540 If every function in the list is called with no determination made, | |
| 541 then no newline is inserted." | |
| 542 :type '(repeat function) | |
| 543 :group 'c) | |
| 544 | |
| 26817 | 545 (defcustom-c-stylevar c-backslash-column 48 |
| 18720 | 546 "*Column to insert backslashes when macroizing a region." |
| 547 :type 'integer | |
| 548 :group 'c) | |
| 549 | |
| 550 (defcustom c-special-indent-hook nil | |
| 551 "*Hook for user defined special indentation adjustments. | |
| 552 This hook gets called after a line is indented by the mode." | |
| 553 :type 'hook | |
| 554 :group 'c) | |
| 555 | |
| 556 (defcustom c-backspace-function 'backward-delete-char-untabify | |
| 557 "*Function called by `c-electric-backspace' when deleting backwards." | |
| 558 :type 'function | |
| 559 :group 'c) | |
| 560 | |
| 561 (defcustom c-delete-function 'delete-char | |
| 562 "*Function called by `c-electric-delete' when deleting forwards." | |
| 563 :type 'function | |
| 564 :group 'c) | |
| 565 | |
| 566 (defcustom c-electric-pound-behavior nil | |
| 567 "*List of behaviors for electric pound insertion. | |
| 568 Only currently supported behavior is `alignleft'." | |
| 569 :type '(set :extra-offset 8 (const alignleft)) | |
| 570 :group 'c) | |
| 571 | |
| 26817 | 572 (defcustom-c-stylevar c-label-minimum-indentation 1 |
| 18720 | 573 "*Minimum indentation for lines inside of top-level constructs. |
| 574 This variable typically only affects code using the `gnu' style, which | |
| 575 mandates a minimum of one space in front of every line inside | |
| 576 top-level constructs. Specifically, the function | |
| 577 `c-gnu-impose-minimum' on your `c-special-indent-hook' is what | |
| 578 enforces this." | |
| 579 :type 'integer | |
| 580 :group 'c) | |
| 581 | |
| 582 (defcustom c-progress-interval 5 | |
| 583 "*Interval used to update progress status during long re-indentation. | |
| 584 If a number, percentage complete gets updated after each interval of | |
|
20144
56d81cc7b4f5
(c-progress-interval): Document new semantics
Karl Heuer <kwzh@gnu.org>
parents:
20140
diff
changeset
|
585 that many seconds. To inhibit all messages during indentation, set |
|
56d81cc7b4f5
(c-progress-interval): Document new semantics
Karl Heuer <kwzh@gnu.org>
parents:
20140
diff
changeset
|
586 this variable to nil." |
| 18720 | 587 :type 'integer |
| 588 :group 'c) | |
| 589 | |
| 36920 | 590 (defcustom c-default-style '((java-mode . "java") (other . "gnu")) |
| 24282 | 591 "*Style which gets installed by default when a file is visited. |
|
20919
9cffecf3b1ca
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20144
diff
changeset
|
592 |
|
9cffecf3b1ca
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20144
diff
changeset
|
593 The value of this variable can be any style defined in |
| 24282 | 594 `c-style-alist', including styles you add. The value can also be an |
| 595 association list of major mode symbols to style names. | |
| 596 | |
| 597 When the value is a string, all CC Mode major modes will install this | |
| 36920 | 598 style by default. |
|
20919
9cffecf3b1ca
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20144
diff
changeset
|
599 |
| 26817 | 600 When the value is an alist, the major mode symbol is looked up in it |
| 601 and the associated style is installed. If the major mode is not | |
| 602 listed in the alist, then the symbol `other' is looked up in it, and | |
| 603 if found, the style in that entry is used. If `other' is not found in | |
| 604 the alist, then \"gnu\" style is used. | |
| 605 | |
| 606 The default style gets installed before your mode hooks run, so you | |
| 607 can always override the use of `c-default-style' by making calls to | |
| 36920 | 608 `c-set-style' in the appropriate mode hook." |
| 26817 | 609 :type '(radio |
| 36920 | 610 (string :tag "Style in all modes") |
| 611 (set :tag "Mode-specific styles" | |
| 612 (cons :format "%v" | |
| 613 (const :format "C " c-mode) (string :format "%v")) | |
| 614 (cons :format "%v" | |
| 615 (const :format "C++ " c++-mode) (string :format "%v")) | |
| 616 (cons :format "%v" | |
| 617 (const :format "ObjC " objc-mode) (string :format "%v")) | |
| 618 (cons :format "%v" | |
| 619 (const :format "Java " java-mode) (string :format "%v")) | |
| 620 (cons :format "%v" | |
| 621 (const :format "IDL " idl-mode) (string :format "%v")) | |
| 622 (cons :format "%v" | |
| 623 (const :format "Pike " pike-mode) (string :format "%v")) | |
| 624 (cons :format "%v" | |
| 625 (const :format "Other " other) (string :format "%v")))) | |
| 26817 | 626 :group 'c) |
|
20919
9cffecf3b1ca
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20144
diff
changeset
|
627 |
| 26817 | 628 (put 'c-offsets-alist 'c-stylevar-fallback |
| 629 '((string . c-lineup-dont-change) | |
| 630 ;; Relpos: Beg of previous line. | |
| 631 (c . c-lineup-C-comments) | |
| 632 ;; Relpos: Beg of the comment. | |
| 633 (defun-open . 0) | |
| 634 ;; Relpos: Boi at the func decl start when inside classes, bol | |
| 635 ;; at the func decl start when at top level. | |
| 636 (defun-close . 0) | |
| 637 ;; Relpos: Boi at the func decl start. | |
| 638 (defun-block-intro . +) | |
| 639 ;; Relpos: Boi at the block open. | |
| 640 (class-open . 0) | |
| 641 ;; Relpos: Boi at the class decl start. | |
| 642 (class-close . 0) | |
| 643 ;; Relpos: Boi at the class decl start. | |
| 644 (inline-open . +) | |
| 645 ;; Relpos: None for functions (inclass got the relpos then), | |
| 646 ;; boi at the lambda start for lambdas. | |
| 647 (inline-close . 0) | |
| 648 ;; Relpos: For functions: Boi at the func decl start. For | |
| 649 ;; lambdas: At the block open if it's at boi, at the boi of the | |
| 650 ;; lambda start otherwise. | |
| 651 (func-decl-cont . +) | |
| 652 ;; Relpos: Boi at the func decl start. | |
| 653 (knr-argdecl-intro . +) | |
| 654 ;; Relpos: Boi at the current line. | |
| 655 (knr-argdecl . 0) | |
| 656 ;; Relpos: Boi at the argdecl intro line. | |
| 657 (topmost-intro . 0) | |
| 658 ;; Relpos: Bol at the last line of previous construct. | |
| 659 (topmost-intro-cont . 0) | |
| 660 ;; Relpos: Boi at the topmost intro line. | |
| 661 (member-init-intro . +) | |
| 662 ;; Relpos: Boi at the func decl arglist open. | |
|
30399
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
663 (member-init-cont . c-lineup-multi-inher) |
| 26817 | 664 ;; Relpos: Beg of the first member init. |
| 665 (inher-intro . +) | |
| 666 ;; Relpos: Java: Boi at the class decl start. Otherwise: Boi | |
| 667 ;; of current line (a bug?), unless it begins with an inher | |
| 668 ;; start colon, in which case boi of previous line is used. | |
| 669 (inher-cont . c-lineup-multi-inher) | |
| 670 ;; Relpos: Java: At the implements/extends keyword start. | |
| 671 ;; Otherwise: At the inher start colon, or boi at the class | |
| 672 ;; decl start if the first inherit clause hangs and it's not a | |
| 673 ;; func-local inherit clause (when does that occur?). | |
| 674 (block-open . 0) | |
| 42706 | 675 ;; Relpos: Inexpr statement: Boi at the preceding |
| 26817 | 676 ;; paren. Otherwise: None. |
| 677 (block-close . 0) | |
| 678 ;; Relpos: At the open brace if it's at boi. Otherwise boi at | |
| 679 ;; the start of the statement the open brace hangs on, or boi | |
| 680 ;; at the preceding paren for inexpr statements. | |
| 681 (brace-list-open . 0) | |
| 682 ;; Relpos: Boi at the brace list decl start, but a starting | |
| 683 ;; "typedef" token is ignored. | |
| 684 (brace-list-close . 0) | |
| 685 ;; Relpos: Boi at the brace list open. | |
| 686 (brace-list-intro . +) | |
| 687 ;; Relpos: Boi at the brace list open. | |
| 688 (brace-list-entry . 0) | |
| 689 ;; Relpos: At the first non-ws char after the open paren if the | |
| 690 ;; first token is on the same line, otherwise boi at that | |
| 691 ;; token. | |
| 692 (brace-entry-open . 0) | |
| 693 ;; Relpos: Same as brace-list-entry. | |
| 694 (statement . 0) | |
| 695 ;; Relpos: After a ';' in the condition clause of a for | |
| 696 ;; statement: At the first token after the starting paren. | |
| 697 ;; Otherwise: Boi at the start of the closest non-hanging | |
| 698 ;; previous statement, but after any switch label. | |
| 699 (statement-cont . +) | |
| 700 ;; Relpos: After the first token in the condition clause of a | |
| 701 ;; for statement: At the first token after the starting paren. | |
| 702 ;; On the first line in a continued expression that starts with | |
| 703 ;; a stream op and there's no stream op on the previous line: | |
| 704 ;; Boi of previous line. Otherwise: Boi at the beginning of | |
| 705 ;; the statement, but after any type of label. | |
| 706 (statement-block-intro . +) | |
| 707 ;; Relpos: At the block start if it's at boi, otherwise boi at | |
| 708 ;; the start of the statement the open brace hangs on, or boi | |
| 709 ;; at the preceding paren for inexpr statements. | |
| 710 (statement-case-intro . +) | |
| 711 ;; Relpos: At the label keyword (always at boi). | |
| 712 (statement-case-open . 0) | |
| 713 ;; Relpos: At the label keyword (always at boi). | |
| 714 (substatement . +) | |
| 715 ;; Relpos: Boi at the containing statement or else clause. | |
| 716 (substatement-open . +) | |
| 717 ;; Relpos: Boi at the containing statement or else clause. | |
| 718 (case-label . 0) | |
| 719 ;; Relpos: At the switch block start if it's at boi, otherwise | |
| 720 ;; boi at the start of the switch condition clause. | |
| 721 (access-label . -) | |
| 722 ;; Relpos: Eol (a bug?). | |
| 723 (label . 2) | |
| 724 ;; Relpos: At the start of the containing block if it's at boi, | |
| 725 ;; otherwise boi at the start of the sexp before the block. | |
| 726 (do-while-closure . 0) | |
| 727 ;; Relpos: Boi at the corresponding while keyword. | |
| 728 (else-clause . 0) | |
| 729 ;; Relpos: Boi at the corresponding if keyword. | |
| 730 (catch-clause . 0) | |
| 731 ;; Relpos: Boi at the previous try or catch keyword in the try | |
| 732 ;; statement. | |
| 733 (comment-intro . c-lineup-comment) | |
| 734 ;; Relpos: None. | |
| 735 (arglist-intro . +) | |
|
30399
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
736 ;; Relpos: Boi at the open paren, or at the first non-ws after |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
737 ;; the open paren of the surrounding sexp, whichever is later. |
| 26817 | 738 (arglist-cont . 0) |
| 739 ;; Relpos: At the first token after the open paren. | |
| 740 (arglist-cont-nonempty . c-lineup-arglist) | |
|
30399
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
741 ;; Relpos: Boi at the open paren, or at the first non-ws after |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
742 ;; the open paren of the surrounding sexp, whichever is later. |
| 26817 | 743 (arglist-close . +) |
|
30399
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
744 ;; Relpos: Boi at the open paren, or at the first non-ws after |
|
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
745 ;; the open paren of the surrounding sexp, whichever is later. |
| 26817 | 746 (stream-op . c-lineup-streamop) |
| 747 ;; Relpos: Boi at the first stream op in the statement. | |
| 748 (inclass . +) | |
| 749 ;; Relpos: At the class open brace if it's at boi, otherwise | |
| 750 ;; boi at the class decl start. | |
| 36920 | 751 (cpp-macro . [0]) |
|
30399
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
752 ;; Relpos: None. |
| 26817 | 753 (cpp-macro-cont . c-lineup-dont-change) |
| 754 ;; Relpos: At the macro start (always at boi). | |
| 755 (friend . 0) | |
| 756 ;; Relpos: None. | |
| 36920 | 757 (objc-method-intro . [0]) |
| 26817 | 758 ;; Relpos: Boi. |
| 759 (objc-method-args-cont . c-lineup-ObjC-method-args) | |
| 760 ;; Relpos: At the method start (always at boi). | |
| 761 (objc-method-call-cont . c-lineup-ObjC-method-call) | |
| 762 ;; Relpos: At the open bracket. | |
| 763 (extern-lang-open . 0) | |
| 764 ;; Relpos: Boi at the extern keyword. | |
| 765 (extern-lang-close . 0) | |
| 766 ;; Relpos: Boi at the corresponding extern keyword. | |
| 767 (inextern-lang . +) | |
| 768 ;; Relpos: At the extern block open brace if it's at boi, | |
| 769 ;; otherwise boi at the extern keyword. | |
| 770 (namespace-open . 0) | |
| 771 ;; Relpos: Boi at the namespace keyword. | |
| 772 (namespace-close . 0) | |
| 773 ;; Relpos: Boi at the corresponding namespace keyword. | |
| 774 (innamespace . +) | |
| 775 ;; Relpos: At the namespace block open brace if it's at boi, | |
| 776 ;; otherwise boi at the namespace keyword. | |
| 777 (template-args-cont . (c-lineup-template-args +)) | |
| 778 ;; Relpos: Boi at the decl start. | |
| 779 (inlambda . c-lineup-inexpr-block) | |
| 780 ;; Relpos: None. | |
| 781 (lambda-intro-cont . +) | |
| 782 ;; Relpos: Boi at the lambda start. | |
| 783 (inexpr-statement . 0) | |
| 784 ;; Relpos: None. | |
| 785 (inexpr-class . +) | |
| 786 ;; Relpos: None. | |
| 787 )) | |
| 788 (defcustom c-offsets-alist nil | |
| 789 "Association list of syntactic element symbols and indentation offsets. | |
| 790 As described below, each cons cell in this list has the form: | |
| 24282 | 791 |
| 26817 | 792 (SYNTACTIC-SYMBOL . OFFSET) |
| 793 | |
| 794 When a line is indented, CC Mode first determines the syntactic | |
| 795 context of it by generating a list of symbols called syntactic | |
| 796 elements. This list can contain more than one syntactic element and | |
| 797 the global variable `c-syntactic-context' contains the context list | |
| 798 for the line being indented. Each element in this list is actually a | |
| 799 cons cell of the syntactic symbol and a buffer position. This buffer | |
| 800 position is called the relative indent point for the line. Some | |
| 801 syntactic symbols may not have a relative indent point associated with | |
| 802 them. | |
| 803 | |
| 804 After the syntactic context list for a line is generated, CC Mode | |
| 805 calculates the absolute indentation for the line by looking at each | |
| 806 syntactic element in the list. It compares the syntactic element | |
| 807 against the SYNTACTIC-SYMBOL's in `c-offsets-alist'. When it finds a | |
| 808 match, it adds the OFFSET to the column of the relative indent point. | |
| 809 The sum of this calculation for each element in the syntactic list is | |
| 810 the absolute offset for line being indented. | |
| 811 | |
| 812 If the syntactic element does not match any in the `c-offsets-alist', | |
| 36920 | 813 the element is ignored. |
| 814 | |
| 815 If OFFSET is nil, the syntactic element is ignored in the offset | |
| 816 calculation. | |
| 817 | |
| 818 If OFFSET is an integer, it's added to the relative indent. | |
| 819 | |
| 820 If OFFSET is one of the symbols `+', `-', `++', `--', `*', or `/', a | |
| 821 positive or negative multiple of `c-basic-offset' is added; 1, -1, 2, | |
| 822 -2, 0.5, and -0.5, respectively. | |
| 26817 | 823 |
| 36920 | 824 If OFFSET is a vector, it's first element, which must be an integer, |
| 825 is used as an absolute indentation column. This overrides all | |
| 826 relative offsets. If there are several syntactic elements which | |
| 827 evaluates to absolute indentation columns, the first one takes | |
| 828 precedence. You can see in which order CC Mode combines the syntactic | |
| 829 elements in a certain context by using \\[c-show-syntactic-information] on the line. | |
| 26817 | 830 |
| 36920 | 831 If OFFSET is a function, it's called with a single argument |
| 832 containing the cons of the syntactic element symbol and the relative | |
| 833 indent point. The return value from the function is then | |
| 834 reinterpreted as an OFFSET value. | |
| 835 | |
| 836 If OFFSET is a list, it's recursively evaluated using the semantics | |
| 837 described above. The first element of the list to return a non-nil | |
| 838 value succeeds. If none of the elements returns a non-nil value, the | |
| 839 syntactic element is ignored. | |
| 26817 | 840 |
| 841 `c-offsets-alist' is a style variable. This means that the offsets on | |
| 842 this variable are normally taken from the style system in CC Mode | |
| 843 \(see `c-default-style' and `c-styles-alist'). However, any offsets | |
| 844 put explicitly on this list will override the style system when a CC | |
| 845 Mode buffer is initialized \(there is a variable | |
| 846 `c-old-style-variable-behavior' that changes this, though). | |
| 847 | |
| 848 Here is the current list of valid syntactic element symbols: | |
| 849 | |
| 850 string -- Inside multi-line string. | |
| 851 c -- Inside a multi-line C style block comment. | |
| 852 defun-open -- Brace that opens a function definition. | |
| 853 defun-close -- Brace that closes a function definition. | |
| 854 defun-block-intro -- The first line in a top-level defun. | |
| 855 class-open -- Brace that opens a class definition. | |
| 856 class-close -- Brace that closes a class definition. | |
| 857 inline-open -- Brace that opens an in-class inline method. | |
| 858 inline-close -- Brace that closes an in-class inline method. | |
| 859 func-decl-cont -- The region between a function definition's | |
| 860 argument list and the function opening brace | |
| 861 (excluding K&R argument declarations). In C, you | |
| 862 cannot put anything but whitespace and comments | |
| 863 between them; in C++ and Java, throws declarations | |
| 864 and other things can appear in this context. | |
| 865 knr-argdecl-intro -- First line of a K&R C argument declaration. | |
| 866 knr-argdecl -- Subsequent lines in a K&R C argument declaration. | |
| 867 topmost-intro -- The first line in a topmost construct definition. | |
| 868 topmost-intro-cont -- Topmost definition continuation lines. | |
| 869 member-init-intro -- First line in a member initialization list. | |
| 870 member-init-cont -- Subsequent member initialization list lines. | |
| 871 inher-intro -- First line of a multiple inheritance list. | |
| 872 inher-cont -- Subsequent multiple inheritance lines. | |
| 873 block-open -- Statement block open brace. | |
| 874 block-close -- Statement block close brace. | |
| 875 brace-list-open -- Open brace of an enum or static array list. | |
| 876 brace-list-close -- Close brace of an enum or static array list. | |
| 877 brace-list-intro -- First line in an enum or static array list. | |
| 878 brace-list-entry -- Subsequent lines in an enum or static array list. | |
| 879 brace-entry-open -- Subsequent lines in an enum or static array | |
| 880 list that start with an open brace. | |
| 881 statement -- A C (or like) statement. | |
| 882 statement-cont -- A continuation of a C (or like) statement. | |
| 883 statement-block-intro -- The first line in a new statement block. | |
| 884 statement-case-intro -- The first line in a case \"block\". | |
| 885 statement-case-open -- The first line in a case block starting with brace. | |
| 886 substatement -- The first line after an if/while/for/do/else. | |
| 887 substatement-open -- The brace that opens a substatement block. | |
| 888 case-label -- A `case' or `default' label. | |
| 889 access-label -- C++ private/protected/public access label. | |
| 890 label -- Any ordinary label. | |
| 891 do-while-closure -- The `while' that ends a do/while construct. | |
| 892 else-clause -- The `else' of an if/else construct. | |
| 893 catch-clause -- The `catch' or `finally' of a try/catch construct. | |
| 894 comment-intro -- A line containing only a comment introduction. | |
| 895 arglist-intro -- The first line in an argument list. | |
| 896 arglist-cont -- Subsequent argument list lines when no | |
| 897 arguments follow on the same line as the | |
| 898 arglist opening paren. | |
| 899 arglist-cont-nonempty -- Subsequent argument list lines when at | |
| 900 least one argument follows on the same | |
| 901 line as the arglist opening paren. | |
| 902 arglist-close -- The solo close paren of an argument list. | |
| 903 stream-op -- Lines continuing a stream operator construct. | |
| 904 inclass -- The construct is nested inside a class definition. | |
| 905 Used together with e.g. `topmost-intro'. | |
| 906 cpp-macro -- The start of a C preprocessor macro definition. | |
| 907 cpp-macro-cont -- Subsequent lines in a multi-line C preprocessor | |
| 908 macro definition. | |
| 909 friend -- A C++ friend declaration. | |
| 910 objc-method-intro -- The first line of an Objective-C method definition. | |
| 911 objc-method-args-cont -- Lines continuing an Objective-C method definition. | |
| 912 objc-method-call-cont -- Lines continuing an Objective-C method call. | |
| 913 extern-lang-open -- Brace that opens an external language block. | |
| 914 extern-lang-close -- Brace that closes an external language block. | |
| 915 inextern-lang -- Analogous to the `inclass' syntactic symbol, | |
| 916 but used inside extern constructs. | |
| 917 namespace-open -- Brace that opens a C++ namespace block. | |
| 918 namespace-close -- Brace that closes a C++ namespace block. | |
| 919 innamespace -- Analogous to the `inextern-lang' syntactic | |
| 920 symbol, but used inside C++ namespace constructs. | |
| 921 template-args-cont -- C++ template argument list continuations. | |
| 922 inlambda -- In the header or body of a lambda function. | |
| 923 lambda-intro-cont -- Continuation of the header of a lambda function. | |
| 924 inexpr-statement -- The statement is inside an expression. | |
| 925 inexpr-class -- The class is inside an expression. Used e.g. for | |
| 926 Java anonymous classes." | |
| 927 :type | |
| 928 `(set :format "%{%t%}: | |
| 929 Override style setting | |
| 930 | Syntax Offset | |
| 931 %v" | |
| 932 ,@(mapcar | |
| 933 (lambda (elt) | |
| 934 `(cons :format "%v" | |
| 935 :value ,elt | |
| 936 (c-const-symbol :format "%v: " | |
| 937 :size 25) | |
| 938 (sexp :format "%v" | |
| 939 :validate | |
| 940 (lambda (widget) | |
| 941 (unless (c-valid-offset (widget-value widget)) | |
| 942 (widget-put widget :error "Invalid offset") | |
| 943 widget))))) | |
| 944 (get 'c-offsets-alist 'c-stylevar-fallback))) | |
| 18720 | 945 :group 'c) |
| 946 | |
|
30399
7b0a7b155fe2
(c-style-variables-are-local-p): Incompatible
Gerd Moellmann <gerd@gnu.org>
parents:
26817
diff
changeset
|
947 (defcustom c-style-variables-are-local-p t |
| 18720 | 948 "*Whether style variables should be buffer local by default. |
| 949 If non-nil, then all indentation style related variables will be made | |
| 950 buffer local by default. If nil, they will remain global. Variables | |
| 951 are made buffer local when this file is loaded, and once buffer | |
| 952 localized, they cannot be made global again. | |
| 953 | |
| 954 The list of variables to buffer localize are: | |
| 955 c-offsets-alist | |
| 956 c-basic-offset | |
| 957 c-comment-only-line-offset | |
| 26817 | 958 c-block-comment-prefix |
| 959 c-comment-prefix-regexp | |
| 18720 | 960 c-cleanup-list |
| 961 c-hanging-braces-alist | |
| 962 c-hanging-colons-alist | |
| 26817 | 963 c-hanging-semi&comma-criteria |
| 18720 | 964 c-backslash-column |
| 965 c-label-minimum-indentation | |
| 966 c-special-indent-hook | |
| 967 c-indentation-style" | |
| 968 :type 'boolean | |
| 969 :group 'c) | |
| 970 | |
| 971 (defcustom c-mode-hook nil | |
| 972 "*Hook called by `c-mode'." | |
| 26817 | 973 :type 'hook |
| 18720 | 974 :group 'c) |
| 975 | |
| 976 (defcustom c++-mode-hook nil | |
| 977 "*Hook called by `c++-mode'." | |
| 978 :type 'hook | |
| 979 :group 'c) | |
| 980 | |
| 981 (defcustom objc-mode-hook nil | |
| 982 "*Hook called by `objc-mode'." | |
| 983 :type 'hook | |
| 984 :group 'c) | |
| 985 | |
| 986 (defcustom java-mode-hook nil | |
| 987 "*Hook called by `java-mode'." | |
| 988 :type 'hook | |
| 989 :group 'c) | |
| 990 | |
|
19255
40a9475f22ea
(idl-mode-hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18848
diff
changeset
|
991 (defcustom idl-mode-hook nil |
|
40a9475f22ea
(idl-mode-hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18848
diff
changeset
|
992 "*Hook called by `idl-mode'." |
|
40a9475f22ea
(idl-mode-hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18848
diff
changeset
|
993 :type 'hook |
|
40a9475f22ea
(idl-mode-hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18848
diff
changeset
|
994 :group 'c) |
|
40a9475f22ea
(idl-mode-hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18848
diff
changeset
|
995 |
| 26817 | 996 (defcustom pike-mode-hook nil |
| 997 "*Hook called by `pike-mode'." | |
| 998 :type 'hook | |
| 999 :group 'c) | |
| 1000 | |
| 18720 | 1001 (defcustom c-mode-common-hook nil |
| 1002 "*Hook called by all CC Mode modes for common initializations." | |
| 1003 :type '(hook :format "%{CC Mode Common Hook%}:\n%v") | |
| 1004 :group 'c) | |
| 1005 | |
|
19255
40a9475f22ea
(idl-mode-hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18848
diff
changeset
|
1006 (defcustom c-initialization-hook nil |
|
40a9475f22ea
(idl-mode-hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18848
diff
changeset
|
1007 "*Hook called when the CC Mode package gets initialized. |
|
40a9475f22ea
(idl-mode-hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18848
diff
changeset
|
1008 This hook is only run once per Emacs session and can be used as a |
|
40a9475f22ea
(idl-mode-hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18848
diff
changeset
|
1009 `load-hook' or in place of using `eval-after-load'." |
|
40a9475f22ea
(idl-mode-hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18848
diff
changeset
|
1010 :type 'hook |
|
40a9475f22ea
(idl-mode-hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18848
diff
changeset
|
1011 :group 'c) |
|
40a9475f22ea
(idl-mode-hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18848
diff
changeset
|
1012 |
| 24282 | 1013 (defcustom c-enable-xemacs-performance-kludge-p nil |
|
20919
9cffecf3b1ca
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20144
diff
changeset
|
1014 "*Enables a XEmacs only hack that may improve speed for some coding styles. |
|
9cffecf3b1ca
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20144
diff
changeset
|
1015 For styles that hang top-level opening braces (as is common with JDK |
|
9cffecf3b1ca
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20144
diff
changeset
|
1016 Java coding styles) this can improve performance between 3 and 60 |
|
9cffecf3b1ca
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20144
diff
changeset
|
1017 times for core indentation functions (e.g. `c-parse-state'). For |
|
9cffecf3b1ca
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20144
diff
changeset
|
1018 styles that conform to the Emacs recommendation of putting these |
| 24282 | 1019 braces in column zero, this can degrade performance about as much. |
| 1020 This variable only has effect in XEmacs.") | |
| 18720 | 1021 |
| 26817 | 1022 (defcustom c-old-style-variable-behavior nil |
| 1023 "*Enables the old style variable behavior when non-nil. | |
| 1024 | |
| 1025 Normally the values of the style variables will override the style | |
| 1026 settings specified by the variables `c-default-style' and | |
| 1027 `c-styles-alist'. However, in CC Mode 5.25 and earlier, it was the | |
| 1028 other way around, meaning that changes made to the style variables | |
| 1029 from e.g. Customize would not take effect unless special precautions | |
| 1030 were taken. That was confusing, especially for novice users. | |
| 1031 | |
| 1032 It's believed that despite this change, the new behavior will still | |
| 1033 produce the same results for most old CC Mode configurations, since | |
| 1034 all style variables are per default set in a special non-override | |
| 1035 state. Set this variable only if your configuration has stopped | |
| 1036 working due to this change.") | |
| 1037 | |
| 1038 | |
| 18720 | 1039 |
| 1040 ;; Non-customizable variables, still part of the interface to CC Mode | |
| 1041 (defvar c-file-style nil | |
| 1042 "Variable interface for setting style via File Local Variables. | |
| 1043 In a file's Local Variable section, you can set this variable to a | |
| 1044 string suitable for `c-set-style'. When the file is visited, CC Mode | |
| 1045 will set the style of the file to this value automatically. | |
| 1046 | |
| 1047 Note that file style settings are applied before file offset settings | |
| 1048 as designated in the variable `c-file-offsets'.") | |
| 26817 | 1049 (make-variable-buffer-local 'c-file-style) |
| 18720 | 1050 |
| 1051 (defvar c-file-offsets nil | |
| 1052 "Variable interface for setting offsets via File Local Variables. | |
| 1053 In a file's Local Variable section, you can set this variable to an | |
| 1054 association list similar to the values allowed in `c-offsets-alist'. | |
| 1055 When the file is visited, CC Mode will institute these offset settings | |
| 1056 automatically. | |
| 1057 | |
| 1058 Note that file offset settings are applied after file style settings | |
| 1059 as designated in the variable `c-file-style'.") | |
| 26817 | 1060 (make-variable-buffer-local 'c-file-offsets) |
| 18720 | 1061 |
| 1062 (defvar c-syntactic-context nil | |
| 36920 | 1063 "Variable containing syntactic analysis list during indentation. |
| 1064 This is always bound dynamically. It should never be set statically | |
|
39834
0f64721b0bb8
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38422
diff
changeset
|
1065 \(e.g. with `setq').") |
| 18720 | 1066 |
| 26817 | 1067 (defvar c-indentation-style nil |
| 36920 | 1068 "Name of the currently installed style. |
| 1069 Don't change this directly; call `c-set-style' instead.") | |
| 18720 | 1070 |
| 36920 | 1071 (defvar c-current-comment-prefix nil |
| 1072 "The current comment prefix regexp. | |
| 1073 Set from `c-comment-prefix-regexp' at mode initialization.") | |
| 1074 (make-variable-buffer-local 'c-current-comment-prefix) | |
|
19298
4a99e63dc4a9
(c-buffer-is-cc-mode): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
19255
diff
changeset
|
1075 |
| 18720 | 1076 |
|
21105
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1077 ;; Figure out what features this Emacs has |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1078 ;;;###autoload |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1079 (defconst c-emacs-features |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1080 (let ((infodock-p (boundp 'infodock-version)) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1081 (comments |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1082 ;; XEmacs 19 and beyond use 8-bit modify-syntax-entry flags. |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1083 ;; Emacs 19 uses a 1-bit flag. We will have to set up our |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1084 ;; syntax tables differently to handle this. |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1085 (let ((table (copy-syntax-table)) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1086 entry) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1087 (modify-syntax-entry ?a ". 12345678" table) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1088 (cond |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1089 ;; XEmacs 19, and beyond Emacs 19.34 |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1090 ((arrayp table) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1091 (setq entry (aref table ?a)) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1092 ;; In Emacs, table entries are cons cells |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1093 (if (consp entry) (setq entry (car entry)))) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1094 ;; XEmacs 20 |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1095 ((fboundp 'get-char-table) (setq entry (get-char-table ?a table))) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1096 ;; before and including Emacs 19.34 |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1097 ((and (fboundp 'char-table-p) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1098 (char-table-p table)) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1099 (setq entry (car (char-table-range table [?a])))) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1100 ;; incompatible |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1101 (t (error "CC Mode is incompatible with this version of Emacs"))) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1102 (if (= (logand (lsh entry -16) 255) 255) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1103 '8-bit |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1104 '1-bit)))) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1105 (if infodock-p |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1106 (list comments 'infodock) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1107 (list comments))) |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1108 "A list of features extant in the Emacs you are using. |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1109 There are many flavors of Emacs out there, each with different |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1110 features supporting those needed by CC Mode. Here's the current |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1111 supported list, along with the values for this variable: |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1112 |
| 26817 | 1113 XEmacs 19, 20, 21: (8-bit) |
| 1114 Emacs 19, 20: (1-bit) | |
|
21105
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1115 |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1116 Infodock (based on XEmacs) has an additional symbol on this list: |
|
21111
dad4e4facdc0
(c-emacs-features): Var moved from cc-defs.el.
Richard M. Stallman <rms@gnu.org>
parents:
21105
diff
changeset
|
1117 `infodock'.") |
|
21105
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1118 |
|
b40ae72a5b26
(c-enable-xemacs-performance-kludge-p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
20919
diff
changeset
|
1119 |
| 36920 | 1120 (cc-provide 'cc-vars) |
|
38422
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Jan?k <Pavel@Janik.cz>
parents:
36920
diff
changeset
|
1121 |
| 18720 | 1122 ;;; cc-vars.el ends here |
