|[Top]||[Contents]||[Index]||[ ? ]|
A C-like scripting language with its roots in the LPC language used in some MUD engines. See http://pike.ida.liu.se/.
Unless otherwise noted, the term "C code" refers to all the C-like languages.
The line numbers in this and future examples don't actually appear in the buffer, of course!
With a universal argument (i.e. C-u C-c C-s) the analysis is inserted into the buffer as a comment on the current line.
A substatement is the line after a
conditional statement, such as
switch, etc. A substatement
block is a brace block following one of these conditional statements.
The `C' would be replaced with the name of the language in question for the other languages CC Mode supports.
A literal is defined as any comment, string, or preprocessor macro definition. These constructs are also known as syntactic whitespace since they are usually ignored when scanning C code.
braces of anonymous classes produce a combination of
normal indentation analysis.
inside statements, such as initializers for static array variables
inside functions in C, are recognized as
normal substatement blocks are recognized with other symbols.
Certain C++ constructs introduce
ambiguous situations, so
scope-operator clean-ups may not always
be correct. This usually only occurs when scoped identifiers appear in
switch label tags.
It's available from
http://www.wonderworks.com/. As of version 2.12, it does however
lack a feature that makes it work suboptimally when
c-comment-prefix-regexp matches the empty string (which it does
by default). A patch for that is available from
the CC Mode web site.
In versions before 5.26, this variable was called
c-comment-continuation-stars. As a compatibility measure,
CC Mode still uses the value on that variable if it's set.
Actually, this default setting of
c-block-comment-prefix typically gets overriden by the default
gnu, which sets it to blank. You can see the line
splitting effect described here by setting a different style,
k&r See section 9.4.2 Choosing a Style.
This means that the variables
which controlled this behavior in earlier versions of CC Mode, are now
Available in Emacs 20 and later, and XEmacs 19.15 and later.
There is however a variable
c-strict-syntax-p that, when set to non-
nil, will cause an
error to be signalled in that case. It's now considered obsolete since
it doesn't work well with some of the alignment functions that now
nil instead of zero to be more usable in lists. You
should therefore leave
c-strict-syntax-p set to
You can try this interactively in a C buffer by typing the text that appears in italics.
In this and subsequent examples, the original code is formatted using the `gnu' style unless otherwise indicated. See section 9.4 Styles.
This is a big change from versions of CC Mode
earlier than 5.26, where such settings would get overridden by the style
system unless special precautions were taken. That was changed since it
was counterintuitive and confusing, especially to novice users. If your
configuration depends on the old overriding behavior, you can set the
c-old-style-variable-behavior to non-
This did not change in version 5.26.
This document is available at http://www.doc.ic.ac.uk/lab/cplus/c++.rules/ among other places.
Python is a high level scripting language with a C/C++ foreign function interface. For more information, see http://www.python.org/.
This table is stored internally in the variable c-fallback-style. It is computed during the initialisation of CC Mode from the factory defaults of the style variables and any global values they may have been given since starting Emacs.
In certain circumstances, this value can get overridden by another value.
It probably makes more
sense to add this to
since stream operators are only relevant for C++.
This is the case even
for C and Objective-C. For consistency, structs in all supported
languages are syntactically equivalent to classes. Note however that
class is meaningless in C and Objective-C.
These should logically be
that isn't the case for historical reasons.
This is how CC Mode 5.28 and earlier analyzed macros.
You might wonder why it doesn't get
inlambda too. It's because the closing brace is relative to the
opening brace, which stands on its own line in this example. If the
opening brace was hanging on the previous line, then the closing brace
would get the
inlambda syntax too to be indented correctly.
a.k.a. K&R C, or Kernighan & Ritchie C
Run-in style doesn't really work too well. You might need to write your own custom indentation functions to better support this style.
This function is mainly provided to mimic the behavior of
CC Mode 5.28 and earlier where this case wasn't handled consistently so
that those lines could be analyzed as either topmost-intro-cont or
statement-cont. It's used for
topmost-intro-cont by default, but
you might consider using
E.g. a function in C, or outermost class definition in C++ or Java.
This has been observed in Emacs 19.34 and XEmacs 19.15.
Technically, it's because some macro wasn't defined during the compilation, so the byte compiler put in function calls instead of the macro expansions. Later, when the interpreter tries to call the macro as a function, it shows this (somewhat cryptic) error message.
Using the variable