|
|
|
|
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 then 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.
- 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)
- C-M-h
- Put mark at the end of a function definition, and put point at the
beginning (
c-mark-function ).
- M-q
- 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.
|
|
|