@comment No overfull hbox marks in the dvi file.
@finalout
-@setfilename cc-mode.info
+@setfilename ../info/ccmode
@settitle CC Mode Manual
@footnotestyle end
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@comment
+@comment
@comment Texinfo manual for CC Mode
@comment Generated from the original README file by Krishna Padmasola
@comment <krishna@earth-gw.njit.edu>
@comment Martin Stjernholm
@comment
@comment Maintained by Martin Stjernholm <bug-cc-mode@gnu.org>
-@comment
+@comment
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@macro copyrightblurb
-Copyright @copyright{} 1995, 96, 97, 98, 99, 2000, 01 Free Software Foundation, Inc.
-@end macro
+@copying
+This manual is for CC Mode in Emacs.
+
+Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free
+Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``The GNU Manifesto'', ``Distribution'' and
+``GNU GENERAL PUBLIC LICENSE'', with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
+
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software. Copies published by the Free
+Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+@end quotation
+@end copying
+
@comment Info directory entry for use by install-info. The indentation
@comment here is by request from the FSF folks.
@dircategory Emacs
@direntry
-* CC Mode: (cc-mode). Emacs mode for editing C, C++, Objective-C,
+* CC Mode: (ccmode). Emacs mode for editing C, C++, Objective-C,
Java, Pike, and IDL code.
@end direntry
-@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@comment The following lines inserts the copyright notice
-@comment into the Info file.
-@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-@ifnottex
-@copyrightblurb
-@end ifnottex
-
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@comment TeX title page
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@page
@vskip 0pt plus 1filll
-@copyrightblurb
+@insertcopying
@end titlepage
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@findex java-mode
@findex idl-mode
@findex pike-mode
-Note that the name of this package is ``@ccmode{}'', but there is no top
+Note that the name of this package is ``@ccmode{},'' but there is no top
level @code{cc-mode} entry point. All of the variables, commands, and
functions in @ccmode{} are prefixed with @code{c-@var{<thing>}}, and
@code{c-mode}, @code{c++-mode}, @code{objc-mode}, @code{java-mode},
which is the brace just after the function header.
Here's another example:
-@example
+@example
@group
1: int add( int val, int incr, int doit )
@findex toggle-hungry-state (c-)
@findex toggle-auto-state (c-)
@findex toggle-auto-hungry-state (c-)
-@ccmode{} provides keybindings which allow you to toggle the minor
+@ccmode{} provides key bindings which allow you to toggle the minor
modes on the fly while editing code. To toggle just the auto-newline
state, hit @kbd{C-c C-a} (@code{c-toggle-auto-state}). When you do
this, you should see the @samp{a} indicator either appear or disappear
@example
@group
-void spam( int i )
+void spam( int i )
@{
// this is a comment-only line...
if( i == 7 ) // but this is not
@dfn{Clean-ups} are mechanisms complementary to colon and brace hanging.
On the surface, it would seem that clean-ups overlap the functionality
provided by the @code{c-hanging-*-alist} variables. Clean-ups are
-however used to adjust code ``after-the-fact'', i.e. to adjust the
+however used to adjust code ``after-the-fact,'' i.e. to adjust the
whitespace in constructs after they are typed.
Most of the clean-ups are only applicable to counteract automatically
In a nutshell, when hungry-delete mode is enabled, hitting the
@key{Backspace} key@footnote{I say ``hit the @key{Backspace} key'' but
what I really mean is ``when Emacs receives the @code{BackSpace} key
-event''. The difference usually isn't significant to most users, but
+event.'' The difference usually isn't significant to most users, but
advanced users will realize that under window systems such as X, any
physical key (keycap) on the keyboard can be configured to generate any
keysym, and thus any Emacs key event. Also, the use of Emacs on TTYs
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
The following list of commands re-indent C constructs. Note that when
-you change your coding style, either interactively or through some other
+you change your coding style, either interactively or through some other
means, your file does @emph{not} automatically get re-indented. You
-will need to execute one of the following commands to see the effects of
+will need to execute one of the following commands to see the effects of
your changes.
@cindex GNU indent program
Re-indenting large sections of code can take a long time. When
@ccmode{} reindents a region of code, it is essentially equivalent to
-hitting @kbd{TAB} on every line of the region. Especially vulnerable is
+hitting @kbd{TAB} on every line of the region. Especially vulnerable is
code generator output@footnote{In particular, I have had people
complain about the speed with which @code{lex(1)} output is re-indented.
Lex, yacc, and other code generators usually output some pretty
numeric argument, this command rigidly indents the region, preserving
the relative indentation among the lines.
-@kindex M-C-q
+@kindex C-M-q
@findex c-indent-exp
@findex indent-exp (c-)
-@item @kbd{M-C-q} (@code{c-indent-exp})
+@item @kbd{C-M-q} (@code{c-indent-exp})
Indent an entire balanced brace or parenthesis expression. Note that
point must be on the opening brace or parenthesis of the expression you
want to indent.
or a Java method. The top-level construct being re-indented must be
complete, i.e. it must have both a beginning brace and an ending brace.
-@kindex M-C-\
+@kindex C-M-\
@findex indent-region
-@item @kbd{M-C-\} (@code{indent-region})
+@item @kbd{C-M-\} (@code{indent-region})
Indents an arbitrary region of code. This is a standard Emacs command,
tailored for C code in a @ccmode{} buffer. Note that of course, point
and mark must delineate the region you want to indent.
-@kindex M-C-h
+@kindex C-M-h
@findex c-mark-function
@findex mark-function (c-)
-@item @kbd{M-C-h} (@code{c-mark-function})
+@item @kbd{C-M-h} (@code{c-mark-function})
While not strictly an indentation command, this is useful for marking
the current top-level function or class definition as the current
region. As with @code{c-indent-defun}, this command operates on
@vindex c-progress-interval
@vindex progress-interval (c-)
@item c-progress-interval
-When indenting large regions of code, this variable controls how often a
+When indenting large regions of code, this variable controls how often a
progress message is displayed. Set this variable to @code{nil} to
inhibit the progress messages, or set it to an integer which is the
interval in seconds that progress messages are displayed.
Move point to the beginning of the innermost C statement. If point is
already at the beginning of a statement, move to the beginning of the
closest preceding statement, even if that means moving into a block (you
-can use @kbd{M-C-b} to move over a balanced block). With prefix
+can use @kbd{C-M-b} to move over a balanced block). With prefix
argument @var{n}, move back @var{n} @minus{} 1 statements.
If point is within or next to a comment or a string which spans more
@item @kbd{M-e} (@code{c-end-of-statement})
Move point to the end of the innermost C statement. If point is at the
end of a statement, move to the end of the next statement, even if it's
-inside a nested block (use @kbd{M-C-f} to move to the other side of the
+inside a nested block (use @kbd{C-M-f} to move to the other side of the
block). With prefix argument @var{n}, move forward @var{n} @minus{} 1
statements.
@findex set-offset (c-)
You can use the command @kbd{C-c C-o} (@code{c-set-offset}) as the way
to set offsets, both interactively and from your mode
-hook@footnote{Obviously, you use the keybinding interactively, and the
+hook@footnote{Obviously, you use the key binding interactively, and the
function call programmatically!}.
@vindex c-basic-offset
none of the list elements return a non-@code{nil} value, then an offset
of 0 (zero) is used@footnote{There is however a variable
@code{c-strict-syntax-p} that, when set to non-@code{nil}, will cause an
-error to be signalled in that case. It's now considered obsolete since
+error to be signaled in that case. It's now considered obsolete since
it doesn't work well with some of the alignment functions that now
returns @code{nil} instead of zero to be more usable in lists. You
should therefore leave @code{c-strict-syntax-p} set to @code{nil}.}.
@item
@code{bsd} --- Also known as ``Allman style'' after Eric Allman.
-@cindex Whitesmith style
+@cindex Whitesmiths style
@item
@code{whitesmith} --- Popularized by the examples that came with
Whitesmiths C, an early commercial C compiler.
@cindex Ellemtel style
@item
@code{ellemtel} --- Popular C++ coding standards as defined by
-``Programming in C++, Rules and Recommendations'', Erik Nyquist and Mats
+``Programming in C++, Rules and Recommendations,'' Erik Nyquist and Mats
Henricson, Ellemtel@footnote{This document is available at
@uref{http://www.doc.ic.ac.uk/lab/cplus/c++.rules/} among other
places.}.
@cindex Linux style
@item
-@code{linux} --- C coding standard for Linux development.
+@code{linux} --- C coding standard for Linux (the kernel).
@cindex Python style
@item
@item
When @code{c-default-style} is an association list, the current major
-mode is looked up to find a style name string. In this case, this style
-is always used exactly as specified and an error will occur if the named
+mode is looked up to find a style name string. In this case, this style
+is always used exactly as specified and an error will occur if the named
style does not exist.
@item
If @code{c-default-style} is an association list, but the current major
-mode isn't found, then the special symbol @samp{other} is looked up. If
+mode isn't found, then the special symbol @samp{other} is looked up. If
this value is found, the associated style is used.
@item
If @samp{other} is not found, then the @samp{gnu} style is used.
@item
-In all cases, the style described in @code{c-default-style} is installed
+In all cases, the style described in @code{c-default-style} is installed
@emph{before} the language hooks are run, so you can always override
-this setting by including an explicit call to @code{c-set-style} in your
+this setting by including an explicit call to @code{c-set-style} in your
language mode hook, or in @code{c-mode-common-hook}.
@end enumerate
like @ccmode{} to be a little more intelligent so that it aligns
all the @samp{<<} symbols in lines 3 through 6. To do this, we have
to write a custom indentation function which finds the column of first
-stream operator on the first line of the statement. Here is sample
+stream operator on the first line of the statement. Here is sample
lisp code implementing this:
@example
@group
code, regardless of whether @kbd{TAB} or @kbd{M-;} were used. This
behavior is controlled by the variable
@code{c-indent-comments-syntactically-p}. When @code{nil} (the
-default), @kbd{M-;} indents comment-only lines to @code{comment-column},
+default), @kbd{M-;} indents comment-only lines to @code{comment-column},
otherwise, they are indented just as they would be if @kbd{TAB} were
typed.
@example
@group
- 1: extern "C"
+ 1: extern "C"
2: @{
3: int thing_one( int );
4: int thing_two( double );
@noindent
line 2 is given the @code{namespace-open} syntax, while line 4 is given
the @code{namespace-close} syntax. The analysis for line 3 yields:
-@code{((innamespace) (topmost-intro . 17))}, where @code{innamespace} is
+@code{((innamespace) (topmost-intro . 17))}, where @code{innamespace} is
a modifier similar in purpose to @code{inextern-lang} and @code{inclass}.
A number of syntactic symbols are associated with parenthesis lists,
1: void a_function( int line1,
2: int line2 );
- 3:
+ 3:
4: void a_longer_function(
5: int line1,
6: int line2
7: );
- 8:
+ 8:
9: void call_them( int line1, int line2 )
10: @{
11: a_function(
12: line1,
13: line2
14: );
- 15:
+ 15:
16: a_longer_function( line1,
17: line2 );
18: @}
3: @{
4: /* this line starts a multi-line
5: * comment. This line should get `c' syntax */
- 6:
+ 6:
7: char* a_multiline_string = "This line starts a multi-line \
8: string. This line should get `string' syntax.";
- 9:
+ 9:
10: note:
11: @{
12: #ifdef LOCK
@end example
@noindent
line 1 is given the syntactic symbol @code{cpp-macro}. This first line
-of a macro is always given this symbol. The second and subsequent lines
+of a macro is always given this symbol. The second and subsequent lines
(e.g. lines 2 through 5) are given the @code{cpp-macro-cont} syntactic
symbol, with a relative buffer position pointing to the @code{#} which
starts the macro definition.
@group
main (int,
- char **
+ char **
) // c-lineup-close-paren
@end group
@group
class Foo
- extends
+ extends
Bar // c-lineup-java-inher
<--> c-basic-offset
if (n > 0)
@{m+=n; n=0;@} // c-indent-one-line-block
-
-<--> c-basic-offset
+
+<--> c-basic-offset
@end group
@end example
@group
int *foo[] = @{
- NULL,
+ NULL,
@{17@}, // c-indent-multi-line-block
@end group
@findex c-lineup-whitesmith-in-block
@findex lineup-whitesmith-in-block (c-)
@item c-lineup-whitesmith-in-block
-Line up lines inside a block in Whitesmith style. It's done in a way
+Line up lines inside a block in Whitesmiths style. It's done in a way
that works both when the opening brace hangs and when it doesn't. E.g:
@example
@group
however it is recognized that sometimes you need speed and can sacrifice
some accuracy in indentation. The file @file{cc-lobotomy.el} contains
hacks that will ``dumb down'' @ccmode{} in some specific ways, making
-that trade-off of accurancy for speed. I won't go into details of its
+that trade-off of accuracy for speed. I won't go into details of its
use here; you should read the comments at the top of the file, and look
at the variable @code{cc-lobotomy-pith-list} for details.
XEmacs since 19.16.
Due to release schedule skew, it is likely that all of these Emacsen
-have old versions of @ccmode{} and so should be upgraded. Access to the
+have old versions of @ccmode{} and so should be upgraded. Access to the
@ccmode{} source code, as well as more detailed information on Emacsen
compatibility, etc. are all available via the Web at:
indent-tabs-mode nil)
;; we like auto-newline and hungry-delete
(c-toggle-auto-hungry-state 1)
- ;; keybindings for all supported languages. We can put these in
+ ;; key bindings for all supported languages. We can put these in
;; c-mode-base-map because c-mode-map, c++-mode-map, objc-mode-map,
;; java-mode-map, idl-mode-map, and pike-mode-map inherit from it.
(define-key c-mode-base-map "\C-m" 'c-context-line-break)
@end iftex
@bye
+
+@ignore
+ arch-tag: c4cab162-5e57-4366-bdce-4a9db2fc97f0
+@end ignore