diff man/cc-mode.texi @ 177:6075d714658b r20-3b15

Import from CVS: tag r20-3b15
author cvs
date Mon, 13 Aug 2007 09:51:16 +0200
parents 2d532a89d707
children bfd6434d15b3
line wrap: on
line diff
--- a/man/cc-mode.texi	Mon Aug 13 09:50:16 2007 +0200
+++ b/man/cc-mode.texi	Mon Aug 13 09:51:16 2007 +0200
@@ -46,9 +46,9 @@
 @comment The title is printed in a large font.
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-@center @titlefont{CC Mode 5.13}
+@center @titlefont{CC Mode 5.14}
 @sp 2
-@center @subtitlefont{A GNU Emacs mode for editing C, C++, Objective-C, and Java code}
+@center @subtitlefont{A GNU Emacs mode for editing C and C-like languages}
 @sp 2
 @center Barry A. Warsaw
 
@@ -111,8 +111,8 @@
 @cindex BOCM
 
 Welcome to @ccmode{}.  This is a GNU Emacs mode for editing files
-containing C, C++, Objective-C, and Java code.  This incarnation of the
-mode is descendant from @file{c-mode.el} (also called "Boring Old C
+containing C, C++, Objective-C, Java, and IDL code.  This incarnation of
+the mode is descendant from @file{c-mode.el} (also called "Boring Old C
 Mode" or BOCM @code{:-)}, and @file{c++-mode.el} version 2, which I have
 been maintaining since 1992.  @ccmode{} represents a significant
 milestone in the mode's life.  It has been fully merged back with Emacs
@@ -121,11 +121,12 @@
 
 @ccmode{} supports the editing of K&R and ANSI C, @dfn{ARM}
 @footnote{``The Annotated C++ Reference Manual'', by Ellis and
-Stroustrup.} C++, Objective-C, and Java files.  In this way, you can
+Stroustrup.} C++, Objective-C, Java and IDL@footnote{CORBA's Interface
+Definition Language} files.  In this way, you can
 easily set up consistent coding styles for use in editing all C, C++,
-Objective-C, and Java programs. @ccmode{} does @emph{not} handle
+Objective-C, Java and IDL programs. @ccmode{} does @emph{not} handle
 font-locking (a.k.a. syntax coloring, keyword highlighting) or anything
-of that nature, for any of the 4 modes.  Those are handled by other
+of that nature, for any of these modes.  Font-locking is handled by other
 Emacs packages.
 
 This manual will describe the following:
@@ -142,26 +143,32 @@
 
 @end itemize
 
-Note that the name of this package is ``@ccmode{}''.  The main file for
-@ccmode{} is @file{cc-mode.el}, but other files are included in the
-@ccmode{} distribution.  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}, and @code{java-mode} entry points are
-provided.  This file is intended to be a replacement for
-@file{c-mode.el} and @file{c++-mode.el}.
+@findex c-mode
+@findex c++-mode
+@findex objc-mode
+@findex java-mode
+@findex idl-mode
+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}, and
+@code{idl-mode} entry points are provided.  This file is intended to be
+a replacement for @file{c-mode.el} and @file{c++-mode.el}.
 
 @cindex @file{cc-compat.el} file
-This distribution also contains a file called @file{cc-compat.el} which
-should ease your transition from BOCM to @ccmode{}.  It currently
-comes unguaranteed and unsupported, but this may change for future
-versions.  If you have a BOCM configuration you are really happy with,
-and want to postpone learning how to configure @ccmode{}, take a
-look at that file.  It maps BOCM configuration variables to
-@ccmode{}'s new indentation model.
+This distribution also contains a file
+called @file{cc-compat.el} which should ease your transition from BOCM
+to @ccmode{}.  If you have a BOCM configuration you are really happy
+with, and want to postpone learning how to configure @ccmode{}, take a
+look at that file.  It maps BOCM configuration variables to @ccmode{}'s
+new indentation model.  It is not actively supported so for the long
+run, you should learn how to customize @ccmode{} to support your coding
+style.
 
 A special word of thanks goes to Krishna Padmasola for his work in
