- Usually the CC Mode style system (@pxref{Styles,,, ccmode, The CC
-Mode Manual}) configures the exact circumstances in which Emacs
-inserts auto-newlines, but you can configure this directly instead.
-Full details are at @ref{Custom Auto-newlines,,, ccmode, The CC Mode
-Manual}, but there is a short summary below.
-
- The colon character is electric because that is appropriate for a
-single colon. But when you want to insert a double colon in C++, the
-electric behavior of colon is inconvenient. You can insert a double
-colon with no reindentation or newlines by typing @kbd{C-c :}:
-
-@table @kbd
-@item C-c :
-@ifinfo
-@c This uses ``colon'' instead of a literal `:' because Info cannot
-@c cope with a `:' in a menu
-@kindex C-c @key{colon} @r{(C mode)}
-@end ifinfo
-@ifnotinfo
-@kindex C-c : @r{(C mode)}
-@end ifnotinfo
-@findex c-scope-operator
-Insert a double colon scope operator at point, without reindenting the
-line or adding any newlines (@code{c-scope-operator}).
-@end table
-
-@vindex c-electric-pound-behavior
- The electric @kbd{#} key reindents the line if it appears to be the
-beginning of a preprocessor directive. This happens when the value of
-@code{c-electric-pound-behavior} is @code{(alignleft)}. You can turn
-this feature off by setting @code{c-electric-pound-behavior} to
-@code{nil}.
-
-@vindex c-hanging-braces-alist
- The variable @code{c-hanging-braces-alist} controls the insertion of
-newlines before and after inserted braces. It is an association list
-with elements of the following form: @code{(@var{syntactic-symbol}
-. @var{nl-list})}. Most of the syntactic symbols that appear in
-@code{c-offsets-alist} are meaningful here as well.
-
- The list @var{nl-list} may contain either of the symbols
-@code{before} or @code{after}, or both; or it may be @code{nil}. When a
-brace is inserted, the syntactic context it defines is looked up in
-@code{c-hanging-braces-alist}; if it is found, the @var{nl-list} is used
-to determine where newlines are inserted: either before the brace,
-after, or both. If not found, the default is to insert a newline both
-before and after braces.
-
-@vindex c-hanging-colons-alist
- The variable @code{c-hanging-colons-alist} controls the insertion of
-newlines before and after inserted colons. It is an association list
-with elements of the following form: @code{(@var{syntactic-symbol}
-. @var{nl-list})}. The list @var{nl-list} may contain either of the
-symbols @code{before} or @code{after}, or both; or it may be @code{nil}.
-
- When a colon is inserted, the syntactic symbol it defines is looked
-up in this list, and if found, the @var{nl-list} is used to determine
-where newlines are inserted: either before the brace, after, or both.
-If the syntactic symbol is not found in this list, no newlines are
-inserted.
-
-@vindex c-cleanup-list
- Electric characters can also delete newlines automatically when the
-auto-newline feature is enabled. This feature makes auto-newline more
-acceptable, by deleting the newlines in the most common cases where
-you do not want them. Emacs can recognize several cases in which
-deleting a newline might be desirable; by setting the variable
-@code{c-cleanup-list}, you can specify @emph{which} of these cases
-that should happen. @xref{Clean-ups,,, ccmode, The CC Mode Manual}.
-The variable's value is a list of symbols, each describing one case
-for possible deletion of a newline. Here is a summary of the
-meaningful symbols and their meanings:
-
-@table @code
-@item brace-catch-brace
-Clean up @samp{@} catch (@var{condition}) @{} constructs by placing the
-entire construct on a single line. The clean-up occurs when you type
-the @samp{@{}, if there is nothing between the braces aside from
-@code{catch} and @var{condition}.
-
-@item brace-else-brace
-Clean up @samp{@} else @{} constructs by placing the entire construct on
-a single line. The clean-up occurs when you type the @samp{@{} after
-the @code{else}, but only if there is nothing but white space between
-the braces and the @code{else}.
-
-@item brace-elseif-brace
-Clean up @samp{@} else if (@dots{}) @{} constructs by placing the entire
-construct on a single line. The clean-up occurs when you type the
-@samp{@{}, if there is nothing but white space between the @samp{@}} and
-@samp{@{} aside from the keywords and the @code{if}-condition.
-
-@item empty-defun-braces
-Clean up empty defun braces by placing the braces on the same
-line. Clean-up occurs when you type the closing brace.
-
-@item defun-close-semi
-Clean up the semicolon after a @code{struct} or similar type
-declaration, by placing the semicolon on the same line as the closing
-brace. Clean-up occurs when you type the semicolon.
-
-@item list-close-comma
-Clean up commas following braces in array and aggregate
-initializers. Clean-up occurs when you type the comma.
-
-@item one-line-defun
-Remove space and newlines from a defun if this would leave it short
-enough to fit on a single line. This is useful for AWK pattern/action
-pairs. ``Short enough'' means not longer than the value of the user
-option @code{c-max-one-liner-length}. Clean-up occurs when you type
-the closing brace.
-
-@item scope-operator
-Clean up double colons which may designate a C++ scope operator, by
-placing the colons together. Clean-up occurs when you type the second
-colon, but only when the two colons are separated by nothing but
-whitespace.
-@end table