ccmode: FAQ
Appendix D Frequently Asked Questions
*************************************
• _How can I change the indent level from 4 spaces to 2 spaces?_
Set the variable ‘c-basic-offset’. Getting Started.
• _Why does/doesn’t the ‘RET’ key indent the new line?_
Emacs’s convention used to be that ‘RET’ just adds a newline, and
that ‘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 ‘RET’ do this too, add this
to your ‘c-initialization-hook’:
(define-key c-mode-base-map "\C-m" 'c-context-line-break)
Getting Started. This was a very common question.
• _How do I stop my code jumping all over the place when I type?_
Deactivate “electric minor mode” with ‘C-c C-l’. Getting
Started.
• _How do I reindent the whole file?_
Visit the file and hit ‘C-x h’ to mark the whole buffer. Then hit
‘C-M-\’. Indentation Commands.
• _How do I reindent the current block?_
First move to the brace which opens the block with ‘C-M-u’, then
reindent that expression with ‘C-M-q’. Indentation
Commands.
• _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. What’s wrong?_
This means that CC Mode hasn’t yet been loaded into your Emacs
session by the time the ‘c-set-offset’ call is reached, most 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-initialization-hook’ (CC Hooks), or simply modify
‘c-offsets-alist’ directly:
(setq c-offsets-alist '((substatement-open . 0)))
• _I have an open paren character at column zero inside a comment or
multiline string literal, and it causes the fontification and/or
indentation to go haywire. What gives?_
It’s due to the ad-hoc rule in (X)Emacs that such open parens
always start defuns (which translates to functions, classes,
namespaces or any other top-level block constructs in the CC Mode
DONTPRINTYET languages). (emacs)Left Margin Paren, for details (*NoteDONTPRINTYET languages). (emacs)Left Margin Paren, for details (
(emacs)Defuns, in the Emacs 20 manual).
This heuristic is built into the core syntax analysis routines in
(X)Emacs, so it’s not really a CC Mode issue. However, in Emacs
21.1 it became possible to turn it off(1) and CC Mode does so there
since it’s got its own system to keep track of blocks.
---------- Footnotes ----------
(1) Using the variable ‘open-paren-in-column-0-is-defun-start’.