-converting the original @file{README} file to Texinfo format.
+converting the original @file{README} file to Texinfo format.  I'd also
+like to thank all the @ccmode{} victims who help enormously during the
+early beta stages of @ccmode{}'s development.
 
 
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -193,16 +200,15 @@
 
 The first thing you will want to do is put the @ccmode{} source files in
 a subdirectory somewhere on your @code{load-path} so Emacs can find it.
-The distribution tarball unpacks into its own subdirectory tagged with
-the version number of the release.  E.g. @ccmode{} release 5.00 will
-unpack into the @file{cc-mode-5.00} directory.  Assuming you unpacked
-the distribution in your home directory, you should add the following to
-your @file{.emacs} file in order to pick up the latest version of
-@ccmode{} over the one distributed with your Emacs:
+The distribution tarball unpacks into its own subdirectory,
+e.g. @file{cc-mode/}.  Assuming you unpacked the distribution in your
+home directory, you should add the following to your @file{.emacs} file
+in order to pick up the latest version of @ccmode{} over the one
+distributed with your Emacs:
 
 @example
 
-(setq load-path (cons "~/cc-mode-5.00" load-path))
+(setq load-path (cons "~/cc-mode" load-path))
 
 @end example
 
@@ -215,38 +221,29 @@
 Emacs, and none of the warnings have any effect on operation. Let me say
 this again: @strong{You really can ignore all byte-compiler warnings!}
 
-To byte-compile the source files, be sure you have access to the
-@code{make(1)} program.  In a shell, execute the following commands
-(again, assuming you unpacked @ccmode{} version 5.00 in your home
-directory@footnote{Of course, the version numbers will probably be
-different.}):
+To byte-compile the source files, first @code{cd} to the directory you
+unpacked the tarball into.  Then run the following command at your shell 
+prompt:
 
 @example
 
-% cd ~/cc-mode-5.00
-% make
+% $EMACS -batch -no-site-file -q -l cc-make.el cc-*.el
 
 @end example
 
-By default, the @file{Makefile} assumes you are using XEmacs.  If you
-are using Emacs, execute this instead:
-
-@example
-
-% make EMACS=emacs
-
-@end example
+@noindent
+where $EMACS is either @code{emacs} or @code{xemacs} depending on the
+version you use.
 
 Next time you start up Emacs you should be using the latest @ccmode{}.
 You can test this by visiting a C file and hitting @kbd{M-x c-version
 RET}; you should see this message in the echo area:
 @example
 
-Using CC Mode version 5.00
+Using CC Mode version 5.XX
 
 @end example
 
-
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 @node     New Indentation Engine, Minor Modes, Getting Connected, Top
 @comment  node-name,              next,        previous,          up
@@ -289,11 +286,11 @@
 @cindex relative buffer position
 The first thing @ccmode{} does when indenting a line of code, is to
 analyze the line, determining the @dfn{syntactic component list} of the
-construct on that line.  A @dfn{syntactic component} consists of a pair
+construct on that line.  A syntactic component consists of a pair
 of information (in lisp parlance, a @emph{cons cell}), where the first
 part is a @dfn{syntactic symbol}, and the second part is a @dfn{relative
 buffer position}.  Syntactic symbols describe elements of C code
-@footnote{or C++, Objective-C, or Java code.  In general, for the rest
+@footnote{or C++, Objective-C, Java or IDL code.  In general, for the rest
 of this manual I'll use the term ``C code'' to refer to all the C-like
 dialects, unless otherwise noted.}, e.g. @code{statement},
 @code{substatement}, @code{class-open}, @code{class-close}, etc.
@@ -328,7 +325,7 @@
 We can use the command @kbd{C-c C-s}
 (@code{c-show-syntactic-information}) to simply report what the
 syntactic analysis is for the current line.  Running this command on
-line 4 this example, we'd see in the echo area@footnote{With a universal
+line 4 of this example, we'd see in the echo area@footnote{With a universal
 argument (i.e. @kbd{C-u C-c C-s}) the analysis is inserted into the
 buffer as a comment
 on the current line.}:
