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’.  SeeGetting 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)
 
      SeeGetting 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’.  SeeGetting
      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-\’.  SeeIndentation 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’.  SeeIndentation
      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’ (SeeCC 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).  See(emacs)Left Margin Paren, for details (*NoteDONTPRINTYET       languages).  See(emacs)Left Margin Paren, for details (See
      (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’.