GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Other-C-Commands.html ・ emacs-doc.conao3.com

28.12.4 Cモードのその他のコマンド

M-x c-context-line-break

このコマンドは、文脈に応じて改行を挿入し、新しい行をインデントします。通常のコードでは RET (newline) と同様の動作をし、Cプリプロセッサの行ではさらに改行位置に ‘\’ を挿入し、コメント内では M-j (c-indent-new-comment-line) と同様の動作をします。

c-context-line-break はデフォルトではキーにバインドされていませんが、利用するにはバインドが必要です。以下のコードでは、これを RET にバインドします。ここでは、キーマップを変更する前に確実に読み込まれるよう、c-initialization-hook を使用しています。

(defun my-bind-clb ()
  (keymap-set c-mode-base-map "RET"
              'c-context-line-break))
(add-hook 'c-initialization-hook 'my-bind-clb)
C-M-h

関数定義の末尾にマークを付け、先頭にポイントを置きます (c-mark-function)。

M-q

CおよびC++のコメント(c-fill-paragraph)を処理しながら、段落を埋めます。現在の行の一部がコメントであるか、またはコメント内である場合、このコマンドはコメント、あるいはそのコメントが位置する段落を埋め、コメントのインデントとコメント区切り文字を保持します。

C-c C-e

リージョン内のテキストに対してCプリプロセッサを実行し、すべてのマクロ呼び出しの展開結果(c-macro-expand)を含む結果を表示します。リージョン前のバッファテキストも、そこで定義されたマクロのためにプリプロセスの対象となりますが、この部分の出力は表示されません。

マクロを使用したCコードをデバッグする際、マクロが具体的にどのように展開されるのかを把握するのが難しいことがあります。このコマンドを使えば、わざわざ調べる必要はなく、展開結果を確認できます。

C-c C-\

領域 (c-backslash-region) の各行の末尾に '\' 文字を挿入または揃えます。これは、Cマクロの定義を記述または編集した後に便利です。

行がすでに ‘\’ で終わっている場合、このコマンドはその前の空白量を調整します。そうでない場合は、新たに ‘\’ を挿入します。ただし、リージョン内の最終行は特別に扱われ、その行には ‘\’ は挿入されず、存在する ‘\’ は削除されます。

M-x cpp-highlight-buffer

プリプロセッサの条件式に応じて、テキストの一部をハイライト表示します。このコマンドを実行すると、*CPP Edit* という名前の別のバッファが表示されます。これは、特定の種類の条件式とその内容をどのように表示するかを選択するためのグラフィカルメニューとして機能します。各種設定を変更した後、‘[A]pply these settings’ をクリックする(またはそのバッファに移動して a と入力する)ことで、Cモードバッファをそれに応じて再ハイライト表示できます。

C-c C-s

現在のソース行(c-show-syntactic-information)に関する構文情報を表示します。この情報によって、その行のインデント方法が決まります。

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

CWarnのマイナーモードでは、特定の不審なCおよびC++の記述がハイライトされます:

  • 式内の代入。
  • ‘if’、‘for’、および‘while’(‘do … while’文の後を除く)の直後に続くセミコロン;
  • 参照パラメータを持つC++関数。

コマンド M-x cwarn-mode で1つのバッファに対して、またはコマンド M-x global-cwarn-mode や変数 global-cwarn-mode のカスタマイズによって、該当するすべてのバッファに対してこのモードを有効にできます。また、動作させるには Font Lock モードを有効にする必要があります。

M-x hide-ifdef-mode

Hide-ifdef マイナーモードは、選択したコードを ‘#if’ および ‘#ifdef’ のプリプロセッサブロック内に隠します。変数 hide-ifdef-shadow を t に変更すると、Hide-ifdef マイナーモードはプリプロセッサブロックを完全に隠すのではなく、目立たないフォントで表示することでそれらを覆い隠します。詳細については、hide-ifdef-mode のドキュメント文字列を参照してください。

M-x ff-find-related-file

現在のバッファで参照されているファイルに特別な形で関連付けられたファイルを探します。通常、これはC/C++ソースファイルに対応するヘッダーファイル、またはその逆となります。変数 ff-related-file-alist は、関連ファイルの名前を算出する方法を指定します。