Frequently Asked Questions
**************************
*Q.* *How do I re-indent the whole file?*
*A.* Visit the file and hit `C-x h' to mark the whole buffer. Then
hit `ESC C-\'.
*Q.* *How do I re-indent the entire function? `ESC C-x' doesn't
work.*
*A.* `ESC C-x' is reserved for future Emacs use. To re-indent the
entire function hit `C-c C-q'.
*Q.* *How do I re-indent the current block?*
*A.* First move to the brace which opens the block with `ESC C-u',
then re-indent that expression with `ESC C-q'.
*Q.* *Why doesn't the `RET' key indent the new line?*
*A.* Emacs' convention is that `RET' just adds a newline, and that
`C-j' adds a newline and indents it. You can make `RET' do this
too by adding this to your `c-mode-common-hook':
(define-key c-mode-base-map "\C-m" 'newline-and-indent)
This is a very common question. If you want this to be the default
behavior, don't lobby me, lobby RMS! :-)
*Q.* *I put `(c-set-offset 'substatement-open 0)' in my `.emacs'
file but I get an error saying that `c-set-offset''s function
definition is void.*
*A.* This means that CC Mode wasn't loaded into your Emacs session
by the time the `c-set-offset' call was reached, mostly likely
because CC Mode is being autoloaded. Instead of putting the
`c-set-offset' line in your top-level `.emacs' file, put it in
your `c-mode-common-hook', or simply add the following to the top
of your `.emacs' file:
(require 'cc-mode)
*Q.* *I put `(setq c-basic-offset 4)' in my `.emacs' file, but
code still gets indented to 2 spaces.*
*A.* This setting is getting captured in the `user' style, but the
`gnu' style is the default. You should also add a setting of
`c-default-style' to your `.emacs' file, like so:
(setq c-default-style '((other . "user")))
(setq c-basic-offset 4)
*Q.* *My style settings works in all the CC Mode language modes
except for Java, where I still get e.g. 4 column indentation.*
*A.* Java mode switches to the `java' style by default for
historical reasons. You can override it by putting an association
list on `c-default-style':
(setq c-default-style '((other . "my-style")))
The `other' symbol says that CC Mode should use "my-style" in all
modes not explicitly listed. Since there's nothing else on the
list this causes "my-style" to be used in every mode.
*Q.* *How do I make strings, comments, keywords, and other
constructs appear in different colors, or in bold face, etc.?*
*A.* "Syntax Colorization" is a standard Emacs feature, controlled
by `font-lock-mode'. CC Mode does not contain font-lock
definitions for any of its supported languages.
*Q.* *`M-a' and `M-e' used to move over entire balanced brace
lists, but now they move into blocks. How do I get the old
behavior back?*
*A.* Use `C-M-f' and `C-M-b' to move over balanced brace blocks.
Use `M-a' and `M-e' to move by statements, which will also move
into blocks.
*Q.* *Whenever I try to indent a line or type an "electric" key
such as `;', `{', or `}', I get an error that look like this:
`Invalid function: (macro . #[...'. What gives?*
*A.* This is a common error when CC Mode hasn't been compiled
correctly, especially under Emacs 19.34(1). If you are using the
standalone CC Mode distribution, try recompiling it according to
the instructions in the `README' file.
---------- Footnotes ----------
(1) Technically, it's because some macros 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 macros
as functions, it shows this (somewhat cryptic) error message.