summaryrefslogtreecommitdiff
path: root/doc/misc/cc-mode.texi
diff options
context:
space:
mode:
Diffstat (limited to 'doc/misc/cc-mode.texi')
-rw-r--r--doc/misc/cc-mode.texi988
1 files changed, 601 insertions, 387 deletions
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index c90f6d06bf6..1f12c30b1f8 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -148,7 +148,17 @@ CC Mode
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@comment Define an index for syntactic symbols.
+@c Version for Texinfo <= 4.x
+@ifclear txicommandconditionals
+@ifnottex @c In texi2dvi, the @defindex would create an empty cc-mode.ss
+ @c For Info, unlike tex, @syncodeindex needs a matching @defindex.
@defindex ss
+@end ifnottex
+@end ifclear
+@c Version for Texinfo >= 5.x
+@ifset txicommandconditionals
+@defindex ss
+@end ifset
@comment Combine key, syntactic symbol and concept indices into one.
@syncodeindex ss cp
@@ -157,7 +167,7 @@ CC Mode
@copying
This manual is for CC Mode in Emacs.
-Copyright @copyright{} 1995--2017 Free Software Foundation, Inc.
+Copyright @copyright{} 1995--2022 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -187,7 +197,7 @@ modify this GNU manual.''
@titlepage
@sp 10
-@center @titlefont{CC Mode 5.32}
+@center @titlefont{CC Mode 5.35}
@sp 2
@center A GNU Emacs mode for editing C and C-like languages
@sp 2
@@ -209,10 +219,9 @@ or can be downloaded from @url{https://savannah.gnu.org/projects/emacs/}.
@summarycontents
@contents
-@node Top, Introduction, (dir), (dir)
-@comment node-name, next, previous, up
@ifnottex
+@node Top
@top @ccmode{}
@ccmode{} is a GNU Emacs mode for editing files containing C, C++,
@@ -274,6 +283,7 @@ Font Locking
* Font Locking Preliminaries::
* Faces::
* Doc Comments::
+* Wrong Comment Style::
* Misc Font Locking::
* AWK Mode Font Locking::
@@ -340,25 +350,25 @@ Line-Up Functions
* Misc Line-Up::
-Customizing Macros
+Custom Macros
* Macro Backslashes::
* Macros with ;::
* Noise Macros::
+* Indenting Directives::
@end detailmenu
@end menu
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Introduction, Overview, Top, Top
-@comment node-name, next, previous, up
+@node Introduction
@chapter Introduction
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@cindex BOCM
@cindex history
-@cindex awk-mode.el
-@cindex c-mode.el
-@cindex c++-mode.el
+@cindex @file{awk-mode.el}
+@cindex @file{c-mode.el}
+@cindex @file{c++-mode.el}
Welcome to @ccmode{}, a GNU Emacs mode for editing files containing C,
C++, Objective-C, Java, CORBA IDL (and the variants CORBA PSDL and
@@ -377,13 +387,13 @@ was added in version 5.30.
This manual describes @ccmode{}
@comment The following line must appear on its own, so that the
-version 5.32.
+version 5.35.
@comment Release.py script can update the version number automatically
@ccmode{} supports the editing of C, C++, Objective-C,
Java, CORBA's Interface Definition Language, Pike@footnote{A C-like
scripting language with its roots in the LPC language used in some MUD
-engines. See @uref{http://pike.ida.liu.se/}.} and AWK files. In this
+engines. See @uref{https://pike.lysator.liu.se/}.} and AWK files. In this
way, you can easily set up consistent font locking and coding styles for
use in editing all of these languages, although AWK is not yet as
uniformly integrated as the other languages.
@@ -409,7 +419,7 @@ also like to thank all the @ccmode{} victims who help enormously
during the early beta stages of @ccmode{}'s development.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Overview, Getting Started, Introduction, Top
+@node Overview
@comment node-name, next, previous, up@cindex organization of the manual
@chapter Overview of the Manual
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -478,8 +488,7 @@ project: whether for updating @ccmode{} or submitting bug reports.
Finally, there are the customary indices.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Getting Started, Commands, Overview, Top
-@comment node-name, next, previous, up
+@node Getting Started
@chapter Getting Started
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -576,10 +585,10 @@ for the latest information on Emacs version and package compatibility
(@pxref{Updating CC Mode}).
@deffn Command c-version
-@findex version (c-)
-You can find out what version of @ccmode{} you are using by visiting a C
-file and entering @kbd{M-x c-version RET}. You should see this message in
-the echo area:
+@findex version @r{(c-)}
+You can find out what version of @ccmode{} you are using by visiting a
+C file and entering @kbd{M-x c-version @key{RET}}. You should see
+this message in the echo area:
@example
Using CC Mode version 5.XX
@@ -590,8 +599,7 @@ where @samp{XX} is the minor release number.
@end deffn
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Commands, Font Locking, Getting Started, Top
-@comment node-name, next, previous, up
+@node Commands
@chapter Commands
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -627,7 +635,7 @@ structures.
@end menu
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Indentation Commands, Comment Commands, Commands, Commands
+@node Indentation Commands
@comment node-name, next, previous,up
@section Indentation Commands
@cindex indentation
@@ -659,7 +667,7 @@ expression, to some statements, or perhaps to whole functions, the
syntactic recognition can be wrong. @ccmode{} manages to figure it
out correctly most of the time, though.
-Some macros, when invoked, ''have their own semicolon''. To get the
+Some macros, when invoked, ``have their own semicolon''. To get the
next line indented correctly, rather than as a continuation line,
@xref{Macros with ;}.
@@ -673,7 +681,7 @@ These commands indent code:
@item @kbd{@key{TAB}} (@code{c-indent-command})
@kindex TAB
@findex c-indent-command
-@findex indent-command (c-)
+@findex indent-command @r{(c-)}
This command indents the current line. That is all you need to know
about it for normal use.
@@ -693,7 +701,7 @@ that begins at the line's left margin.
@item
When it's @code{nil}, the command indents the line by an extra
@code{c-basic-offset} columns. A prefix argument acts as a
-multiplier. A bare prefix (@kbd{C-u @key{TAB}}) is equivalent to -1,
+multiplier. A bare prefix (@kbd{C-u @key{TAB}}) is equivalent to @minus{}1,
removing @code{c-basic-offset} columns from the indentation.
@end itemize
@@ -707,7 +715,7 @@ you want only spaces. @xref{Just Spaces,,,@emacsman{},
@emacsmantitle{}}.
@defopt c-tab-always-indent
-@vindex tab-always-indent (c-)
+@vindex tab-always-indent @r{(c-)}
@cindex literal
This variable modifies how @key{TAB} operates.
@itemize @bullet
@@ -726,7 +734,7 @@ is within a string or comment, some whitespace is inserted.
@end defopt
@defopt c-insert-tab-function
-@vindex insert-tab-function (c-)
+@vindex insert-tab-function @r{(c-)}
@findex tab-to-tab-stop
When ``some whitespace'' is inserted as described above, what actually
happens is that the function stored in @code{c-insert-tab-function} is
@@ -756,7 +764,7 @@ very useful in this case.
@item @kbd{C-M-q} (@code{c-indent-exp})
@kindex C-M-q
@findex c-indent-exp
-@findex indent-exp (c-)
+@findex indent-exp @r{(c-)}
Indents 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.
@@ -764,7 +772,7 @@ you want to indent.
@item @kbd{C-c C-q} (@code{c-indent-defun})
@kindex C-c C-q
@findex c-indent-defun
-@findex indent-defun (c-)
+@findex indent-defun @r{(c-)}
Indents the entire top-level function, class or macro definition
encompassing point. It leaves point unchanged. This function can't be
used to reindent a nested brace construct, such as a nested class or
@@ -782,7 +790,7 @@ and mark must delineate the region you want to indent.
@item @kbd{C-M-h} (@code{c-mark-function})
@kindex C-M-h
@findex c-mark-function
-@findex mark-function (c-)
+@findex mark-function @r{(c-)}
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
@@ -798,7 +806,7 @@ indentation, otherwise only spaces are used.
@end defopt
@defopt c-progress-interval
-@vindex progress-interval (c-)
+@vindex progress-interval @r{(c-)}
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 how
@@ -806,8 +814,7 @@ often (in seconds) progress messages are to be displayed.
@end defopt
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Comment Commands, Movement Commands, Indentation Commands, Commands
-@comment node-name, next, previous, up
+@node Comment Commands
@section Comment Commands
@cindex comments (insertion of)
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -845,7 +852,7 @@ together with any whitespace before it. This is a standard Emacs
command, but @ccmode{} enhances it a bit with two variables:
@defopt c-indent-comment-alist
-@vindex indent-comment-alist (c-)
+@vindex indent-comment-alist @r{(c-)}
@vindex comment-column
This style variable allows you to vary the column that @kbd{M-;} puts
the comment at, depending on what sort of code is on the line, and
@@ -860,7 +867,7 @@ variable (use @kbd{C-h v c-indent-comment-alist}).
@end defopt
@defopt c-indent-comments-syntactically-p
-@vindex indent-comments-syntactically-p (c-)
+@vindex indent-comments-syntactically-p @r{(c-)}
Normally, when this style variable is @code{nil}, @kbd{M-;} will
indent comment-only lines according to @code{c-indent-comment-alist},
just as it does with lines where other code precede the comments.
@@ -875,8 +882,7 @@ lines.
@end table
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Movement Commands, Filling and Breaking, Comment Commands, Commands
-@comment node-name, next, previous, up
+@node Movement Commands
@section Movement Commands
@cindex movement
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -889,7 +895,7 @@ lines.
@findex c-beginning-of-defun
@findex c-end-of-defun
@vindex c-defun-tactic
-@vindex defun-tactic (c-)
+@vindex defun-tactic @r{(c-)}
Move to the beginning or end of the current or next function. Other
constructs (such as a structs or classes) which have a brace block
@@ -920,12 +926,12 @@ must be in column zero. See @ref{Defuns,,,@emacsman{},
@item @kbd{C-M-a} (AWK Mode) (@code{c-awk-beginning-of-defun})
@itemx @kbd{C-M-e} (AWK Mode) (@code{c-awk-end-of-defun})
-@kindex C-M-a (AWK Mode)
-@kindex C-M-e (AWK Mode)
+@kindex C-M-a @r{(AWK Mode)}
+@kindex C-M-e @r{(AWK Mode)}
@findex c-awk-beginning-of-defun
-@findex awk-beginning-of-defun (c-)
+@findex awk-beginning-of-defun @r{(c-)}
@findex c-awk-end-of-defun
-@findex awk-end-of-defun (c-)
+@findex awk-end-of-defun @r{(c-)}
Move to the beginning or end of the current or next AWK defun. These
commands can take prefix-arguments, their functionality being entirely
equivalent to @code{beginning-of-defun} and @code{end-of-defun}.
@@ -941,8 +947,8 @@ modes, is neither necessary nor helpful in AWK mode.
@kindex M-e
@findex c-beginning-of-statement
@findex c-end-of-statement
-@findex beginning-of-statement (c-)
-@findex end-of-statement (c-)
+@findex beginning-of-statement @r{(c-)}
+@findex end-of-statement @r{(c-)}
Move to the beginning or end of the innermost C statement. If point
is already there, move to the next beginning or end of a statement,
even if that means moving into a block. (Use @kbd{C-M-b} or
@@ -961,7 +967,7 @@ strings.
@item @kbd{C-c C-u} (@code{c-up-conditional})
@kindex C-c C-u
@findex c-up-conditional
-@findex up-conditional (c-)
+@findex up-conditional @r{(c-)}
Move back to the containing preprocessor conditional, leaving the mark
behind. A prefix argument acts as a repeat count. With a negative
argument, move forward to the end of the containing preprocessor
@@ -976,13 +982,13 @@ preprocessor statements.
@item @kbd{M-x c-up-conditional-with-else}
@findex c-up-conditional-with-else
-@findex up-conditional-with-else (c-)
+@findex up-conditional-with-else @r{(c-)}
A variety of @code{c-up-conditional} that also stops at @samp{#else}
lines. Normally those lines are ignored.
@item @kbd{M-x c-down-conditional}
@findex c-down-conditional
-@findex down-conditional (c-)
+@findex down-conditional @r{(c-)}
Move forward into the next nested preprocessor conditional, leaving
the mark behind. A prefix argument acts as a repeat count. With a
negative argument, move backward into the previous nested preprocessor
@@ -993,7 +999,7 @@ function stops at them when going forward, but not when going backward.
@item @kbd{M-x c-down-conditional-with-else}
@findex c-down-conditional-with-else
-@findex down-conditional-with-else (c-)
+@findex down-conditional-with-else @r{(c-)}
A variety of @code{c-down-conditional} that also stops at @samp{#else}
lines. Normally those lines are ignored.
@@ -1003,8 +1009,8 @@ lines. Normally those lines are ignored.
@kindex C-c C-n
@findex c-backward-conditional
@findex c-forward-conditional
-@findex backward-conditional (c-)
-@findex forward-conditional (c-)
+@findex backward-conditional @r{(c-)}
+@findex forward-conditional @r{(c-)}
Move backward or forward across a preprocessor conditional, leaving
the mark behind. A prefix argument acts as a repeat count. With a
negative argument, move in the opposite direction.
@@ -1013,11 +1019,9 @@ These key sequences are not bound in AWK Mode, which doesn't have
preprocessor statements.
@item @kbd{M-x c-backward-into-nomenclature}
-@itemx @kbd{M-x c-forward-into-nomenclature}
@findex c-backward-into-nomenclature
-@findex c-forward-into-nomenclature
-@findex backward-into-nomenclature (c-)
-@findex forward-into-nomenclature (c-)
+@findex backward-into-nomenclature @r{(c-)}
+@findex forward-into-nomenclature @r{(c-)}
A popular programming style, especially for object-oriented languages
such as C++ is to write symbols in a mixed case format, where the
first letter of each word is capitalized, and not separated by
@@ -1033,7 +1037,7 @@ Movement}. They might be removed from a future release of @ccmode{}.
@end table
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Filling and Breaking, Minor Modes, Movement Commands, Commands
+@node Filling and Breaking
@comment node-name, next, previous, up
@section Filling and Line Breaking Commands
@cindex text filling
@@ -1050,7 +1054,7 @@ there's a piece of normal text without having to think much about it.
and so on.
You can configure the exact way comments get filled and broken, and
-where Emacs does auto-filling (see @pxref{Custom Filling and
+where Emacs does auto-filling (@pxref{Custom Filling and
Breaking}). Typically, the style system (@pxref{Styles}) will have
set this up for you, so you probably won't have to bother.
@@ -1070,7 +1074,7 @@ and @pxref{Customizing Indentation})}.
@item @kbd{M-q} (@code{c-fill-paragraph})
@kindex M-q
@findex c-fill-paragraph
-@findex fill-paragraph (c-)
+@findex fill-paragraph @r{(c-)}
@cindex Javadoc markup
@cindex Pike autodoc markup
This command fills multiline string literals and both block
@@ -1090,7 +1094,7 @@ buffers.
@item @kbd{M-j} (@code{c-indent-new-comment-line})
@kindex M-j
@findex c-indent-new-comment-line
-@findex indent-new-comment-line (c-)
+@findex indent-new-comment-line @r{(c-)}
This breaks the current line at point and indents the new line. If
point was in a comment, the new line gets the proper comment line
prefix. If point was inside a macro, a backslash is inserted before
@@ -1099,7 +1103,7 @@ the line break. It is the replacement for
@item @kbd{M-x c-context-line-break}
@findex c-context-line-break
-@findex context-line-break (c-)
+@findex context-line-break @r{(c-)}
Insert a line break suitable to the context: If the point is inside a
comment, the new line gets the suitable indentation and comment line
prefix like @code{c-indent-new-comment-line}. In normal code it's
@@ -1118,7 +1122,7 @@ this function. @xref{Sample Init File}.
@item @kbd{M-x c-context-open-line}
@findex c-context-open-line
-@findex context-open-line (c-)
+@findex context-open-line @r{(c-)}
This is to @kbd{C-o} (@kbd{M-x open-line}) as
@code{c-context-line-break} is to @kbd{RET}. I.e., it works just like
@code{c-context-line-break} but leaves the point before the inserted
@@ -1127,8 +1131,7 @@ line break.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Minor Modes, Electric Keys, Filling and Breaking, Commands
-@comment node-name, next, previous, up
+@node Minor Modes
@section Minor Modes
@cindex Minor Modes
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -1139,7 +1142,9 @@ find useful while writing new code or editing old code:
@table @asis
@item comment style
This specifies whether comment commands (such as @kbd{M-;}) insert
-block comments or line comments.
+block comments or line comments@footnote{You can emphasize
+non-default style comments in your code by giving their delimiters
+@code{font-lock-warning-face}. @xref{Wrong Comment Style}.}.
@item electric mode
When this is enabled, certain visible characters cause reformatting as
they are typed. This is normally helpful, but can be a nuisance when
@@ -1196,7 +1201,7 @@ Here are the commands to toggle these modes:
@item @kbd{C-c C-k} (@code{c-toggle-comment-style})
@kindex C-c C-k
@findex c-toggle-comment-style
-@findex toggle-comment-style (c-)
+@findex toggle-comment-style @r{(c-)}
Toggle the comment style between line style and block style. In modes
(such as AWK Mode) which only have one of these styles, this function
does nothing.
@@ -1204,25 +1209,25 @@ does nothing.
@item @kbd{C-c C-l} (@code{c-toggle-electric-state})
@kindex C-c C-l
@findex c-toggle-electric-state
-@findex toggle-electric-state (c-)
+@findex toggle-electric-state @r{(c-)}
Toggle electric minor mode. When the command turns the mode off, it
also suppresses auto-newline mode.
@item @kbd{C-c C-a} (@code{c-toggle-auto-newline})
@kindex C-c C-a
@findex c-toggle-auto-newline
-@findex toggle-auto-newline (c-)
+@findex toggle-auto-newline @r{(c-)}
Toggle auto-newline minor mode. When the command turns the mode on,
it also enables electric minor mode.
@item @kbd{M-x c-toggle-hungry-state}@footnote{Prior to @ccmode{} 5.31, this command was bound to @kbd{C-c C-d}.}
@findex c-toggle-hungry-state
-@findex toggle-hungry-state (c-)
+@findex toggle-hungry-state @r{(c-)}
Toggle hungry-delete minor mode.
@item @kbd{M-x c-toggle-auto-hungry-state}@footnote{Prior to @ccmode{} 5.31, this command was bound to @kbd{C-c C-t}.}
@findex c-toggle-auto-hungry-state
-@findex toggle-auto-hungry-state (c-)
+@findex toggle-auto-hungry-state @r{(c-)}
Toggle both auto-newline and hungry delete minor modes.
@item @kbd{C-c C-w} (@code{M-x subword-mode})
@@ -1232,7 +1237,7 @@ Toggle subword mode.
@item @kbd{M-x c-toggle-syntactic-indentation}
@findex c-toggle-syntactic-indentation
-@findex toggle-syntactic-indentation (c-)
+@findex toggle-syntactic-indentation @r{(c-)}
Toggle syntactic-indentation mode.
@end table
@@ -1246,8 +1251,7 @@ value will turn it (or them) off.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Electric Keys, Auto-newlines, Minor Modes, Commands
-@comment node-name, next, previous, up
+@node Electric Keys
@section Electric Keys and Keywords
@cindex electric characters
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -1276,9 +1280,9 @@ These keys and keywords are:
@item #
@kindex #
@findex c-electric-pound
-@findex electric-pound (c-)
+@findex electric-pound @r{(c-)}
@vindex c-electric-pound-behavior
-@vindex electric-pound-behavior (c-)
+@vindex electric-pound-behavior @r{(c-)}
Pound (bound to @code{c-electric-pound}) is electric when typed as the
first non-whitespace character on a line and not within a macro
definition. In this case, the variable @code{c-electric-pound-behavior}
@@ -1298,9 +1302,9 @@ character.
@itemx /
@kindex /
@findex c-electric-star
-@findex electric-star (c-)
+@findex electric-star @r{(c-)}
@findex c-electric-slash
-@findex electric-slash (c-)
+@findex electric-slash @r{(c-)}
A star (bound to @code{c-electric-star}) or a slash
(@code{c-electric-slash}) causes reindentation when you type it as the
second component of a C style block comment opener (@samp{/*}) or a
@@ -1321,7 +1325,7 @@ electric.
@itemx >
@kindex >
@findex c-electric-lt-gt
-@findex electric-lt-gt (c-)
+@findex electric-lt-gt @r{(c-)}
A less-than or greater-than sign (bound to @code{c-electric-lt-gt}) is
electric in two circumstances: when it is an angle bracket in a C++
@samp{template} declaration (and similar constructs in other
@@ -1335,7 +1339,7 @@ electric.
@itemx )
@kindex )
@findex c-electric-paren
-@findex electric-paren (c-)
+@findex electric-paren @r{(c-)}
The normal parenthesis characters @samp{(} and @samp{)} (bound to
@code{c-electric-paren}) reindent the current line. This is useful
for getting the closing parenthesis of an argument list aligned
@@ -1352,7 +1356,7 @@ get these actions. @xref{Clean-ups}.
@itemx @}
@kindex @}
@findex c-electric-brace
-@findex electric-brace (c-)
+@findex electric-brace @r{(c-)}
Typing a brace (bound to @code{c-electric-brace}) reindents the
current line. Also, one or more newlines might be inserted if
auto-newline minor mode is enabled. @xref{Auto-newlines}.
@@ -1363,7 +1367,7 @@ inserted by auto-newline mode in certain circumstances.
@item :
@kindex :
@findex c-electric-colon
-@findex electric-colon (c-)
+@findex electric-colon @r{(c-)}
Typing a colon (bound to @code{c-electric-colon}) reindents the
current line. Additionally, one or more newlines might be inserted if
auto-newline minor mode is enabled. @xref{Auto-newlines}. If you
@@ -1380,7 +1384,7 @@ avoiding all these spurious reindentations, newlines, and clean-ups.
@itemx ,
@kindex ,
@findex c-electric-semi&comma
-@findex electric-semi&comma (c-)
+@findex electric-semi&comma @r{(c-)}
Typing a semicolon or comma (bound to @code{c-electric-semi&comma})
reindents the current line. Also, a newline might be inserted if
auto-newline minor mode is enabled. @xref{Auto-newlines}.
@@ -1391,7 +1395,7 @@ when you type a semicolon or comma just after it. @xref{Clean-ups}.
@end table
@deffn Command c-electric-continued-statement
-@findex electric-continued-statement (c-)
+@findex electric-continued-statement @r{(c-)}
Certain keywords are electric, causing reindentation when they are
preceded only by whitespace on the line. The keywords are those that
@@ -1426,8 +1430,7 @@ modes except IDL mode, since CORBA IDL doesn't have any statements.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Auto-newlines, Hungry WS Deletion, Electric Keys, Commands
-@comment node-name, next, previous, up
+@node Auto-newlines
@section Auto-newline Insertion
@cindex auto-newline
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -1468,7 +1471,7 @@ normal, with no @kbd{C-u} prefix).
@end itemize
You can configure the precise circumstances in which newlines get
-inserted (see @pxref{Custom Auto-newlines}). Typically, the style
+inserted (@pxref{Custom Auto-newlines}). Typically, the style
system (@pxref{Styles}) will have set this up for you, so you probably
won't have to bother.
@@ -1482,8 +1485,7 @@ clean-ups listed by key.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Hungry WS Deletion, Subword Movement, Auto-newlines, Commands
-@comment node-name, next, previous, up
+@node Hungry WS Deletion
@section Hungry Deletion of Whitespace
@cindex hungry-deletion
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -1520,8 +1522,8 @@ deletion.
@item @kbd{@key{DEL}} (@code{c-electric-backspace})
@kindex DEL
@findex c-electric-backspace
-@findex electric-backspace (c-)
-This command is run by default when you hit the @kbd{DEL} key. When
+@findex electric-backspace @r{(c-)}
+This command is run by default when you hit the @kbd{@key{DEL}} key. When
hungry delete mode is enabled, it deletes any amount of whitespace in
the backwards direction. Otherwise, or when used with a prefix
argument or in a literal (@pxref{Auto-newlines}), the command just
@@ -1531,7 +1533,7 @@ passing it the prefix argument, if any.)
@item @code{c-backspace-function}
@vindex c-backspace-function
-@vindex backspace-function (c-)
+@vindex backspace-function @r{(c-)}
@findex backward-delete-char-untabify
Hook that gets called by @code{c-electric-backspace} when it doesn't
do an ``electric'' deletion of the preceding whitespace. The default
@@ -1542,7 +1544,7 @@ deletes a single character.
@item @kbd{C-d} (@code{c-electric-delete-forward})
@kindex C-d
@findex c-electric-delete-forward
-@findex electric-delete-forward (c-)
+@findex electric-delete-forward @r{(c-)}
This function, which is bound to @kbd{C-d} by default, works just like
@code{c-electric-backspace} but in the forward direction. When it
doesn't do an ``electric'' deletion of the following whitespace, it
@@ -1552,7 +1554,7 @@ argument.)
@item @code{c-delete-function}
@vindex c-delete-function
-@vindex delete-function (c-)
+@vindex delete-function @r{(c-)}
@findex delete-char
Hook that gets called by @code{c-electric-delete-forward} when it
doesn't do an ``electric'' deletion of the following whitespace. The
@@ -1567,12 +1569,12 @@ rather than using the minor mode toggling.
@table @asis
@item @kbd{C-c C-@key{DEL}}, or @kbd{C-c @key{DEL}} (@code{c-hungry-delete-backwards})@footnote{This command was formerly known as @code{c-hungry-backspace}.}
-@kindex C-c C-<backspace>
-@kindex C-c <backspace>
+@kindex C-c C-Backspace
+@kindex C-c Backspace
@kindex C-c C-DEL
@kindex C-c DEL
@findex c-hungry-delete-backwards
-@findex hungry-delete-backwards (c-)
+@findex hungry-delete-backwards @r{(c-)}
Delete any amount of whitespace in the backwards direction (regardless
whether hungry-delete mode is enabled or not). This command is bound
to both @kbd{C-c C-@key{DEL}} and @kbd{C-c @key{DEL}}, since the more
@@ -1581,29 +1583,29 @@ a character terminal.
@item @kbd{C-c C-d}, @kbd{C-c C-@key{DELETE}}, or @kbd{C-c @key{DELETE}} (@code{c-hungry-delete-forward})
@kindex C-c C-d
-@kindex C-c C-<DELETE>
-@kindex C-c <DELETE>
+@kindex C-c C-Delete
+@kindex C-c Delete
@findex c-hungry-delete-forward
-@findex hungry-delete-forward (c-)
+@findex hungry-delete-forward @r{(c-)}
Delete any amount of whitespace in the forward direction (regardless
whether hungry-delete mode is enabled or not). This command is bound
-to both @kbd{C-c C-@key{DELETE}} and @kbd{C-c @key{DELETE}} for the
+to both @kbd{C-c C-@key{Delete}} and @kbd{C-c @key{Delete}} for the
same reason as for @key{DEL} above.
@end table
@end table
-@kindex <delete>
-@kindex <backspace>
+@kindex Delete
+@kindex Backspace
-When we talk about @kbd{@key{DEL}}, and @kbd{@key{DELETE}} above, we
+When we talk about @kbd{@key{DEL}}, and @kbd{@key{Delete}} above, we
actually do so without connecting them to the physical keys commonly
known as @key{Backspace} and @key{Delete}. The default bindings to
those two keys depends on the flavor of (X)Emacs you are using.
@findex c-electric-delete
-@findex electric-delete (c-)
+@findex electric-delete @r{(c-)}
@findex c-hungry-delete
-@findex hungry-delete (c-)
+@findex hungry-delete @r{(c-)}
@vindex delete-key-deletes-forward
In XEmacs 20.3 and beyond, the @key{Backspace} key is bound to
@code{c-electric-backspace} and the @key{Delete} key is bound to
@@ -1640,8 +1642,7 @@ trouble with this in GNU Emacs.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Subword Movement, Other Commands, Hungry WS Deletion, Commands
-@comment node-name, next, previous, up
+@node Subword Movement
@section Subword Movement and Editing
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -1678,23 +1679,23 @@ editing commands with variants that recognize subwords in a
nomenclature and treat them as separate words:
@findex c-forward-subword
-@findex forward-subword (c-)
+@findex forward-subword @r{(c-)}
@findex c-backward-subword
-@findex backward-subword (c-)
+@findex backward-subword @r{(c-)}
@findex c-mark-subword
-@findex mark-subword (c-)
+@findex mark-subword @r{(c-)}
@findex c-kill-subword
-@findex kill-subword (c-)
+@findex kill-subword @r{(c-)}
@findex c-backward-kill-subword
-@findex backward-kill-subword (c-)
+@findex backward-kill-subword @r{(c-)}
@findex c-transpose-subwords
-@findex transpose-subwords (c-)
+@findex transpose-subwords @r{(c-)}
@findex c-capitalize-subword
-@findex capitalize-subword (c-)
+@findex capitalize-subword @r{(c-)}
@findex c-upcase-subword
-@findex upcase-subword (c-)
+@findex upcase-subword @r{(c-)}
@findex c-downcase-subword
-@findex downcase-subword (c-)
+@findex downcase-subword @r{(c-)}
@multitable @columnfractions .20 .40 .40
@c This could be converted to @headitem when we require Texinfo 4.7
@iftex
@@ -1708,7 +1709,7 @@ nomenclature and treat them as separate words:
@item @kbd{M-b} @tab @code{backward-word} @tab @code{c-backward-subword}
@item @kbd{M-@@} @tab @code{mark-word} @tab @code{c-mark-subword}
@item @kbd{M-d} @tab @code{kill-word} @tab @code{c-kill-subword}
-@item @kbd{M-DEL} @tab @code{backward-kill-word} @tab @code{c-backward-kill-subword}
+@item @kbd{M-@key{DEL}} @tab @code{backward-kill-word} @tab @code{c-backward-kill-subword}
@item @kbd{M-t} @tab @code{transpose-words} @tab @code{c-transpose-subwords}
@item @kbd{M-c} @tab @code{capitalize-word} @tab @code{c-capitalize-subword}
@item @kbd{M-u} @tab @code{upcase-word} @tab @code{c-upcase-subword}
@@ -1733,8 +1734,7 @@ As a bonus, you can also use @code{subword-mode} in non-@ccmode{}
buffers by typing @kbd{M-x subword-mode}.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Other Commands, , Subword Movement, Commands
-@comment node-name, next, previous, up
+@node Other Commands
@section Other Commands
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -1744,7 +1744,7 @@ Here are the various other commands that didn't fit anywhere else:
@item @kbd{C-c .} (@code{c-set-style})
@kindex C-c .
@findex c-set-style
-@findex set-style (c-)
+@findex set-style @r{(c-)}
Switch to the specified style in the current buffer. Use like this:
@example
@@ -1760,18 +1760,31 @@ file. For commands that you can use to view the effect of your changes,
see @ref{Indentation Commands} and @ref{Filling and Breaking}.
For details of the @ccmode{} style system, see @ref{Styles}.
+
@item @kbd{C-c :} (@code{c-scope-operator})
@kindex C-c :
@findex c-scope-operator
-@findex scope-operator (c-)
+@findex scope-operator @r{(c-)}
In C++, it is also sometimes desirable to insert the double-colon scope
operator without performing the electric behavior of colon insertion.
@kbd{C-c :} does just this.
+@item @kbd{C-c C-z} (@code{c-display-defun-name})
+@kindex C-c C-z
+@findex c-display-defun-name
+@findex display-defun-name @r{(c-)}
+Display the current function name, if any, in the minibuffer.
+Additionally, if a prefix argument is given, push the function name to
+the kill ring. If there is no current function,
+@code{c-display-defun-name} does nothing. In Emacs, you can use this
+command in the middle of an interactive search if you set the
+customizable option @code{isearch-allow-scroll} to non-@code{nil}.
+@xref{Not Exiting Isearch,,,emacs, GNU Emacs Manual}.
+
@item @kbd{C-c C-\} (@code{c-backslash-region})
@kindex C-c C-\
@findex c-backslash-region
-@findex backslash-region (c-)
+@findex backslash-region @r{(c-)}
This function inserts and aligns or deletes end-of-line backslashes in
the current region. These are typically used in multi-line macros.
@@ -1801,7 +1814,7 @@ with the trailing backslashes.
@item @kbd{C-c C-e} (@code{c-macro-expand})
@kindex C-c C-e
@findex c-macro-expand
-@findex macro-expand (c-)
+@findex macro-expand @r{(c-)}
This command expands C, C++, Objective C or Pike macros in the region,
using an appropriate external preprocessor program. Normally it
displays its output in a temporary buffer, but if you give it a prefix
@@ -1818,8 +1831,7 @@ ask for help in the standard (X)Emacs forums.
@end table
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Font Locking, Config Basics, Commands, Top
-@comment node-name, next, previous, up
+@node Font Locking
@chapter Font Locking
@cindex font locking
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -1843,14 +1855,14 @@ sections apply to the other languages.
* Font Locking Preliminaries::
* Faces::
* Doc Comments::
+* Wrong Comment Style::
* Misc Font Locking::
* AWK Mode Font Locking::
@end menu
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Font Locking Preliminaries, Faces, Font Locking, Font Locking
-@comment node-name, next, previous, up
+@node Font Locking Preliminaries
@section Font Locking Preliminaries
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -1947,8 +1959,7 @@ recognize types.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Faces, Doc Comments, Font Locking Preliminaries, Font Locking
-@comment node-name, next, previous, up
+@node Faces
@section Faces
@cindex faces
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2033,7 +2044,7 @@ or @code{font-lock-reference-face}, for lack of a closer equivalent.
@item
@vindex font-lock-warning-face
@vindex c-invalid-face
-@vindex invalid-face (c-)
+@vindex invalid-face @r{(c-)}
Some kinds of syntactic errors are fontified with
@code{font-lock-warning-face} in Emacs. In older XEmacs versions
there's no corresponding standard face, so there a special
@@ -2046,8 +2057,7 @@ since those aren't syntactic errors in themselves.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Doc Comments, Misc Font Locking, Faces, Font Locking
-@comment node-name, next, previous, up
+@node Doc Comments
@section Documentation Comments
@cindex documentation comments
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2058,7 +2068,7 @@ specially structured comments, e.g., the standard Javadoc tool in Java.
the special markup inside them.
@defopt c-doc-comment-style
-@vindex doc-comment-style (c-)
+@vindex doc-comment-style @r{(c-)}
This is a style variable that specifies which documentation comment
style to recognize, e.g., @code{javadoc} for Javadoc comments.
@@ -2083,7 +2093,7 @@ to do @kbd{M-x java-mode} (or whatever mode you're currently using) to
reinitialize.
@findex c-setup-doc-comment-style
-@findex setup-doc-comment-style (c-)
+@findex setup-doc-comment-style @r{(c-)}
Note also that when @ccmode{} starts up, the other variables are
modified before the mode hooks are run. If you change this variable in
a mode hook, you'll have to call @code{c-setup-doc-comment-style}
@@ -2105,6 +2115,11 @@ For Pike autodoc markup, the standard in Pike.
@item gtkdoc
@cindex GtkDoc markup
For GtkDoc markup, widely used in the Gnome community.
+
+@item doxygen
+@cindex Doxygen markup
+For Doxygen markup, which can be used with C, C++, Java and variety of
+other languages.
@end table
The above is by no means complete. If you'd like to see support for
@@ -2117,13 +2132,38 @@ with @code{c-doc-comment-style}: Supply a variable or function
in @code{c-doc-comment-style}. If it's a variable, it's prepended to
@code{font-lock-keywords}. If it's a function, it's called at mode
initialization and the result is prepended. For an example, see
-@code{javadoc-font-lock-keywords} in @file{cc-fonts.el}.
+@code{javadoc-font-lock-keywords} in @file{cc-fonts.el}. It is even
+possible, to a limited extent, to fontify constructs inside a doc
+comment with other faces. For an example, see pike autodoc comment
+style towards the end of @file{cc-fonts-el}.
If you add support for another doc comment style, please consider
contributing it: send a note to @email{bug-cc-mode@@gnu.org}.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Misc Font Locking, AWK Mode Font Locking, Doc Comments, Font Locking
+@node Wrong Comment Style
+@comment node-name, next, previous, up
+@section Marking ``Wrong'' style comments
+@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Most languages supported by @ccmode{} have two styles of comments,
+namely block comments and line comments. Your project may have such a
+strong preference for one of them, that you wish ``wrong'' style
+comments to be clearly marked.
+
+You can get @ccmode{} to do this by setting the default comment style,
+if necessary, (@pxref{Minor Modes}) and setting the customizable
+option @code{c-mark-wrong-style-of-comment} to non-@code{nil}.
+
+@defvar c-mark-wrong-style-of-comment
+@vindex mark-wrong-style-of-comment (c-)
+When this customizable option is non-@code{nil}, comment delimiters
+which aren't of the default style will be fontified with
+@code{font-lock-warning-face}.
+@end defvar
+
+@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+@node Misc Font Locking
@comment node-name, next, previous, up
@section Miscellaneous Font Locking
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2150,7 +2190,7 @@ foo& bar
@code{c-asymmetry-fontification-flag}.
@defvar c-asymmetry-fontification-flag
-@vindex asymmetry-fontification-flag (c-)
+@vindex asymmetry-fontification-flag @r{(c-)}
When @code{c-asymmetry-fontification-flag} is non-nil (which it is by
default), code like the above, with white space either before or after
the operator, but not both, is fontified as a declaration. When the
@@ -2178,7 +2218,7 @@ section only applies when CC Mode cannot disambiguate a construct in
any other way.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node AWK Mode Font Locking, , Misc Font Locking, Font Locking
+@node AWK Mode Font Locking
@comment node-name, next, previous, up
@section AWK Mode Font Locking
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2239,7 +2279,7 @@ escaped newline. The @samp{\} is highlighted.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Config Basics, Custom Filling and Breaking, Font Locking, Top
+@node Config Basics
@comment node-name, next, previous, up
@chapter Configuration Basics
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2269,6 +2309,8 @@ method, ``Top-level commands or the customization interface''.
If you make conflicting settings in several of these ways, the way
that takes precedence is the one that appears latest in this list:
+@c Version of list for Texinfo <= 4.x
+@ifclear txicommandconditionals
@itemize @w{}
@item
@table @asis
@@ -2279,6 +2321,18 @@ that takes precedence is the one that appears latest in this list:
@itemx File Local Variable setting
@end table
@end itemize
+@end ifclear
+@c Version of list for Texinfo >= 5.x
+@ifset txicommandconditionals
+@itemize @w{}
+@item Style
+@item File Style@footnote{In earlier versions of @ccmode{}, a File Style setting took precedence over any other setting apart from a File Local Variable setting.}
+@item Top-level command or ``customization interface''
+@item Hook
+@item File Local Variable setting
+@end itemize
+@end ifset
+
Here is a summary of the different ways of writing your configuration
settings:
@@ -2395,7 +2449,7 @@ could achieve this with code like this in your @file{.emacs}:
@end group
@end example
-In a programming team, a hook is a also a good place for each member
+In a programming team, a hook is also a good place for each member
to put his own personal preferences. For example, you might be the
only person in your team who likes Auto-newline minor mode. You could
have it enabled by default by placing the following in your
@@ -2417,8 +2471,7 @@ have it enabled by default by placing the following in your
@end menu
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node CC Hooks, Style Variables, Config Basics, Config Basics
-@comment node-name, next, previous, up
+@node CC Hooks
@section Hooks
@cindex mode hooks
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2448,14 +2501,14 @@ hook. Thus, any style settings done in these hooks will override
those set by @code{c-default-style}.
@defvar c-initialization-hook
-@vindex initialization-hook (c-)
+@vindex initialization-hook @r{(c-)}
Hook run only once per Emacs session, when @ccmode{} is initialized.
This is a good place to change key bindings (or add new ones) in any
of the @ccmode{} key maps. @xref{Sample Init File}.
@end defvar
@defvar c-mode-common-hook
-@vindex mode-common-hook (c-)
+@vindex mode-common-hook @r{(c-)}
Common hook across all languages. It's run immediately before the
language specific hook.
@end defvar
@@ -2491,8 +2544,7 @@ file.
@end example
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Style Variables, Styles, CC Hooks, Config Basics
-@comment node-name, next, previous, up
+@node Style Variables
@section Style Variables
@cindex styles
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2515,7 +2567,7 @@ initialized.
@item
@vindex c-old-style-variable-behavior
-@vindex old-style-variable-behavior (c-)
+@vindex old-style-variable-behavior @r{(c-)}
The default global binding of any style variable (with two exceptions
- see below) is the special symbol @code{set-from-style}. When the
style system initializes a buffer-local copy of a style variable for a
@@ -2535,7 +2587,7 @@ Basics}).
@item
The style variable @code{c-offsets-alist} (@pxref{c-offsets-alist}) is
an association list with an element for each syntactic symbol. It's
-handled a little differently from the other style variables. It's
+handled a little differently from the other style variables. Its
default global binding is the empty list @code{nil}, rather than
@code{set-from-style}. Before the style system is initialized, you
can add individual elements to @code{c-offsets-alist} by calling
@@ -2579,8 +2631,7 @@ Commas});@*
(@pxref{Custom Macros}).
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Styles, , Style Variables, Config Basics
-@comment node-name, next, previous, up
+@node Styles
@section Styles
@cindex styles
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2614,8 +2665,7 @@ already formatted piece of your code, @ref{Guessing the Style}.
@end menu
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Built-in Styles, Choosing a Style, Styles, Styles
-@comment node-name, next, previous, up
+@node Built-in Styles
@subsection Built-in Styles
@cindex styles, built-in
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2653,7 +2703,7 @@ The classic Stroustrup style for C++ code.
Popular C++ coding standards as defined by ``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
+@uref{https://www.doc.ic.ac.uk/lab/cplus/c++.rules/} among other
places.}.
@c N.B. This URL was still valid at 2005/8/28 (ACM).
@@ -2665,7 +2715,7 @@ C coding standard for Linux (the kernel).
@cindex Python style
C coding standard for Python extension modules@footnote{Python is a
high level scripting language with a C/C++ foreign function interface.
-For more information, see @uref{http://www.python.org/}.}.
+For more information, see @uref{https://www.python.org/}.}.
@item java
@cindex Java style
@@ -2692,8 +2742,7 @@ afterwards.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Choosing a Style, Adding Styles, Built-in Styles, Styles
-@comment node-name, next, previous, up
+@node Choosing a Style
@subsection Choosing a Style
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2711,7 +2760,7 @@ To set a buffer's style interactively, use the command @kbd{C-c .}
list, @ref{File Styles}.
@defopt c-default-style
-@vindex default-style (c-)
+@vindex default-style @r{(c-)}
This variable specifies which style to install by default in new
buffers. It takes either a style name string, or an association list
of major mode symbols to style names:
@@ -2744,14 +2793,13 @@ The standard value of @code{c-default-style} is @w{@code{((java-mode
@end defopt
@defvar c-indentation-style
-@vindex indentation-style (c-)
+@vindex indentation-style @r{(c-)}
This variable always contains the buffer's current style name, as a
string.
@end defvar
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Adding Styles, Guessing the Style, Choosing a Style, Styles
-@comment node-name, next, previous, up
+@node Adding Styles
@subsection Adding and Amending Styles
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2814,7 +2862,7 @@ should never modify this variable directly. Instead, @ccmode{}
provides the function @code{c-add-style} for this purpose.
@defun c-add-style stylename description &optional set-p
-@findex add-style (c-)
+@findex add-style @r{(c-)}
Add or update a style called @var{stylename}, a string.
@var{description} is the new style definition in the form described
above. If @var{stylename} already exists in @code{c-style-alist} then
@@ -2832,24 +2880,23 @@ style can be added and automatically set. @xref{Sample Init File}.
@end defun
@defvar c-style-alist
-@vindex style-alist (c-)
+@vindex style-alist @r{(c-)}
This is the variable that holds the definitions for the styles. It
should not be changed directly; use @code{c-add-style} instead.
@end defvar
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Guessing the Style, File Styles, Adding Styles, Styles
-@comment node-name, next, previous, up
+@node Guessing the Style
@subsection Guessing the Style
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Instead of specifying a style, you can get @ccmode{} to @dfn{guess}
your style by examining an already formatted code buffer. @ccmode{}
-then determines the ''most frequent'' offset (@pxref{c-offsets-alist})
+then determines the ``most frequent'' offset (@pxref{c-offsets-alist})
for each of the syntactic symbols (@pxref{Indentation Engine Basics})
-encountered in the buffer, and the ''most frequent'' value of
+encountered in the buffer, and the ``most frequent'' value of
c-basic-offset (@pxref{Customizing Indentation}), then merges the
-current style with these ''guesses'' to form a new style. This
+current style with these ``guesses'' to form a new style. This
combined style is known as the @dfn{guessed style}.
To do this, call @code{c-guess} (or one of the other 5 guessing
@@ -2868,9 +2915,9 @@ You can then set the guessed style in any @ccmode{} buffer with
@findex c-guess-no-install
@findex c-guess-buffer-no-install
@findex c-guess-region-no-install
-@findex guess-no-install (c-)
-@findex guess-buffer-no-install (c-)
-@findex guess-region-no-install (c-)
+@findex guess-no-install @r{(c-)}
+@findex guess-buffer-no-install @r{(c-)}
+@findex guess-region-no-install @r{(c-)}
These commands analyze a part of the current buffer and guess the
style from it.
@@ -2891,9 +2938,9 @@ guesses before forming the guessed style.
@findex c-guess
@findex c-guess-buffer
@findex c-guess-region
-@findex guess (c-)
-@findex guess-buffer (c-)
-@findex guess-region (c-)
+@findex guess @r{(c-)}
+@findex guess-buffer @r{(c-)}
+@findex guess-region @r{(c-)}
These commands analyze a part of the current buffer, guess the style
from it, then install the guessed style on the buffer. The guessed
style is given a name based on the buffer's absolute file name, and
@@ -2909,14 +2956,14 @@ guesses before forming the guessed style.
@end table
@defopt c-guess-region-max
-@vindex guess-region-max (c-)
+@vindex guess-region-max @r{(c-)}
This variable, default 50000, is the size in bytes of the buffer
portion examined by c-guess and c-guess-no-install. If set to
@code{nil}, the entire buffer is examined.
@end defopt
@defopt c-guess-offset-threshold
-@vindex guess-offset-threshold (c-)
+@vindex guess-offset-threshold @r{(c-)}
This variable, default 10, is the maximum offset, either outwards or
inwards, which will be taken into account by the analysis process.
Any offset bigger than this will be ignored. For no limit, set this
@@ -2926,7 +2973,7 @@ variable to a large number.
@table @asis
@item @kbd{M-x c-guess-install}
@findex c-guess-install
-@findex guess-install (c-)
+@findex guess-install @r{(c-)}
Set the current buffer's style to the guessed style. This prompts you
to enter an optional new style name to give to the guessed style. By
@@ -2935,7 +2982,7 @@ can then use this style like any other.
@item @kbd{M-x c-guess-view}
@findex c-guess-view
-@findex guess-view (c-)
+@findex guess-view @r{(c-)}
Display the most recently guessed style in a temporary buffer. This
display is in the form of a @code{c-add-style} form (@pxref{Adding
Styles}) which can be easily copied to your @file{.emacs}. You will
@@ -2961,8 +3008,7 @@ these offsets or the parent style name.
@end table
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node File Styles, , Guessing the Style, Styles
-@comment node-name, next, previous, up
+@node File Styles
@subsection File Styles
@cindex styles, file local
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2981,14 +3027,14 @@ Don't use them anywhere else! These allow you to customize the style
on a per-file basis:
@defvar c-file-style
-@vindex file-style (c-)
+@vindex file-style @r{(c-)}
Set this variable to a style name string in the Local Variables list.
From now on, when you visit the file, @ccmode{} will automatically set
the file's style to this one using @code{c-set-style}.
@end defvar
@defvar c-file-offsets
-@vindex file-offsets (c-)
+@vindex file-offsets @r{(c-)}
Set this variable (in the Local Variables list) to an association list
of the same format as @code{c-offsets-alist}. From now on, when you
visit the file, @ccmode{} will automatically institute these offsets
@@ -3010,8 +3056,7 @@ mode hooks (@pxref{CC Hooks}). Any individual setting of a variable
will override one made through @code{c-file-style} or
@code{c-file-offsets}.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Custom Filling and Breaking, Custom Auto-newlines, Config Basics, Top
-@comment node-name, next, previous, up
+@node Custom Filling and Breaking
@chapter Customizing Filling and Line Breaking
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -3021,7 +3066,7 @@ this by hooking in on the different line breaking functions and tuning
relevant variables as necessary.
@vindex c-comment-prefix-regexp
-@vindex comment-prefix-regexp (c-)
+@vindex comment-prefix-regexp @r{(c-)}
@cindex comment line prefix
@vindex comment-start
@vindex comment-end
@@ -3042,7 +3087,7 @@ variables@footnote{@code{comment-start}, @code{comment-end},
according to the language syntax and the comment line prefix.
@defopt c-comment-prefix-regexp
-@vindex comment-prefix-regexp (c-)
+@vindex comment-prefix-regexp @r{(c-)}
This style variable contains the regexp used to recognize the
@dfn{comment line prefix}, which is the line decoration that starts
every line in a comment. The variable is either the comment line
@@ -3079,7 +3124,7 @@ this variable, please make sure it still matches the comment starter
block comments.
@findex c-setup-paragraph-variables
-@findex setup-paragraph-variables (c-)
+@findex setup-paragraph-variables @r{(c-)}
Also note that since @ccmode{} uses the value of
@code{c-comment-prefix-regexp} to set up several other variables at
mode initialization, there won't be any effect if you just change it
@@ -3115,7 +3160,7 @@ margins of the texts kept intact:
@end example
@findex c-setup-filladapt
-@findex setup-filladapt (c-)
+@findex setup-filladapt @r{(c-)}
@findex filladapt-mode
@vindex filladapt-mode
@cindex Filladapt mode
@@ -3140,9 +3185,9 @@ something like this in your @file{.emacs}:
@end example
@defopt c-block-comment-prefix
-@vindex block-comment-prefix (c-)
+@vindex block-comment-prefix @r{(c-)}
@vindex c-comment-continuation-stars
-@vindex comment-continuation-stars (c-)
+@vindex comment-continuation-stars @r{(c-)}
Normally the comment line prefix inserted for a new line inside a
comment is deduced from other lines in it. However there's one
situation when there's no hint about what the prefix should look like,
@@ -3180,7 +3225,7 @@ most common comment styles, see @ref{Line-Up Functions}.
@end defopt
@defopt c-ignore-auto-fill
-@vindex ignore-auto-fill (c-)
+@vindex ignore-auto-fill @r{(c-)}
When auto fill mode is enabled, @ccmode{} can selectively ignore it
depending on the context the line break would occur in, e.g., to never
break a line automatically inside a string literal. This variable
@@ -3229,8 +3274,7 @@ as one comment, and the rest of the paragraph handling code
inconsistent behavior.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Custom Auto-newlines, Clean-ups, Custom Filling and Breaking, Top
-@comment node-name, next, previous, up
+@node Custom Auto-newlines
@chapter Customizing Auto-newlines
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -3285,8 +3329,7 @@ circumstances. @xref{Clean-ups}.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Hanging Braces, Hanging Colons, Custom Auto-newlines, Custom Auto-newlines
-@comment node-name, next, previous, up
+@node Hanging Braces
@section Hanging Braces
@cindex hanging braces
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -3333,7 +3376,7 @@ newline both before and after the brace. In place of a
is useful when the auto newlines depend on the code around the brace.
@defopt c-hanging-braces-alist
-@vindex hanging-braces-alist (c-)
+@vindex hanging-braces-alist @r{(c-)}
This variable is an association list which maps syntactic symbols to
lists of places to insert a newline. @xref{Association
@@ -3435,13 +3478,12 @@ themselves.
@end menu
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Custom Braces, , Hanging Braces, Hanging Braces
-@comment node-name, next, previous, up
+@node Custom Braces
@subsection Custom Brace Hanging
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@vindex c-hanging-braces-alist
-@vindex hanging-braces-alist (c-)
+@vindex hanging-braces-alist @r{(c-)}
@cindex action functions
Syntactic symbols aren't the only place where you can customize
@ccmode{} with the lisp equivalent of callback functions. Remember
@@ -3462,7 +3504,7 @@ some combination of @code{before} and @code{after}, including neither
of them (i.e., @code{nil}).
@defvar c-syntactic-context
-@vindex syntactic-context (c-)
+@vindex syntactic-context @r{(c-)}
During the call to the indentation or brace hanging @var{action}
function, this variable is bound to the full syntactic analysis list.
This might be, for example, @samp{((block-close 73))}. Don't ever
@@ -3515,7 +3557,7 @@ associate the @code{block-close} symbol with the @var{action} function
@end example
@findex c-snug-do-while
-@findex snug-do-while (c-)
+@findex snug-do-while @r{(c-)}
This function simply looks to see if the brace closes a ``do-while''
clause and if so, returns the list @samp{(before)} indicating
that a newline should be inserted before the brace, but not after it.
@@ -3523,15 +3565,14 @@ In all other cases, it returns the list @samp{(before after)} so
that the brace appears on a line by itself.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Hanging Colons, Hanging Semicolons and Commas, Hanging Braces, Custom Auto-newlines
-@comment node-name, next, previous, up
+@node Hanging Colons
@section Hanging Colons
@cindex hanging colons
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@cindex customization, colon hanging
@vindex c-hanging-colons-alist
-@vindex hanging-colons-alist (c-)
+@vindex hanging-colons-alist @r{(c-)}
Using a mechanism similar to brace hanging (@pxref{Hanging Braces}),
colons can also be made to hang using the style variable
@@ -3543,7 +3584,7 @@ syntactic symbol in the alist, no newlines are inserted around the
newly typed colon.
@defopt c-hanging-colons-alist
-@vindex hanging-colons-alist (c-)
+@vindex hanging-colons-alist @r{(c-)}
@table @asis
@item The Key: the syntactic symbol
@@ -3566,8 +3607,7 @@ them are controlled by a different mechanism, called @dfn{clean-ups} in
@ccmode{}. @xref{Clean-ups}, for details.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Hanging Semicolons and Commas, , Hanging Colons, Custom Auto-newlines
-@comment node-name, next, previous, up
+@node Hanging Semicolons and Commas
@section Hanging Semicolons and Commas
@cindex hanging semicolons
@cindex hanging commas
@@ -3576,7 +3616,7 @@ them are controlled by a different mechanism, called @dfn{clean-ups} in
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@defopt c-hanging-semi&comma-criteria
-@vindex hanging-semi&comma-criteria (c-)
+@vindex hanging-semi&comma-criteria @r{(c-)}
This style variable takes a list of functions; these get called when
you type a semicolon or comma. The functions are called in order
without arguments. When these functions are entered, point is just
@@ -3611,7 +3651,7 @@ semicolons, apart from those separating @code{for}-clause statements.
@end defopt
@defun c-semi&comma-no-newlines-before-nonblanks
-@findex semi&comma-no-newlines-before-nonblanks (c-)
+@findex semi&comma-no-newlines-before-nonblanks @r{(c-)}
This is an example of a criteria function, provided by @ccmode{}. It
prevents newlines from being inserted after semicolons when there is a
non-blank following line. Otherwise, it makes no determination. To
@@ -3631,9 +3671,9 @@ use, add this function to the front of the
@end defun
@defun c-semi&comma-inside-parenlist
-@findex semi&comma-inside-parenlist (c-)
+@findex semi&comma-inside-parenlist @r{(c-)}
@defunx c-semi&comma-no-newlines-for-oneline-inliners
-@findex semi&comma-no-newlines-for-oneline-inliners (c-)
+@findex semi&comma-no-newlines-for-oneline-inliners @r{(c-)}
The function @code{c-semi&comma-inside-parenlist} is what prevents
newlines from being inserted inside the parenthesis list of @code{for}
statements. In addition to
@@ -3646,8 +3686,7 @@ newlines after semicolons inside one-line inline method definitions
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Clean-ups, Indentation Engine Basics, Custom Auto-newlines, Top
-@comment node-name, next, previous, up
+@node Clean-ups
@chapter Clean-ups
@cindex clean-ups
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -3674,7 +3713,7 @@ of the construct, and (apart from @code{comment-close-slash}) when the
construct does not occur within a literal (@pxref{Auto-newlines}).
@defopt c-cleanup-list
-@vindex cleanup-list (c-)
+@vindex cleanup-list @r{(c-)}
@cindex literal
You configure @ccmode{}'s clean-ups by setting the style variable
@@ -3857,7 +3896,7 @@ BEGIN @{FS = "\t"@} # use <TAB> as a field separator
@end example
@defopt c-max-one-liner-length
-@vindex max-one-liner-length (c-)
+@vindex max-one-liner-length @r{(c-)}
The maximum length of the resulting line for which the clean-up
@code{one-liner-defun} will be triggered. This length is that of the entire
line, including any leading whitespace and any trailing comment. Its
@@ -3899,8 +3938,7 @@ situation if you just want a literal @samp{/} inserted.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Indentation Engine Basics, Customizing Indentation, Clean-ups, Top
-@comment node-name, next, previous, up
+@node Indentation Engine Basics
@chapter Indentation Engine Basics
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -3940,7 +3978,7 @@ it by setting @code{c-syntactic-indentation} to @code{nil}. (To set
the variable interactively, @ref{Minor Modes}).
@defopt c-syntactic-indentation
-@vindex syntactic-indentation (c-)
+@vindex syntactic-indentation @r{(c-)}
When this is non-@code{nil} (which it is by default), the indentation
of code is done according to its syntactic structure. When it's
@code{nil}, every line is just indented to the same level as the
@@ -3959,8 +3997,7 @@ of the variables associated with indentation, not even
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Syntactic Analysis, Syntactic Symbols, Indentation Engine Basics, Indentation Engine Basics
-@comment node-name, next, previous, up
+@node Syntactic Analysis
@section Syntactic Analysis
@cindex syntactic analysis
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -3975,7 +4012,7 @@ Line-up functions (@pxref{Custom Line-Up}) or in functions on
@code{c-special-indent-hook} (@pxref{Other Indentation}).
@defun c-guess-basic-syntax
-@findex guess-basic-syntax (c-)
+@findex guess-basic-syntax @r{(c-)}
Determine the syntactic context of the current line.
@end defun
@@ -4029,7 +4066,7 @@ report what the syntactic analysis is for the current line:
@item @kbd{C-c C-s} (@code{c-show-syntactic-information})
@kindex C-c C-s
@findex c-show-syntactic-information
-@findex show-syntactic-information (c-)
+@findex show-syntactic-information @r{(c-)}
This command calculates the syntactic analysis of the current line and
displays it in the minibuffer. The command also highlights the anchor
position(s).
@@ -4118,14 +4155,13 @@ anchor position.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Syntactic Symbols, Indentation Calculation, Syntactic Analysis, Indentation Engine Basics
-@comment node-name, next, previous, up
+@node Syntactic Symbols
@section Syntactic Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@cindex syntactic symbols, brief list
@vindex c-offsets-alist
-@vindex offsets-alist (c-)
+@vindex offsets-alist @r{(c-)}
This section is a complete list of the syntactic symbols which appear
in the @code{c-offsets-alist} style variable, along with brief
descriptions. The previous section (@pxref{Syntactic Analysis})
@@ -4366,8 +4402,7 @@ Java. @ref{Java Symbols}.
@end menu
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Function Symbols, Class Symbols, Syntactic Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node Function Symbols
@subsection Function Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -4409,8 +4444,7 @@ isn't much special about them. Note however that line 8 is given
on the previous line.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Class Symbols, Conditional Construct Symbols, Function Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node Class Symbols
@subsection Class related Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -4556,8 +4590,7 @@ Here, line 1 is analyzed as a @code{topmost-intro}, but lines 2 and 3
are both analyzed as @code{template-args-cont} lines.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Conditional Construct Symbols, Switch Statement Symbols, Class Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node Conditional Construct Symbols
@subsection Conditional Construct Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -4624,8 +4657,7 @@ the same line as the preceding close brace, that line would still have
@code{block-close} syntax.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Switch Statement Symbols, Brace List Symbols, Conditional Construct Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node Switch Statement Symbols
@subsection Switch Statement Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -4660,8 +4692,7 @@ is treated slightly differently since it contains a brace that opens a
block; it is given @code{statement-case-open} syntax.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Brace List Symbols, External Scope Symbols, Switch Statement Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node Brace List Symbols
@subsection Brace List Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -4721,14 +4752,13 @@ Once again, line 8 is assigned as @code{brace-entry-open} as is line
with anchor point at the @samp{@{} of line 8@footnote{This extra
syntactic element was introduced in @ccmode{} 5.33.1 to allow extra
flexibility in indenting the second line of such a construct. You can
-preserve the behaviour resulting from the former syntactic analysis by
+preserve the behavior resulting from the former syntactic analysis by
giving @code{brace-list-entry} an offset of
@code{c-lineup-under-anchor} (@pxref{Misc Line-Up}).}, and
@code{brace-list-entry} anchored on the @samp{1} of line 8.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node External Scope Symbols, Paren List Symbols, Brace List Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node External Scope Symbols
@subsection External Scope Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -4791,8 +4821,7 @@ that isn't the case for historical reasons.}
@end table
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Paren List Symbols, Literal Symbols, External Scope Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node Paren List Symbols
@subsection Parenthesis (Argument) List Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -4851,8 +4880,7 @@ parenthesis that opens an argument list, appearing on a separate line,
is assigned the @code{statement-cont} syntax instead.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Literal Symbols, Multiline Macro Symbols, Paren List Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node Literal Symbols
@subsection Comment String Label and Macro Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -4940,8 +4968,7 @@ Line 17 is assigned @code{stream-op} syntax.
@end itemize
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Multiline Macro Symbols, Objective-C Method Symbols, Literal Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node Multiline Macro Symbols
@subsection Multiline Macro Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -4981,8 +5008,7 @@ macros.}.
@xref{Custom Macros}, for more info about the treatment of macros.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Objective-C Method Symbols, Java Symbols, Multiline Macro Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node Objective-C Method Symbols
@subsection Objective-C Method Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -5008,8 +5034,7 @@ assigned @code{objc-method-args-cont} syntax. Lines 5 and 6 are both
assigned @code{objc-method-call-cont} syntax.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Java Symbols, Statement Block Symbols, Objective-C Method Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node Java Symbols
@subsection Java Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -5046,8 +5071,7 @@ syntax due to it being a continuation of a variable declaration where preceding
the declaration is an annotation.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Statement Block Symbols, K&R Symbols, Java Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node Statement Block Symbols
@subsection Statement Block Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -5125,8 +5149,7 @@ example above. The other similar special function, @code{gauge}, is
handled like this too.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node K&R Symbols, , Statement Block Symbols, Syntactic Symbols
-@comment node-name, next, previous, up
+@node K&R Symbols
@subsection K&R Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -5152,8 +5175,7 @@ syntax.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Indentation Calculation, , Syntactic Symbols, Indentation Engine Basics
-@comment node-name, next, previous, up
+@node Indentation Calculation
@section Indentation Calculation
@cindex indentation
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -5251,8 +5273,7 @@ minibuffer when you hit @kbd{TAB}.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Customizing Indentation, Custom Macros, Indentation Engine Basics, Top
-@comment node-name, next, previous, up
+@node Customizing Indentation
@chapter Customizing Indentation
@cindex customization, indentation
@cindex indentation
@@ -5271,9 +5292,9 @@ The simplest and most used kind of ``offset'' setting in
@code{c-basic-offset}:
@defopt c-basic-offset
-@vindex basic-offset (c-)
+@vindex basic-offset @r{(c-)}
This style variable holds the basic offset between indentation levels.
-It's factory default is 4, but all the built-in styles set it
+Its factory default is 4, but all the built-in styles set it
themselves, to some value between 2 (for @code{gnu} style) and 8 (for
@code{bsd}, @code{linux}, and @code{python} styles).
@end defopt
@@ -5298,8 +5319,7 @@ indentation.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node c-offsets-alist, Interactive Customization, Customizing Indentation, Customizing Indentation
-@comment node-name, next, previous, up
+@node c-offsets-alist
@section c-offsets-alist
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -5309,7 +5329,7 @@ indentation. Details of how to set it up, and its relationship to
@ccmode{}'s style system are given in @ref{Style Variables}.
@defopt c-offsets-alist
-@vindex offsets-alist (c-)
+@vindex offsets-alist @r{(c-)}
This is an alist which associates an offset with each syntactic
symbol. This @dfn{offset} is a rule specifying how to indent a line
whose syntactic context matches the symbol. @xref{Syntactic
@@ -5342,7 +5362,7 @@ of these kinds of offsets:
@end defopt
@deffn Command c-set-offset (@kbd{C-c C-o})
-@findex set-offset (c-)
+@findex set-offset @r{(c-)}
@kindex C-c C-o
This command changes the entry for a syntactic symbol in the current
binding of @code{c-offsets-alist}, or it inserts a new entry if there
@@ -5457,7 +5477,7 @@ will be combined according to the method @code{first}.
@end table
@vindex c-strict-syntax-p
-@vindex strict-syntax-p (c-)
+@vindex strict-syntax-p @r{(c-)}
If an offset specification evaluates to @code{nil}, then a relative
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
@@ -5467,8 +5487,7 @@ it doesn't work well with some of the alignment functions that return
@code{c-strict-syntax-p} set to @code{nil}.}.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Interactive Customization, Line-Up Functions, c-offsets-alist, Customizing Indentation
-@comment node-name, next, previous, up
+@node Interactive Customization
@section Interactive Customization
@cindex customization, interactive
@cindex interactive customization
@@ -5562,7 +5581,7 @@ adjustments.
@c Move this bit to "Styles" (2005/10/7)
@deffn Command c-set-offset symbol offset
-@findex set-offset (c-)
+@findex set-offset @r{(c-)}
@kindex C-c C-o
This is the command bound to @kbd{C-c C-o}. It provides a convenient
way to set offsets on @code{c-offsets-alist} both interactively (see
@@ -5575,8 +5594,7 @@ for that syntactic element.
@c End of MOVE THIS BIT.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Line-Up Functions, Custom Line-Up, Interactive Customization, Customizing Indentation
-@comment node-name, next, previous, up
+@node Line-Up Functions
@section Line-Up Functions
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -5601,9 +5619,9 @@ any problems writing custom line-up functions for AWK mode.
The calling convention for line-up functions is described fully in
@ref{Custom Line-Up}. Roughly speaking, the return value is either an
-offset itself (such as @code{+} or @code{[0]}) or it's @code{nil},
-meaning ``this function is inappropriate in this case; try a
-different one''. @xref{c-offsets-alist}.
+offset itself (such as @code{+} or @code{[0]}), another line-up
+function, or it's @code{nil}, meaning ``this function is inappropriate
+in this case - try a different one''. @xref{c-offsets-alist}.
The subsections below describe all the standard line-up functions,
categorized by the sort of token the lining-up centers around. For
@@ -5621,15 +5639,15 @@ Works with:
@end ifinfo
@macro sssTBasicOffset
-<--> @i{c-basic-offset}@c
+<--> @i{c-basic-offset}
@end macro
@macro sssTsssTBasicOffset
-<--><--> @i{c-basic-offset}@c
+<--><--> @i{c-basic-offset}
@end macro
@macro hereFn{func}
-<- @i{\func\}@c
+<- @i{\func\}
@end macro
@c The TeX backend seems to insert extra spaces around the argument. :P
@@ -5649,8 +5667,7 @@ Works with:
@end menu
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Brace/Paren Line-Up, List Line-Up, Line-Up Functions, Line-Up Functions
-@comment node-name, next, previous, up
+@node Brace/Paren Line-Up
@subsection Brace and Parenthesis Line-Up Functions
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -5658,7 +5675,7 @@ The line-up functions here calculate the indentation for braces,
parentheses and statements within brace blocks.
@defun c-lineup-close-paren
-@findex lineup-close-paren (c-)
+@findex lineup-close-paren @r{(c-)}
Line up the closing paren under its corresponding open paren if the
open paren is followed by code. If the open paren ends its line, no
indentation is added. E.g.:
@@ -5694,7 +5711,7 @@ open parenthesis of the argument list, the indentation is
@anchor{c-lineup-arglist-close-under-paren}
@defun c-lineup-arglist-close-under-paren
-@findex lineup-arglist-close-under-paren (c-)
+@findex lineup-arglist-close-under-paren @r{(c-)}
Set your @code{arglist-close} syntactic symbol to this line-up function
so that parentheses that close argument lists will line up under the
parenthesis that opened the argument list. It can also be used with
@@ -5714,7 +5731,7 @@ discussion of this ``DWIM'' measure.
@comment ------------------------------------------------------------
@defun c-indent-one-line-block
-@findex indent-one-line-block (c-)
+@findex indent-one-line-block @r{(c-)}
Indent a one line block @code{c-basic-offset} extra. E.g.:
@example
@@ -5748,7 +5765,7 @@ which makes the function usable in list expressions.
@comment ------------------------------------------------------------
@defun c-indent-multi-line-block
-@findex indent-multi-line-block (c-)
+@findex indent-multi-line-block @r{(c-)}
Indent a multiline block @code{c-basic-offset} extra. E.g.:
@example
@@ -5784,7 +5801,7 @@ block, which makes the function usable in list expressions.
@comment ------------------------------------------------------------
@defun c-lineup-runin-statements
-@findex lineup-runin-statements (c-)
+@findex lineup-runin-statements @r{(c-)}
Line up statements for coding standards which place the first statement
in a block on the same line as the block opening brace@footnote{Run-in
style doesn't really work too well. You might need to write your own
@@ -5809,7 +5826,7 @@ expressions.
@comment ------------------------------------------------------------
@defun c-lineup-inexpr-block
-@findex lineup-inexpr-block (c-)
+@findex lineup-inexpr-block @r{(c-)}
This can be used with the in-expression block symbols to indent the
whole block to the column where the construct is started. E.g., for Java
anonymous classes, this lines up the class under the @samp{new} keyword,
@@ -5824,7 +5841,7 @@ construct.
@comment ------------------------------------------------------------
@defun c-lineup-after-whitesmith-blocks
-@findex lineup-after-whitesmith-blocks (c-)
+@findex lineup-after-whitesmith-blocks @r{(c-)}
Compensate for Whitesmith style indentation of blocks. Due to the way
@ccmode{} calculates anchor positions for normal lines inside blocks,
this function is necessary for those lines to get correct Whitesmith
@@ -5869,7 +5886,7 @@ indents relative to the surrounding block just like
@comment ------------------------------------------------------------
@defun c-lineup-whitesmith-in-block
-@findex lineup-whitesmith-in-block (c-)
+@findex lineup-whitesmith-in-block @r{(c-)}
Line up lines inside a block in Whitesmith style. It's done in a way
that works both when the opening brace hangs and when it doesn't. E.g.:
@@ -5906,8 +5923,7 @@ and @code{inextern-lang}.
@end defun
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node List Line-Up, Operator Line-Up, Brace/Paren Line-Up, Line-Up Functions
-@comment node-name, next, previous, up
+@node List Line-Up
@subsection List Line-Up Functions
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -5919,7 +5935,7 @@ for indenting a close parenthesis, is also useful for the lines
contained within parentheses.
@defun c-lineup-arglist
-@findex lineup-arglist (c-)
+@findex lineup-arglist @r{(c-)}
Line up the current argument line under the first argument.
As a special case, if an argument on the same line as the open
@@ -5947,7 +5963,7 @@ indent such cases this way.
@comment ------------------------------------------------------------
@defun c-lineup-arglist-intro-after-paren
-@findex lineup-arglist-intro-after-paren (c-)
+@findex lineup-arglist-intro-after-paren @r{(c-)}
Line up a line to just after the open paren of the surrounding paren or
brace block.
@@ -5958,8 +5974,127 @@ brace block.
@comment ------------------------------------------------------------
+@defun c-lineup-2nd-brace-entry-in-arglist
+@findex lineup-2nd-brace-entry-in-arglist (c-)
+Line up the second entry of a brace block under the first, when the
+first line is also contained in an arglist or an enclosing brace
+@emph{on that line}.
+
+I.e. handle something like the following:
+
+@example
+@group
+set_line (line_t @{point_t@{0.4, 0.2@},
+ point_t@{0.2, 0.5@}, @hereFn{brace-list-intro}
+ .....@});
+ ^ enclosing parenthesis.
+@end group
+@end example
+
+
+The middle line of that example will have a syntactic context with
+three syntactic symbols, @code{arglist-cont-nonempty},
+@code{brace-list-intro}, and @code{brace-list-entry} (@pxref{Brace
+List Symbols}).
+
+This function is intended for use in a list. If the construct being
+analyzed isn't like the preceding, the function returns nil.
+Otherwise it returns the function
+@code{c-lineup-arglist-intro-after-paren}, which the caller then uses
+to perform indentation.
+
+@workswith{} @code{brace-list-intro}.
+@end defun
+
+@comment ------------------------------------------------------------
+
+@defun c-lineup-class-decl-init-+
+@findex lineup-class-decl-init-+ (c-)
+Line up the second entry of a class (etc.) initializer
+@code{c-basic-offset} characters in from the identifier when:
+@enumerate
+@item
+The type is a class, struct, union, etc. (but not an enum);
+@item
+There is a brace block in the type declaration, specifying it; and
+@item
+The first element of the initializer is on the same line as its
+opening brace.
+@end enumerate
+
+I.e. we have a construct like this:
+
+@example
+@group
+struct STR @{
+ int i; float f;
+@} str_1 = @{1, 1.7@},
+ str_2 = @{2,
+ 3.1 @hereFn{brace-list-intro}
+ @};
+ @sssTBasicOffset{}
+@end group
+@end example
+
+
+Note that the syntactic context of the @code{brace-list-intro} line
+also has a syntactic element with the symbol @code{brace-list-entry}
+(@pxref{Brace List Symbols}).
+
+This function is intended for use in a list. If the above structure
+isn't present, the function returns nil, allowing a different offset
+specification to indent the line.
+
+@workswith{} @code{brace-list-intro}.
+@end defun
+
+@comment ------------------------------------------------------------
+
+@defun c-lineup-class-decl-init-after-brace
+@findex lineup-class-decl-init-after-brace (c-)
+Line up the second entry of a class (etc.) initializer after its
+opening brace when:
+@enumerate
+@item
+The type is a class, struct, union, etc. (but not an enum);
+@item
+There is a brace block in the type declaration, specifying it; and
+@item
+The first element of the initializer is on the same line as its
+opening brace.
+@end enumerate
+
+I.e. we have a construct like this:
+
+@example
+@group
+struct STR @{
+ int i; float f;
+@} str_1 = @{1, 1.7@},
+ str_2 = @{2,
+ 3.1 @hereFn{brace-list-intro}
+ @};
+@end group
+@end example
+
+
+Note that the syntactic context of the @code{brace-list-intro} line
+also has a syntactic element with the symbol @code{brace-list-entry}
+(@pxref{Brace List Symbols}). Also note that this function works by
+returning the symbol @code{c-lineup-arglist-intro-after-paren}, which
+the caller then uses to perform the indentation.
+
+This function is intended for use in a list. If the above structure
+isn't present, the function returns nil, allowing a different offset
+specification to indent the line.
+
+@workswith{} @code{brace-list-intro}.
+@end defun
+
+@comment ------------------------------------------------------------
+
@defun c-lineup-multi-inher
-@findex lineup-multi-inher (c-)
+@findex lineup-multi-inher @r{(c-)}
Line up the classes in C++ multiple inheritance clauses and member
initializers under each other. E.g.:
@@ -5999,7 +6134,7 @@ Foo::Foo (int a, int b)
@comment ------------------------------------------------------------
@defun c-lineup-java-inher
-@findex lineup-java-inher (c-)
+@findex lineup-java-inher @r{(c-)}
Line up Java implements and extends declarations. If class names
follow on the same line as the @samp{implements}/@samp{extends}
keyword, they are lined up under each other. Otherwise, they are
@@ -6032,7 +6167,7 @@ class Foo
@comment ------------------------------------------------------------
@defun c-lineup-java-throws
-@findex lineup-java-throws (c-)
+@findex lineup-java-throws @r{(c-)}
Line up Java throws declarations. If exception names follow on the
same line as the throws keyword, they are lined up under each other.
Otherwise, they are indented by adding @code{c-basic-offset} to the
@@ -6066,7 +6201,7 @@ int foo() throws Cyphr,
@comment ------------------------------------------------------------
@defun c-lineup-template-args
-@findex lineup-template-args (c-)
+@findex lineup-template-args @r{(c-)}
Line up the arguments of a template argument list under each other, but
only in the case where the first argument is on the same line as the
opening @samp{<}.
@@ -6080,7 +6215,7 @@ returned if there's no template argument on the first line.
@comment ------------------------------------------------------------
@defun c-lineup-ObjC-method-call
-@findex lineup-ObjC-method-call (c-)
+@findex lineup-ObjC-method-call @r{(c-)}
For Objective-C code, line up selector args as Emacs Lisp mode does
with function args: go to the position right after the message receiver,
and if you are at the end of the line, indent the current line
@@ -6094,7 +6229,7 @@ lineup the current line with it.
@comment ------------------------------------------------------------
@defun c-lineup-ObjC-method-args
-@findex lineup-ObjC-method-args (c-)
+@findex lineup-ObjC-method-args @r{(c-)}
For Objective-C code, line up the colons that separate args. The colon
on the current line is aligned with the one on the first line.
@@ -6104,7 +6239,7 @@ on the current line is aligned with the one on the first line.
@comment ------------------------------------------------------------
@defun c-lineup-ObjC-method-args-2
-@findex lineup-ObjC-method-args-2 (c-)
+@findex lineup-ObjC-method-args-2 @r{(c-)}
Similar to @code{c-lineup-ObjC-method-args} but lines up the colon on
the current line with the colon on the previous line.
@@ -6112,8 +6247,7 @@ the current line with the colon on the previous line.
@end defun
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Operator Line-Up, Comment Line-Up, List Line-Up, Line-Up Functions
-@comment node-name, next, previous, up
+@node Operator Line-Up
@subsection Operator Line-Up Functions
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -6122,7 +6256,7 @@ start with an operator, by lining it up with something on the previous
line.
@defun c-lineup-argcont
-@findex lineup-argcont (c-)
+@findex lineup-argcont @r{(c-)}
Line up a continued argument. E.g.:
@example
@@ -6144,8 +6278,34 @@ expressions for the operands.
@comment ------------------------------------------------------------
+@defun c-lineup-argcont-+
+@findex lineup-argcont-+ (c-)
+Indent a continued argument @code{c-basic-offset} spaces from the
+start of the first argument at the current level of nesting on a
+previous line.
+
+@example
+@group
+foo (xyz, uvw, aaa + bbb + ccc
+ + ddd + eee + fff); <- c-lineup-argcont-+
+ <--> c-basic-offset
+@end group
+@end example
+
+Only continuation lines like this are touched, @code{nil} being
+returned on lines which are the start of an argument.
+
+Within a gcc @code{asm} block, @code{:} is recognized as an argument
+separator, but of course only between operand specifications, not in the
+expressions for the operands.
+
+@workswith @code{arglist-cont}, @code{arglist-cont-nonempty}.
+@end defun
+
+@comment ------------------------------------------------------------
+
@defun c-lineup-arglist-operators
-@findex lineup-arglist-operators (c-)
+@findex lineup-arglist-operators @r{(c-)}
Line up lines starting with an infix operator under the open paren.
Return @code{nil} on lines that don't start with an operator, to leave
those cases to other line-up functions. Example:
@@ -6179,7 +6339,7 @@ suggestion to get a consistent style):
@comment ------------------------------------------------------------
@defun c-lineup-assignments
-@findex lineup-assignments (c-)
+@findex lineup-assignments @r{(c-)}
Line up the current line after the assignment operator on the first line
in the statement. If there isn't any, return @code{nil} to allow stacking with
other line-up functions. If the current line contains an assignment
@@ -6193,7 +6353,7 @@ operator too, try to align it with the first one.
@comment ------------------------------------------------------------
@defun c-lineup-math
-@findex lineup-math (c-)
+@findex lineup-math @r{(c-)}
Like @code{c-lineup-assignments} but indent with @code{c-basic-offset}
if no assignment operator was found on the first line. I.e., this
function is the same as specifying a list @code{(c-lineup-assignments
@@ -6205,8 +6365,28 @@ function is the same as specifying a list @code{(c-lineup-assignments
@comment ------------------------------------------------------------
+@defun c-lineup-ternary-bodies
+@findex lineup-ternary-bodies @r{(c-)}
+Line up true and false branches of a ternary operator
+(i.e. @code{?:}). More precisely, if the line starts with a colon
+which is a part of a said operator, align it with corresponding
+question mark. For example:
+
+@example
+@group
+return arg % 2 == 0 ? arg / 2
+ : (3 * arg + 1); @hereFn{c-lineup-ternary-bodies}
+@end group
+@end example
+
+@workswith @code{arglist-cont}, @code{arglist-cont-nonempty} and
+@code{statement-cont}.
+@end defun
+
+@comment ------------------------------------------------------------
+
@defun c-lineup-cascaded-calls
-@findex lineup-cascaded-calls (c-)
+@findex lineup-cascaded-calls @r{(c-)}
Line up ``cascaded calls'' under each other. If the line begins with
@code{->} or @code{.} and the preceding line ends with one or more
function calls preceded by the same token, then the arrow is lined up
@@ -6230,7 +6410,7 @@ expressions.
@comment ------------------------------------------------------------
@defun c-lineup-streamop
-@findex lineup-streamop (c-)
+@findex lineup-streamop @r{(c-)}
Line up C++ stream operators (i.e., @samp{<<} and @samp{>>}).
@workswith @code{stream-op}.
@@ -6239,7 +6419,7 @@ Line up C++ stream operators (i.e., @samp{<<} and @samp{>>}).
@comment ------------------------------------------------------------
@defun c-lineup-string-cont
-@findex lineup-string-cont (c-)
+@findex lineup-string-cont @r{(c-)}
Line up a continued string under the one it continues. A continued
string in this sense is where a string literal follows directly after
another one. E.g.:
@@ -6260,8 +6440,7 @@ lineup functions.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Comment Line-Up, Misc Line-Up, Operator Line-Up, Line-Up Functions
-@comment node-name, next, previous, up
+@node Comment Line-Up
@subsection Comment Line-Up Functions
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -6269,7 +6448,7 @@ The lineup functions here calculate the indentation for several types
of comment structure.
@defun c-lineup-C-comments
-@findex lineup-C-comments (c-)
+@findex lineup-C-comments @r{(c-)}
Line up C block comment continuation lines. Various heuristics are used
to handle most of the common comment styles. Some examples:
@@ -6321,13 +6500,13 @@ line inside a comment.
@comment ------------------------------------------------------------
@defun c-lineup-comment
-@findex lineup-comment (c-)
+@findex lineup-comment @r{(c-)}
Line up a comment-only line according to the style variable
@code{c-comment-only-line-offset}. If the comment is lined up with a
comment starter on the previous line, that alignment is preserved.
@defopt c-comment-only-line-offset
-@vindex comment-only-line-offset (c-)
+@vindex comment-only-line-offset @r{(c-)}
This style variable specifies the extra offset for the line. It can
contain an integer or a cons cell of the form
@@ -6348,7 +6527,7 @@ is equivalent to @code{(@r{@var{value}} . -1000)}.
@comment ------------------------------------------------------------
@defun c-lineup-knr-region-comment
-@findex lineup-knr-region-comment (c-)
+@findex lineup-knr-region-comment @r{(c-)}
Line up a comment in the ``K&R region'' with the declaration. That is
the region between the function or class header and the beginning of the
block. E.g.:
@@ -6370,8 +6549,7 @@ expressions.
@end defun
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Misc Line-Up, , Comment Line-Up, Line-Up Functions
-@comment node-name, next, previous, up
+@node Misc Line-Up
@subsection Miscellaneous Line-Up Functions
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -6379,7 +6557,7 @@ The line-up functions here are the odds and ends which didn't fit into
any earlier category.
@defun c-lineup-dont-change
-@findex lineup-dont-change (c-)
+@findex lineup-dont-change @r{(c-)}
This lineup function makes the line stay at whatever indentation it
already has; think of it as an identity function for lineups.
@@ -6400,7 +6578,7 @@ disregarded.
@comment ------------------------------------------------------------
@defun c-lineup-cpp-define
-@findex lineup-cpp-define (c-)
+@findex lineup-cpp-define @r{(c-)}
Line up macro continuation lines according to the indentation of the
construct preceding the macro. E.g.:
@@ -6489,7 +6667,7 @@ described above.
@comment ------------------------------------------------------------
@defun c-lineup-gcc-asm-reg
-@findex lineup-gcc-asm-reg (c-)
+@findex lineup-gcc-asm-reg @r{(c-)}
Line up a gcc asm register under one on a previous line.
@example
@@ -6521,7 +6699,7 @@ arglist lineups, e.g.:
@comment ------------------------------------------------------------
@defun c-lineup-topmost-intro-cont
-@findex lineup-topmost-intro-cont (c-)
+@findex lineup-topmost-intro-cont @r{(c-)}
Line up declaration continuation lines zero or one indentation
step@footnote{This function is mainly provided to mimic the behavior of
CC Mode 5.28 and earlier where this case wasn't handled consistently so
@@ -6572,8 +6750,7 @@ the_larch, @hereFn{c-lineup-topmost-intro-cont}
@end defun
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Custom Line-Up, Other Indentation, Line-Up Functions, Customizing Indentation
-@comment node-name, next, previous, up
+@node Custom Line-Up
@section Custom Line-Up Functions
@cindex customization, indentation functions
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -6631,9 +6808,9 @@ your setup for this by using the access functions
(@code{c-langelem-sym}, etc.)@: described below.
@vindex c-syntactic-element
-@vindex syntactic-element (c-)
+@vindex syntactic-element @r{(c-)}
@vindex c-syntactic-context
-@vindex syntactic-context (c-)
+@vindex syntactic-context @r{(c-)}
Some syntactic symbols, e.g., @code{arglist-cont-nonempty}, have more
info in the syntactic element: typically other positions that can be
interesting besides the anchor position. That info can't be accessed
@@ -6651,24 +6828,24 @@ used in the line-up function argument and the new list form used in
@code{c-syntactic-element} and everywhere else. The functions are:
@defun c-langelem-sym langelem
-@findex langelem-sym (c-)
+@findex langelem-sym @r{(c-)}
Return the syntactic symbol in @var{langelem}.
@end defun
@defun c-langelem-pos langelem
-@findex langelem-pos (c-)
+@findex langelem-pos @r{(c-)}
Return the anchor position in @var{langelem}, or @code{nil} if there is none.
@end defun
@defun c-langelem-col langelem &optional preserve-point
-@findex langelem-col (c-)
+@findex langelem-col @r{(c-)}
Return the column of the anchor position in @var{langelem}. Also move
the point to that position unless @var{preserve-point} is
non-@code{nil}.
@end defun
@defun c-langelem-2nd-pos langelem
-@findex langelem-2nd-pos (c-)
+@findex langelem-2nd-pos @r{(c-)}
Return the secondary position in @var{langelem}, or @code{nil} if there
is none.
@@ -6688,31 +6865,30 @@ any syntactic symbol that appears in @code{c-offsets-alist} can have a
custom line-up function associated with it.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Other Indentation, , Custom Line-Up, Customizing Indentation
-@comment node-name, next, previous, up
+@node Other Indentation
@section Other Special Indentations
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
To configure macros which you invoke without a terminating @samp{;},
-see @xref{Macros with ;}.
+@pxref{Macros with ;}.
Here are the remaining odds and ends regarding indentation:
@defopt c-label-minimum-indentation
-@vindex label-minimum-indentation (c-)
+@vindex label-minimum-indentation @r{(c-)}
In @samp{gnu} style (@pxref{Built-in Styles}), a minimum indentation is
imposed on lines inside code blocks. This minimum indentation is
controlled by this style variable. The default value is 1.
@findex c-gnu-impose-minimum
-@findex gnu-impose-minimum (c-)
+@findex gnu-impose-minimum @r{(c-)}
It's the function @code{c-gnu-impose-minimum} that enforces this minimum
indentation. It must be present on @code{c-special-indent-hook} to
work.
@end defopt
@defopt c-special-indent-hook
-@vindex special-indent-hook (c-)
+@vindex special-indent-hook @r{(c-)}
This style variable is a standard hook variable that is called after
every line is indented by @ccmode{}. It is called only if
@code{c-syntactic-indentation} is non-@code{nil} (which it is by
@@ -6740,8 +6916,7 @@ functions to this hook, not remove them. @xref{Style Variables}.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Custom Macros, Odds and Ends, Customizing Indentation, Top
-@comment node-name, next, previous, up
+@node Custom Macros
@chapter Customizing Macros
@cindex macros
@cindex preprocessor directives
@@ -6759,16 +6934,20 @@ each other as though they were code. You can suppress this behavior
by setting the following user option:
@defopt c-syntactic-indentation-in-macros
-@vindex syntactic-indentation-in-macros (c-)
+@vindex syntactic-indentation-in-macros @r{(c-)}
Enable syntactic analysis inside macros, which is the default. If this
is @code{nil}, all lines inside macro definitions are analyzed as
@code{cpp-macro-cont}.
@end defopt
+Sometimes you may want to indent particular directives
+(e.g. @code{#pragma}) as though they were statements. To do this, see
+@ref{Indenting Directives}.
+
Because a macro can expand into anything at all, near where one is
invoked @ccmode{} can only indent and fontify code heuristically.
Sometimes it gets it wrong. Usually you should try to design your
-macros so that they ''look like ordinary code'' when you invoke them.
+macros so that they ``look like ordinary code'' when you invoke them.
However, two situations are so common that @ccmode{} handles them
specially: that is when certain macros needn't (or mustn't) be
followed by a @samp{;}, and when certain macros (or compiler
@@ -6781,10 +6960,11 @@ Macros}.
* Macro Backslashes::
* Macros with ;::
* Noise Macros::
+* Indenting Directives::
@end menu
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Macro Backslashes, Macros with ;, Custom Macros, Custom Macros
+@node Macro Backslashes
@comment node-name, next, previous, up
@section Customizing Macro Backslashes
@cindex @code{#define}
@@ -6795,9 +6975,9 @@ backslashes in macros neat and tidy. Their precise action is
customized with these variables:
@defopt c-backslash-column
-@vindex backslash-column (c-)
+@vindex backslash-column @r{(c-)}
@defoptx c-backslash-max-column
-@vindex backslash-max-column (c-)
+@vindex backslash-max-column @r{(c-)}
These variables control the alignment columns for line continuation
backslashes in multiline macros. They are used by the functions that
automatically insert or align such backslashes,
@@ -6818,7 +6998,7 @@ the automatic alignment of backslashes, use
@end defopt
@defopt c-auto-align-backslashes
-@vindex auto-align-backslashes (c-)
+@vindex auto-align-backslashes @r{(c-)}
Align automatically inserted line continuation backslashes if
non-@code{nil}. When line continuation backslashes are inserted
automatically for line breaks in multiline macros, e.g., by
@@ -6832,7 +7012,7 @@ get aligned only when you explicitly invoke the command
@end defopt
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Macros with ;, Noise Macros, Macro Backslashes, Custom Macros
+@node Macros with ;
@comment node-name, next, previous, up
@section Macros with semicolons
@cindex macros with semicolons
@@ -6849,7 +7029,7 @@ You can prevent these by specifying which macros have semicolons. It
doesn't matter whether or not such a macro has a parameter list:
@defopt c-macro-names-with-semicolon
-@vindex macro-names-with-semicolon (c-)
+@vindex macro-names-with-semicolon @r{(c-)}
This buffer-local variable specifies which macros have semicolons.
After setting its value, you need to call
@code{c-make-macro-with-semi-re} for it to take effect. It should be
@@ -6881,7 +7061,7 @@ example:
@end defopt
@defun c-make-macro-with-semi-re
-@findex make-macro-with-semi-re (c-)
+@findex make-macro-with-semi-re @r{(c-)}
Call this (non-interactive) function, which sets internal variables,
each time you change the value of @code{c-macro-names-with-semicolon}
after the major mode function has run. It takes no arguments, and its
@@ -6890,8 +7070,7 @@ initialization code, after the mode hooks have run.
@end defun
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Noise Macros, , Macros with ;, Custom Macros
-@comment node-name, next, previous, up
+@node Noise Macros
@section Noise Macros
@cindex noise macros
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -6908,25 +7087,27 @@ can prevent this confusion by specifying the identifiers which
constitute noise macros.
@defopt c-noise-macro-names
-@vindex noise-macro-names (c-)
+@vindex noise-macro-names @r{(c-)}
This variable is a list of names of noise macros which never have
parenthesized arguments. Each element is a string, and must be a
-valid identifier. An element in @code{c-noise-macro-names} must not
-also be in @code{c-noise-macro-with-parens-names}. Such an element is
-treated as whitespace by @ccmode{}.
+valid identifier. Alternatively, the variable may be a regular
+expression which matches the names of such macros. Such a noise macro
+is treated as whitespace by @ccmode{}. It must not also be in, or be
+matched by @code{c-noise-macro-with-parens-names}.
@end defopt
@defopt c-noise-macro-with-parens-names
-@vindex noise-macro-with-parens-names (c-)
+@vindex noise-macro-with-parens-names @r{(c-)}
This variable is a list of names of noise macros which optionally have
arguments in parentheses. Each element of the list is a string, and
-must be a valid identifier. An element in
-@code{c-noise-macro-with-parens-names} must not also be in
-@code{c-noise-macro-names}. For performance reasons, such an element,
-together with the optional parenthesized arguments, is specially
-handled, but it is only handled when used in declaration
-contexts@footnote{If this restriction causes your project
-difficulties, please get in touch with @email{bug-cc-mode@@gnu.org}.}.
+must be a valid identifier. Alternatively, the variable may be a
+regular expression which matches the names of such macros. Such a
+noise macro must not also be in, or be matched by
+@code{c-noise-macro-names}. For performance reasons, such a noise
+macro, including any parenthesized arguments, is specially handled,
+but it is only handled when used in declaration contexts@footnote{If
+this restriction causes your project difficulties, please get in touch
+with @email{bug-cc-mode@@gnu.org}.}.
The two compiler directives @code{__attribute__} and @code{__declspec}
have traditionally been handled specially in @ccmode{}; for example
@@ -6936,7 +7117,7 @@ but doing so is OK.
@end defopt
@defun c-make-noise-macro-regexps
-@findex make-noise-macro-regexps (c-)
+@findex make-noise-macro-regexps @r{(c-)}
Call this (non-interactive) function, which sets internal variables,
on changing the value of @code{c-noise-macro-names} or
@code{c-noise-macro-with-parens-names} after the major mode's function
@@ -6945,15 +7126,55 @@ after the mode hooks have run.
@end defun
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Odds and Ends, Sample Init File, Custom Macros, Top
-@comment node-name, next, previous, up
+@node Indenting Directives
+@section Indenting Directives
+@cindex Indenting Directives
+@cindex Indenting #pragma
+@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Sometimes you may want to indent particular preprocessor directives
+(e.g. @code{#pragma}) as though they were statements. To do this,
+first set up @code{c-cpp-indent-to-body-directives} to include the
+directive name(s), then enable the ``indent to body'' feature with
+@code{c-toggle-cpp-indent-to-body}.
+
+@defopt c-cpp-indent-to-body-directives
+@vindex cpp-indent-to-body-directives (c-)
+This variable is a list of names of CPP directives (not including the
+introducing @samp{#}) which will be indented as though statements.
+Each element is a string, and must be a valid identifier. The default
+value is @code{("pragma")}.
+
+If you add more directives to this variable, or remove directives from
+it, whilst ``indent to body'' is active, you need to re-enable the
+feature by calling @code{c-toggle-cpp-indent-to-body} for these
+changes to take effect@footnote{Note that the removal of directives
+doesn't work satisfactorally on XEmacs or on very old versions of
+Emacs}.
+@end defopt
+
+@defun c-toggle-cpp-indent-to-body
+@findex toggle-cpp-indent-to-body (c-)
+With @kbd{M-x c-toggle-cpp-indent-to-body}, you enable or disable the
+``indent to body'' feature. When called programmatically, it takes an
+optional numerical argument. A positive value will enable the
+feature, a zero or negative value will disable it.
+
+You should set up @code{c-cpp-indent-to-body-directives} before
+calling this function, since the function sets internal state which
+depends on that variable.
+@end defun
+
+
+@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+@node Odds and Ends
@chapter Odds and Ends
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
The stuff that didn't fit in anywhere else is documented here.
@defopt c-require-final-newline
-@vindex require-final-newline (c-)
+@vindex require-final-newline @r{(c-)}
Controls whether a final newline is enforced when the file is saved.
The value is an association list that for each language mode specifies
the value to give to @code{require-final-newline} (@pxref{Saving
@@ -6967,7 +7188,7 @@ These are C, C++ and Objective-C.
@end defopt
@defopt c-echo-syntactic-information-p
-@vindex echo-syntactic-information-p (c-)
+@vindex echo-syntactic-information-p @r{(c-)}
If non-@code{nil}, the syntactic analysis for the current line is shown
in the echo area when it's indented (unless
@code{c-syntactic-indentation} is @code{nil}). That's useful when
@@ -6976,7 +7197,7 @@ want.
@end defopt
@defopt c-report-syntactic-errors
-@vindex report-syntactic-errors (c-)
+@vindex report-syntactic-errors @r{(c-)}
If non-@code{nil}, certain syntactic errors are reported with a ding and
a message, for example when an @code{else} is indented for which there
is no corresponding @code{if}.
@@ -6989,8 +7210,7 @@ anchoring position to indent the line in that case.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Sample Init File, Performance Issues, Odds and Ends, Top
-@comment node-name, next, previous, up
+@node Sample Init File
@appendix Sample Init File
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -7048,8 +7268,7 @@ to change some of the actual values.
@end verbatim
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Performance Issues, Limitations and Known Bugs, Sample Init File, Top
-@comment node-name, next, previous, up
+@node Performance Issues
@appendix Performance Issues
@cindex performance
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -7093,7 +7312,7 @@ except perhaps when you've just moved a long way inside the file.
@findex defun-prompt-regexp
@vindex c-Java-defun-prompt-regexp
-@vindex Java-defun-prompt-regexp (c-)
+@vindex Java-defun-prompt-regexp @r{(c-)}
A special note about @code{defun-prompt-regexp} in Java mode: The common
style is to hang the opening braces of functions and classes on the
right side of the line, and that doesn't work well with the Emacs
@@ -7119,7 +7338,7 @@ typically gives good performance even when the code doesn't fit the
Emacs approach to finding the defun starts.
@vindex c-enable-xemacs-performance-kludge-p
-@vindex enable-xemacs-performance-kludge-p (c-)
+@vindex enable-xemacs-performance-kludge-p @r{(c-)}
XEmacs users can set the variable
@code{c-enable-xemacs-performance-kludge-p} to non-@code{nil}. This
tells @ccmode{} to use XEmacs-specific built-in functions which, in some
@@ -7157,8 +7376,7 @@ more info.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Limitations and Known Bugs, FAQ, Performance Issues, Top
-@comment node-name, next, previous, up
+@node Limitations and Known Bugs
@appendix Limitations and Known Bugs
@cindex limitations
@cindex bugs
@@ -7223,8 +7441,7 @@ early on:
@end itemize
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node FAQ, Updating CC Mode, Limitations and Known Bugs, Top
-@comment node-name, next, previous, up
+@node FAQ
@appendix Frequently Asked Questions
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -7237,13 +7454,13 @@ Set the variable @code{c-basic-offset}. @xref{Getting Started}.
@item
@kindex RET
@kindex C-j
-@emph{Why does/doesn't the @kbd{RET} key indent the new line?}
+@emph{Why does/doesn't the @kbd{@key{RET}} key indent the new line?}
Emacs's convention used to be that @kbd{RET} just adds a newline, and that
@kbd{C-j} adds a newline and indents it. In Emacs-24.4, this convention was
reversed.
-If you use an older Emacs and you want @kbd{RET} do this
+If you use an older Emacs and you want @kbd{@key{RET}} do this
too, add this to your @code{c-initialization-hook}:
@example
@@ -7272,13 +7489,15 @@ could amend your C++ Mode hook like this:
@emph{How do I stop my C++ lambda expressions being indented way over
to the right?}
-Change the offset associated with @code{inlambda} from its default,
-the function @code{c-lineup-inexpr-block}, to 0. For example, if you
-are setting offsets in a hook function you might include the following
-line:
+This is now the default, so you don't need to do anything. To restore
+the previous default, indenting lambda expressions to the right of the
+constructs which introduce them, change the offset associated with
+@code{inlambda} from 0 to @code{c-lineup-inexpr-block}. For example,
+if you are setting offsets in a hook function you might include the
+following line:
@example
-(c-set-offset 'inlambda 0)
+(c-set-offset 'inlambda 'c-lineup-inexpr-block)
@end example
For details of the different ways you can make this setting,
@@ -7350,8 +7569,7 @@ there since it's got its own system to keep track of blocks.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Updating CC Mode, Mailing Lists and Bug Reports, FAQ, Top
-@comment node-name, next, previous, up
+@node Updating CC Mode
@appendix Getting the Latest CC Mode Release
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -7370,14 +7588,13 @@ compatibility, etc.@: are all available on the web site:
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Mailing Lists and Bug Reports, GNU Free Documentation License, Updating CC Mode, Top
-@comment node-name, next, previous, up
+@node Mailing Lists and Bug Reports
@appendix Mailing Lists and Submitting Bug Reports
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@kindex C-c C-b
@findex c-submit-bug-report
-@findex submit-bug-report (c-)
+@findex submit-bug-report @r{(c-)}
To report bugs, use the @kbd{C-c C-b} (bound to
@code{c-submit-bug-report}) command. This provides vital information
we need to reproduce your problem. Make sure you include a concise,
@@ -7414,15 +7631,14 @@ to the Usenet newsgroups @code{gnu.emacs.sources}, @code{comp.emacs},
@c There is no newsgroup for Pike. :-(
-@node GNU Free Documentation License, Command and Function Index, Mailing Lists and Bug Reports, Top
+@node GNU Free Documentation License
@appendix GNU Free Documentation License
@include doclicense.texi
@c Removed the tentative node "Mode Initialization" from here, 2005/8/27.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Command and Function Index, Variable Index, GNU Free Documentation License, Top
-@comment node-name, next, previous, up
+@node Command and Function Index
@unnumbered Command and Function Index
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -7436,8 +7652,7 @@ Since most @ccmode{} commands are prepended with the string
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Variable Index, Concept and Key Index, Command and Function Index, Top
-@comment node-name, next, previous, up
+@node Variable Index
@unnumbered Variable Index
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -7451,8 +7666,7 @@ Since most @ccmode{} variables are prepended with the string
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Concept and Key Index, , Variable Index, Top
-@comment node-name, next, previous, up
+@node Concept and Key Index
@unnumbered Concept and Key Index
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!