Go to the first, previous, next, last section, table of contents.

コメントの操作

コメント操作コマンドは,コメントの挿入,削除,桁揃えをします.

M-;
コメントの挿入,整列をします(indent-for-comment).
C-x ;
コメント桁をセットします(set-comment-column).
C-u - C-x ;
現在の行にあるコメントを削除します(kill-comment).
M-LFD
RETの後ろにコメントの挿入と整列をします (indent-new-comment-line).

コメントを作るコマンドはMeta-; (indent-for-comment)です. その行にコメントがないなら,新しいコメントが作られ,コメント桁と呼ばれる 特定の桁にそろえます.コメントは,Emacsでコメントの始まりと設定された文 字列(comment-startの値,下を参照)を挿入して作られます.ポイントは, その文字列の後ろにあります.行のテキストがコメント桁を過ぎているときは, 適切な位置まで字下げします(通常では,少なくとも1つの空白が挿入されます). 主モードによってコメントを終了する文字列が指定されている場合は,ポイント のあとにそれが挿入され,構文を正しく保ちます.

Meta-;は存在しているコメントを整列するのにも使われます.コメント を始める文字列がすでに行にあるなら,M-;はポイントをその後ろに移動 させ,適切な位置に字下げをやり直します.例外として0桁で始まるコメントは 動きません.

また,モードによって,特定の文脈でのある種のコメントの字下げには特別な ルールが使われます.たとえばLispコードでは2つのセミコロンで始まるコメン トは,コメント桁に字下げされる代わりに,これらのコメントがコードの行であ るかのように字下げされます.3つのセミコロンで始まるコメントは,左端に置 かれます.Emacsではこれらの規定により,2つのセミコロンで始まるコメントは TABで字下げし,3つのセミコロンで始まるコメントの字下げは全く変えま せん.

;; This function is just an example
;;; Here either two or three semicolons are appropriate.
(defun foo (x)
;;; And now, the first part of the function:
  ;; The following line adds one.
  (1+ x))           ; This line adds one.

Cのコードでは,その行のコメントの前が空白だけの場合,そのコメントはコー ドの行と同様に字下げされます.

存在しているコメントが揃っている場合でも,M-;はコメントの始めま で直接移動するのに役立ちます.

C-u - C-x ; (kill-comment)は,現在の行にコメントがある場 合,それを削除します.コメントの始めより前の字下げも同時に削除されます. 行にコメントがないなら何も起きません.コメントを他の行に再挿入するときは, 行の終りまで移動して,C-yを行ない,それからコメントを揃えるために M-;を行ないます.C-u - C-x ;は1つのキーではなく,負の引数を 伴ったC-x ; (set-comment-column)であることに注意してくださ い.このコマンドは,負の引数があるときはkill-commentを呼び出すよ うに設定されています.kill-commentは,必要ならば直接キーに割り当 てられるコマンドです.

数行にわたったコメント

コメントを入力していて,それを次の行に続けたいときは,コマンド Meta-LFD (indent-new-comment-line)を使います.このコ マンドは,入力しているコメントを終了させ,そのあとに新しい空白行を作り, 新しいコメントを始めて前のコメントの下に字下げします.Auto Fillモードで コメントを入力している間に詰め込み桁を過ぎると,このようにしてコメントが 続けられます.M-LFDを入力したとき,ポイントが行の終りになけ れば,その行の残りの部分のテキストは,新しいコメント行に移されます.

コメントを制御するオプション

コメント桁は変数comment-columnにあります.この変数には,陽に数 を設定できます.またはコマンドC-x ;(set-comment-column)によっ て,コメント桁をポイントのある桁に設定することができます.C-u C-x ;は,コメント桁をポイントより前の最後のコメントの始まりの桁にセットしま す.このあとMeta-;を使えば現在の行のコメントは前のコメントに並びま す.C-u - C-x ;は,前に書いたようにkill-comment関数を実行し ます.

comment-columnはバッファごとの変数です.この変数の値を変えると それはカレントバッファにだけ作用します.しかしこれにはデフォルト値があっ て,これも変更することができます.See section ローカル変数.多くの主モードでカレント バッファのこの変数を初期化します.

コメントのコマンドは変数comment-start-skipの正規表現に基づいて コメントを認識します.この正規表現は空文字列にマッチしてはなりません.厳 密な意味でのコメントの始まる区切り以上にマッチしてもかまいません.たとえ ば,Cモードでは変数の値は"/\\*+ *"`/*'の後ろに続く余分 なアスタリスクや空白にもマッチします.(Lispの構文では,文字列に`\' を置くのに`\\'が必要です.また,最初のアスタリスクの特別な意味を取 り消すのに`\'が必要です.See section 正規表現の構文.)

コメントのコマンドが新たにコメントを作るときはcomment-startの値 を挿入します.comment-endの値はコメントとして挿入するテキストに続 くようポイントの後ろに挿入します.Cモードではcomment-start"/* "comment-end" */です.

comment-multi-lineはコマンドM-LFD (indent-new-comment-line)がコメント内で使われた場合の機能を制御し ます.普通はcomment-multi-linenilで,このときは最初の行 のコメントは終了し,次の行に新しいコメントが始まります. comment-multi-linenilでないときは,次の行は最初の行のコ メントの一部となります.この場合,最初の行にはコメントの終りは挿入されず, 新しい行にはコメントをはじめる文字列は挿入されません.コメントを何行にわ たって書いても良い言語では,この変数の選択は好みの問題です.

変数comment-indent-hookには,新たに挿入されたコメントや,すでに あるコメントの整列のための字下げの計算をする関数がなければなりません.こ れはいろいろな主モードにより別個に設定されます.この関数は引数なしで呼び 出されますが,ポイントはコメントの最初か,または新しいコメントを挿入する ときには行の最後に置かれています.この関数はコメントの始まるべき桁を返さ なければなりません.たとえば,Lispモードでのこの字下げフックの関数は,コ メントの最初のセミコロンの数や,専攻する行のコードの内容などに基づいて計 算します.


Go to the first, previous, next, last section, table of contents.