[Top] [Contents] [Index] [ ? ]

Footnotes

(1)

A C-like scripting language with its roots in the LPC language used in some MUD engines. See http://pike.ida.liu.se/.

(2)

Unless otherwise noted, the term "C code" refers to all the C-like languages.

(3)

The line numbers in this and future examples don't actually appear in the buffer, of course!

(4)

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.

(5)

A substatement is the line after a conditional statement, such as if, else, while, do, switch, etc. A substatement block is a brace block following one of these conditional statements.

(6)

The `C' would be replaced with the name of the language in question for the other languages CC Mode supports.

(7)

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.

(8)

The braces of anonymous classes produce a combination of inexpr-class, and class-open or class-close in normal indentation analysis.

(9)

Brace lists inside statements, such as initializers for static array variables inside functions in C, are recognized as statement-cont. All normal substatement blocks are recognized with other symbols.

(10)

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.

(11)

comment-start, comment-end, comment-start-skip, paragraph-start, paragraph-separate, paragraph-ignore-fill-prefix, adaptive-fill-mode, adaptive-fill-regexp, and adaptive-fill-first-line-regexp.

(12)

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.

(13)

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.

(14)

Actually, this default setting of c-block-comment-prefix typically gets overriden by the default style gnu, which sets it to blank. You can see the line splitting effect described here by setting a different style, e.g. k&r See section 9.4.2 Choosing a Style.

(15)

This means that the variables c-hanging-comment-starter-p and c-hanging-comment-ender-p, which controlled this behavior in earlier versions of CC Mode, are now obsolete.

(16)

Available in Emacs 20 and later, and XEmacs 19.15 and later.

(17)

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 returns nil instead of zero to be more usable in lists. You should therefore leave c-strict-syntax-p set to nil.

(18)

You can try this interactively in a C buffer by typing the text that appears in italics.

(19)

In this and subsequent examples, the original code is formatted using the `gnu' style unless otherwise indicated. See section 9.4 Styles.

(20)

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 variable c-old-style-variable-behavior to non-nil.

(21)

This did not change in version 5.26.

(22)

This document is available at http://www.doc.ic.ac.uk/lab/cplus/c++.rules/ among other places.

(23)

Python is a high level scripting language with a C/C++ foreign function interface. For more information, see http://www.python.org/.

(24)

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.

(25)

In certain circumstances, this value can get overridden by another value.

(26)

It probably makes more sense to add this to c++-mode-hook than c-mode-common-hook since stream operators are only relevant for C++.

(27)

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 the keyword class is meaningless in C and Objective-C.

(28)

These should logically be named extern-open, extern-close and inextern, but that isn't the case for historical reasons.

(29)

This is how CC Mode 5.28 and earlier analyzed macros.

(30)

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.

(31)

a.k.a. K&R C, or Kernighan & Ritchie C

(32)

Run-in style doesn't really work too well. You might need to write your own custom indentation functions to better support this style.

(33)

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 + instead.

(34)

Specifically, the syntax-table text property.

(35)

E.g. a function in C, or outermost class definition in C++ or Java.

(36)

This has been observed in Emacs 19.34 and XEmacs 19.15.

(37)

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.

(38)

Using the variable open-paren-in-column-0-is-defun-start.


This document was generated by XEmacs shared group account on December, 19 2009 using texi2html 1.65.