@@ -548,9 +545,10 @@
 The state of the minor modes is always reflected in the minor mode list
 on the modeline of the @ccmode{} buffer.  When auto-newline mode is
 enabled, you will see @samp{C/a} on the mode line @footnote{Remember
-that the @samp{C} could be replaced with @samp{C++}, @samp{ObjC}, or
-@samp{Java}.}.  When hungry delete mode is enabled you would see
-@samp{C/h} and when both modes are enabled, you'd see @samp{C/ah}.
+that the @samp{C} could be replaced with @samp{C++}, @samp{ObjC},
+@samp{Java} or @samp{IDL}.}.  When hungry delete mode is enabled you
+would see @samp{C/h} and when both modes are enabled, you'd see
+@samp{C/ah}.
 
 @kindex C-c C-a
 @kindex C-c C-d
@@ -634,12 +632,12 @@
 @findex enable-//-in-c-mode (c-)
 Some characters are electric in some languages, and not in others.  For
 example, the second slash (@kbd{/}) of a C++ style line comment is
-electric in @code{c++-mode}, @code{objc-mode}, and @code{java-mode}, but
-not in @code{c-mode}@footnote{Ordinarily, @samp{//} does not introduce a
-comment in @code{c-mode}.  However, if you call the function
-@code{c-enable-//-in-c-mode}, @code{c-mode} will recognize C++ style
-line comments.  Note however that this is a global change which will
-affect all your @code{c-mode} buffers.}.
+electric in @code{c++-mode}, @code{objc-mode}, @code{java-mode}, and
+@code{idl-mode}, but not in @code{c-mode}@footnote{Ordinarily, @samp{//}
+does not introduce a comment in @code{c-mode}.  However, if you call the
+function @code{c-enable-//-in-c-mode}, @code{c-mode} will recognize C++
+style line comments.  Note however that this is a global change which
+will affect all your @code{c-mode} buffers.}.
 
 
 @menu
@@ -777,7 +775,7 @@
 @code{c-hanging-colons-alist}.  The syntactic symbols appropriate for
 this assocation list are: @code{case-label}, @code{label},
 @code{access-label}, @code{member-init-intro}, and @code{inher-intro}.
-Note however, that for @code{c-hanging-colons-alist} @var{ACTION}s as
+Note however that for @code{c-hanging-colons-alist}, @var{ACTION}s as
 functions are not supported. See also @ref{Custom Brace and Colon
 Hanging} for details.
 
@@ -880,7 +878,7 @@
 functionality provided by the @code{c-hanging-*-alist} variables, and
 similarly, clean-ups are only enabled when auto-newline minor mode is
 enabled.  Clean-ups are used however to adjust code ``after-the-fact'',
-i.e. to eliminate some whitespace that isn't inserted by electric
+i.e. to eliminate some whitespace that is inserted by electric
 commands, or whitespace that contains intervening constructs.
 
 @cindex literal
@@ -1085,7 +1083,7 @@
 
 Similarly, hitting the @kbd{DEL} key runs the command
 @code{c-electric-delete}.  Some versions of Emacs@footnote{As of this
-writing, 20-Jun-1997, only XEmacs 20 supports this.} support separation
+writing, 20-Jun-1997, only XEmacs 20.3 supports this.} support separation
 of the @kbd{Backspace} and @kbd{DEL} keys, so that @kbd{DEL} will delete
 in the forward direction when @code{delete-key-deletes-forward} is
 non-@code{nil}.  If your Emacs supports this, and
@@ -1152,8 +1150,7 @@
 Some provision has been made to at least inform you as to the progress
 of the re-indentation.  The variable @code{c-progress-interval} controls
 how often a progress message is displayed.  Set this variable to
-@code{nil} to inhibit progress messages.  Note that this feature only
-works with Emacs 19 and beyond.
+@code{nil} to inhibit progress messages.
 
 Also, except as noted below, re-indentation is always driven by the
 same mechanisms that control on-the-fly indentation of code.  @xref{New
@@ -1200,7 +1197,7 @@
 @findex indent-defun (c-)
 Another very convenient keystroke is @kbd{C-c C-q}
 (@code{c-indent-defun}) when re-indents the entire top-level function or
-class definition that encompases point.  It leaves point at the
+class definition that encompasses point.  It leaves point at the
 same position within the buffer.
 
 @kindex M-C-\
@@ -1298,14 +1295,14 @@
 letter of each word is capitalized, and not separated by underscores.
 E.g. @samp{SymbolsWithMixedCaseAndNoUnderlines}.
 
-This command moves point forward to end of a C++ nomenclature
-section or word.  With prefix argument @var{n}, move @var{n} times.
+This command moves point forward to next capitalized word.  With prefix
+argument @var{n}, move @var{n} times.
 
 @item M-x c-backward-into-nomenclature
 @findex c-backward-into-nomenclature
 @findex backward-into-nomenclature (c-)
-Move point backward to beginning of a C++ nomenclature
-section or word.  With prefix argument @var{n}, move @var{n} times.  If
+Move point backward to beginning of the next capitalized
+word.  With prefix argument @var{n}, move @var{n} times.  If
 @var{n} is negative, move forward.
 
 @kindex C-c :
@@ -1323,12 +1320,15 @@
 @vindex c-hanging-comment-ender-p
 @vindex hanging-comment-starter-p (c-)
 @vindex hanging-comment-ender-p (c-)
+
 The command is used to fill a block style (C) or line style (C++)
 comment, in much the same way that text in the various text modes can be
-filled.  You should never attempt to fill non-comment code sections;
-you'll end up with garbage!  Two variables control how C style block
-comments are filled, specifically how the comment start and end
-delimiters are handled.
+filled@footnote{You should not use specialized filling packages such as
+@code{filladapt} with CC Mode.  They don't work as well for filling as
+@code{c-fill-paragraph}}.  You should never attempt to fill non-comment
+code sections; you'll end up with garbage!  Two variables control how C
+style block comments are filled, specifically how the comment start and
+end delimiters are handled.
 
 The variable @code{c-hanging-comment-starter-p} controls whether comment
 start delimiters which appear on a line by themselves, end up on a line
@@ -1337,7 +1337,9 @@
 separate line if it is not already on a separate line.}.  Otherwise,
 text on the next line will be put on the same line as the comment
 starter.  This is called @dfn{hanging} because the following text hangs
-on the line with the comment starter.
+on the line with the comment starter@footnote{This variable is @code{t}
+by default, except in @code{java-mode}.  Hanging comment starters mess
+up Javadoc style comments.}
 
 The variable @code{c-hanging-comment-ender-p} controls the analogous
 behavior for the block comment end delimiter.  When the value is
@@ -1369,7 +1371,7 @@
 to add for every syntactic symbol.  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.  Also, you can set up @emph{styles} of
-indentation just like in BOCM.  Most likely, you'll
+indentatio.  Most likely, you'll
 find one of the pre-defined styles will suit your needs, but if not,
 this section will describe how to set up basic editing configurations.
 @xref{Styles} for an explanation of how to set up named styles.
@@ -1582,23 +1584,26 @@
 @vindex c++-mode-hook
 @vindex objc-mode-hook
 @vindex java-mode-hook
+@vindex idl-mode-hook
+@vindex c-initialization-hook
+@vindex initialization-hook (c-)
 @cindex hooks
 To make your changes permanent, you need to add some lisp code to your
 @file{.emacs} file, but first you need to decide whether your styles
 should be global in every buffer, or local to each specific buffer.
 
-If you edit primarily one style of C (or C++, Objective-C, Java) code,
-you may want to make the @ccmode{} style variables have global values so
-that every buffer will share the style settings.  This will allow you to
-set the @ccmode{} variables at the top level of your @file{.emacs}
-file.  This is the default way @ccmode{} works.
+If you edit primarily one style of code, you may want to make the
+@ccmode{} style variables have global values so that every buffer will
+share the style settings.  This will allow you to set the @ccmode{}
+variables at the top level of your @file{.emacs} file, and is the
+way @ccmode{} works by default.
 
 @vindex c-mode-common-hook
 @vindex mode-common-hook (c-)
 @vindex c-style-variables-are-local-p
 @vindex style-variables-are-local-p (c-)
-If you edit many different styles of C (or C++, Objective-C, Java) at
-the same time, you probably want to make the @ccmode{} style variables
+If you edit many different styles of code at
+the same time, you might want to make the @ccmode{} style variables
 have buffer local values.  If you do this, then you will need to set any
 @ccmode{} style variables in a hook function (e.g. off of
 @code{c-mode-common-hook} instead of at the top level of your
@@ -1609,7 +1614,8 @@
 @ccmode{} provides several hooks that you can
 use to customize the mode according to your coding style.  Each language
 mode has its own hook, adhering to standard Emacs major mode
-conventions.  There is also one general hook:
+conventions.  There is also one general hook and one package
+initialization hook:
 
 @itemize @bullet
 
@@ -1622,12 +1628,17 @@
 @item
 @code{java-mode-hook} --- for Java buffers only
 @item
+@code{idl-mode-hook} --- for IDL buffers only
+@item
 @code{c-mode-common-hook} --- common across all languages
+@item
+@code{c-initialization-hook} --- hook run only once per Emacs session,
+when @ccmode{} is initialized.
 
 @end itemize
 
 The language hooks get run as the last thing when you enter that
-language-specific mode.  The @code{c-mode-common-hook} is run by all
+language mode.  The @code{c-mode-common-hook} is run by all
 supported modes @emph{before} the language specific hook, and thus can
 contain customizations that are common across all languages.  Most of
 the examples in this section will assume you are using the common
@@ -1635,8 +1646,8 @@
 variables is slightly different than for the other modes.
 @code{java-mode} sets the style (see @ref{Styles}) of the buffer to
 @samp{java} @emph{before} running the @code{c-mode-common-hook} or
-@code{java-mode-hook}.  You need to be aware of this so any style
-settings in @code{c-mode-common-hook} doesn't clobber your Java style.}.
+@code{java-mode-hook}.  You need to be aware of this so that style
+settings in @code{c-mode-common-hook} don't clobber your Java style.}.
 
 Here's a simplified example of what you can add to your @file{.emacs}
 file to make the changes described in the previous section
@@ -1647,7 +1658,7 @@
 @group
 
 (defun my-c-mode-common-hook ()
-  ;; my customizations for all of c-mode, c++-mode, objc-mode, java-mode
+  ;; my customizations for all of c-mode and related modes
   (c-set-offset 'substatement-open 0)
   ;; other customizations can go here
   )
@@ -1672,7 +1683,7 @@
 and consistent styles.  For example, their organization might impose a
 ``blessed'' style that all its programmers must conform to.  Similarly,
 people who work on GNU software will have to use the GNU coding style on
-C code.  Some shops are more lenient, allowing some variety of coding
+C code.  Some shops are more lenient, allowing a variety of coding
 styles, and as programmers come and go, there could be a number of
 styles in use.  For this reason, @ccmode{} makes it convenient for
 you to set up logical groupings of customizations called @dfn{styles},
@@ -1834,6 +1845,9 @@
 non-@code{nil}, automatically applies the new style to the current
 buffer.
 
+@comment TBD: The next paragraph is bogus.  I really need to better
+@comment document adding styles, including setting up inherited styles.
+
 The sample @file{.emacs} file provides a concrete example of how a new
 style can be added and automatically set.  @xref{Sample .emacs File}.
 
@@ -1846,12 +1860,16 @@
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 @cindex local variables
+
 The Emacs manual describes how you can customize certain variables on a
 per-file basis by including a @dfn{Local Variable} block at the end of
-the file.  So far, you've only seen a functional interface to
-@ccmode{}, which is highly inconvenient for use in a Local Variable
-block.  @ccmode{} provides two variables that make it easier for
-you to customize your style on a per-file basis.
+the file.  So far, you've only seen a functional interface to @ccmode{}
+customization, which is highly inconvenient for use in a Local Variable
+block.  @ccmode{} provides two variables that make it easier for you to
+customize your style on a per-file basis@footnote{Note that file styles
+don't work with Emacs versions before XEmacs 19.12 and Emacs 19.29.
+File styles work via the standard Emacs hook variable
+@code{hack-local-variables-hook}.}.
 
 @vindex c-file-style
 @vindex file-style (c-)
@@ -1872,11 +1890,7 @@
 @code{c-set-offset}.
 
 Note that file style settings (i.e. @code{c-file-style}) are applied
-before file offset settings (i.e. @code{c-file-offsets})@footnote{File
-styles have only been supported since XEmacs 19.12 and Emacs 19.29.
-They work via the standard Emacs hook variable
-@code{hack-local-variables-hook}.  Older Emacsen lack this hook, so file
-styles can't be used with them.}.
+before file offset settings (i.e. @code{c-file-offsets}).
 
 
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -1958,11 +1972,11 @@
 syntactic symbol.  Here, @code{stream-op} has an offset of @code{+}, and
 with a @code{c-basic-offset} of 2, you can see that lines 4 through 6
 are simply indented two spaces to the right of line 3.  But perhaps we'd
-like @ccmode{} to be a little more intelligent so that it lines up
+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 the lisp
-code (from the @file{cc-mode.el} source file) that implements this:
+stream operator on the first line of the statement.  Here is sample 
+lisp code implementing this:
 @example
 @group
 
@@ -1987,7 +2001,7 @@
 operator is on, and the column of the buffer relative position passed in
 the function's argument.  Remember that @ccmode{} automatically
 adds in the column of the component's relative buffer position and we
-don't want that value added into the final total twice.
+don't the column offset added in twice.
 
 @cindex stream-op syntactic symbol
 @findex c-lineup-streamop
@@ -2072,15 +2086,17 @@
 @findex lineup-comment (c-)
 @vindex c-comment-only-line-offset
 @vindex comment-only-line-offset (c-)
-@code{c-lineup-comment} --- implements the old comment line up behavior
-specified by the variable @code{c-comment-only-line-offset}.
+@code{c-lineup-comment} --- lines up comment only lines according to
+the variable @code{c-comment-only-line-offset}.
 
 @item
 @findex c-lineup-runin-statements
 @findex lineup-runin-statements (c-)
 @code{c-lineup-runin-statements} --- lines up @code{statement}s for coding
 standards which place the first statement in a block on the same line as
-the block opening brace.
+the block opening brace@footnote{Run-in style doesn't really work too
+well.  You might need to write your own custom indentation functions to
+better support this style.}.
 
 @item
 @findex c-lineup-math
@@ -2126,8 +2142,8 @@
 Remember that @var{ACTION}'s are typically a list containing some
 combination of the symbols @code{before} and @code{after} (see
 @ref{Hanging Braces}).  However, an @var{ACTION} can also be a function
-symbol which gets called when a brace matching that syntactic symbol is
-typed.
+which gets called when a brace matching that syntactic symbol is
+entered.
 
 @cindex customizing brace hanging
 These @var{ACTION} functions are called with two arguments: the
@@ -2254,7 +2270,7 @@
 
 (defun my-semicolon-criteria ()
   (save-excursion
-    (if (and (= last-command-char ?\;)
+    (if (and (eq last-command-char ?\;)
              (zerop (forward-line 1))
              (not (looking-at "^[ \t]*$")))
         'stop
@@ -2495,7 +2511,7 @@
 the brace that opens a top-level function definition.  Line 9 is a
 @code{defun-close} since it contains the brace that closes the top-level
 function definition.  Line 4 is a @code{defun-block-intro}, i.e. it is
-the first line of a brace-block, which happens to be enclosed in a
+the first line of a brace-block, enclosed in a
 top-level function definition.
 
 @cindex statement syntactic symbol
@@ -2593,7 +2609,7 @@
 @cindex in-class inline methods
 @cindex inline-open syntactic symbol
 @cindex inline-close syntactic symbol
-But the line 11's analysis is a bit more complicated:
+Line 11's analysis is a bit more complicated:
 
 @example
 @group
@@ -2608,8 +2624,8 @@
 definition.  This is distinct from, but related to, the C++ notion of an
 inline function in that its definition occurs inside an enclosing class
 definition, which in C++ implies that the function should be inlined.
-For example, if the definition of the @code{Bass} constructor appeared
-outside the class definition, line 11 would be given the
+If though, the definition of the @code{Bass} constructor appeared
+outside the class definition, the construct would be given the
 @code{defun-open} syntax, even if the keyword @code{inline} appeared
 before the method name, as in:
 @example
@@ -2998,7 +3014,7 @@
 position higher up in the buffer from which to begin a forward scan.
 The farther this position is from the current insertion point, the
 slower the mode gets.  Some coding styles can even force @ccmode{}
-to scan from the beginning of the buffer!
+to scan from the beginning of the buffer for every line of code!
 
 @findex beginning-of-defun
 @findex defun-prompt-regexp
@@ -3030,7 +3046,7 @@
 
 You will probably notice pathological behavior from @ccmode{} when
 working in files containing large amounts of cpp macros.  This is
-because @ccmode{} cannot quickly skip backwards over these lines.
+because Emacs cannot be made to quickly skip backwards over these lines.
 
 @vindex c-recognize-knr-p
 @vindex recognize-knr-p (c-)
@@ -3140,8 +3156,8 @@
 @strong{Q.} @emph{How do I make strings, comments, keywords, and other
 constructs appear in different colors, or in bold face, etc.?}
 
-@strong{A.} ``Syntax Colorization'' is an Emacs 19 feature, controlled
-by @code{font-lock-mode}.  It is not part of @ccmode{}.
+@strong{A.} ``Syntax Colorization'' is a standard Emacs feature,
+controlled by @code{font-lock-mode}.  It is not part of @ccmode{}.
 
 @end quotation
 
@@ -3154,10 +3170,12 @@
 @cindex   Getting the latest CC Mode release
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-@ccmode{} is now distributed with Emacs 19, XEmacs 19, and XEmacs 20, so
-you would typically just use the version that comes with your Emacs.
-These may be slightly out of date due to release schedule skew, so you
-should always check the canonical site for the latest version.
+@ccmode{} is now standard with later versions Emacs 19 and XEmacs 19.
+It is also the standard for XEmacs 20, and will be the standard for
+Emacs 20 (unreleased as of this writing).  You would typically just use
+the version that comes with your X/Emacs.  These may be slightly out of
+date due to release schedule skew, so you should always check the
+canonical site for the latest version.
 
 @example
 @group
@@ -3251,9 +3269,9 @@
   ;; we like auto-newline and hungry-delete
   (c-toggle-auto-hungry-state 1)
   ;; keybindings for all supported languages.  We can put these in
-  ;; c-mode-map because c++-mode-map, objc-mode-map, and java-mode-map
-  ;; inherit from it.
-  (define-key c-mode-map "\C-m" 'newline-and-indent)
+  ;; c-mode-base-map because c-mode-map, c++-mode-map, objc-mode-map,
+  ;; java-mode-map, and idl-mode-map inherit from it.
+  (define-key c-mode-base-map "\C-m" 'newline-and-indent)
   )
 
 (add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
@@ -3313,23 +3331,19 @@
 Bug reports are now sent to the following email addresses:
 @code{cc-mode-help@@python.org} and
 @code{bug-gnu-emacs@@prep.ai.mit.edu}; the latter is mirrored on the
-Usenet newsgroup @code{gnu.emacs.bug}.  You can send other questions,
-suggestions, and kudos to @code{cc-mode-help@@python.org}, or
+Usenet newsgroup @code{gnu.emacs.bug}.  You can send other questions and
+suggestions (kudos? @code{;-)} to @code{cc-mode-help@@python.org}, or
 @code{help-gnu-emacs@@prep.ai.mit.edu} which is mirrored on newsgroup
 @code{gnu.emacs.help}.
 
-There are two mailing lists for @ccmode{}.  One is a general discussion
-list and the other is an announce-only list.  You do not need to
-subscribe to either list, but if you want to, only subscribe to one of
-these.  Announcements of new releases get sent to both lists.  To join
-the general discussion list, send a message with the word
-@emph{subscribe} in the body of the message to
-@code{cc-mode-victims-request@@python.org}.  To join just the
-announce-only list, send a message with the word @emph{subscribe} in the
-body of the message to @code{cc-mode-announce-request@@python.org}.
-Both mailing lists are managed by Majordomo, and if you are successfully
-subscribed, you will receive an email message with more information on
-using the list.
+If you want to get announcements of new CC Mode releases, send the
+word @emph{subscribe} in the body of a message to
+@code{cc-mode-announce-request@@python.org}.  Announcements will also be 
+posted to the Usenet newsgroups @code{gnu.emacs.sources},
+@code{comp.emacs}, @code{comp.emacs.xemacs}, and possibly some of the
+language oriented newsgroups.  Note that the
+@code{cc-mode-victims@@python.org} mailing list was recently
+decommissioned.
 
 @c !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 @node    Concept Index, Command Index,  Mailing Lists and Submitting Bug Reports, Top