manpagez: man pages & more
info emacs
Home | html | info | man
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

31.11.4 Other Commands for C Mode

C-c C-w
M-x c-subword-mode

Enable (or disable) subword mode. In subword mode, Emacs's word commands recognize upper case letters in ‘StudlyCapsIdentifiers’ as word boundaries. This is indicated by the flag ‘/w’ on the mode line after the mode name (e.g. ‘C/law’). You can even use M-x c-subword-mode in non-CC Mode buffers.

In the GNU project, we recommend using underscores to separate words within an identifier in C or C++, rather than using case distinctions.

M-x c-context-line-break

This command inserts a line break and indents the new line in a manner appropriate to the context. In normal code, it does the work of C-j (newline-and-indent), in a C preprocessor line it additionally inserts a ‘\’ at the line break, and within comments it's like M-j (c-indent-new-comment-line).

c-context-line-break isn't bound to a key by default, but it needs a binding to be useful. The following code will bind it to C-j. We use c-initialization-hook here to make sure the keymap is loaded before we try to change it.

(defun my-bind-clb ()
  (define-key c-mode-base-map "\C-j" 'c-context-line-break))
(add-hook 'c-initialization-hook 'my-bind-clb)

Put mark at the end of a function definition, and put point at the beginning (c-mark-function).


Fill a paragraph, handling C and C++ comments (c-fill-paragraph). If any part of the current line is a comment or within a comment, this command fills the comment or the paragraph of it that point is in, preserving the comment indentation and comment delimiters.

C-c C-e

Run the C preprocessor on the text in the region, and show the result, which includes the expansion of all the macro calls (c-macro-expand). The buffer text before the region is also included in preprocessing, for the sake of macros defined there, but the output from this part isn't shown.

When you are debugging C code that uses macros, sometimes it is hard to figure out precisely how the macros expand. With this command, you don't have to figure it out; you can see the expansions.

C-c C-\

Insert or align ‘\’ characters at the ends of the lines of the region (c-backslash-region). This is useful after writing or editing a C macro definition.

If a line already ends in ‘\’, this command adjusts the amount of whitespace before it. Otherwise, it inserts a new ‘\’. However, the last line in the region is treated specially; no ‘\’ is inserted on that line, and any ‘\’ there is deleted.

M-x cpp-highlight-buffer

Highlight parts of the text according to its preprocessor conditionals. This command displays another buffer named ‘*CPP Edit*’, which serves as a graphic menu for selecting how to display particular kinds of conditionals and their contents. After changing various settings, click on ‘[A]pply these settings’ (or go to that buffer and type a) to rehighlight the C mode buffer accordingly.

C-c C-s

Display the syntactic information about the current source line (c-show-syntactic-information). This information directs how the line is indented.

M-x cwarn-mode
M-x global-cwarn-mode

CWarn minor mode highlights certain suspicious C and C++ constructions:

  • Assignments inside expressions.
  • Semicolon following immediately after ‘if’, ‘for’, and ‘while’ (except after a ‘do … while’ statement);
  • C++ functions with reference parameters.

You can enable the mode for one buffer with the command M-x cwarn-mode, or for all suitable buffers with the command M-x global-cwarn-mode or by customizing the variable global-cwarn-mode. You must also enable Font Lock mode to make it work.

M-x hide-ifdef-mode

Hide-ifdef minor mode hides selected code within ‘#if’ and ‘#ifdef’ preprocessor blocks. See the documentation string of hide-ifdef-mode for more information.

M-x ff-find-related-file

Find a file “related” in a special way to the file visited by the current buffer. Typically this will be the header file corresponding to a C/C++ source file, or vice versa. The variable ff-related-file-alist specifies how to compute related file names.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]
© 2000-2024
Individual documents may contain additional copyright information.