Previous: Multi-Line Comments, Up: Comments


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

コメント桁位置は、変数comment-columnに入っています。 この変数には明示的に値を設定できます。 あるいは、コマンド C-x ;set-comment-column)を使って、 ポイント位置の桁をコメント桁位置として設定できます。 C-u C-x ;は、バッファ内で現在行よりまえにある最後のコメントの桁位置を コメント桁位置としてから、 M-;を行って現在行のコメントをまえのコメントの直下にくるように 位置を揃えます。 C-u - C-x ;は、前述のように 関数kill-commentを実行することに注意してください。

変数comment-columnは、バッファごとの変数です。 つまり、通常の方法で設定すると、カレントバッファだけに影響しますが、 setq-defaultでデフォルト値を変更できます。 See Locals。 多くのメジャーモードでは、この変数をカレントバッファ用に初期化します。

コメント用コマンドは、変数comment-start-skipの正規表現に基づいて コメントを認識します。 この正規表現が空文字列には一致しないようにしてください。 厳密にはコメント開始文字列よりも長く一致するかもしれません。 たとえば、Cモードではこの変数の値は"/\\*+ *"ですが、 これは ‘/*’のうしろの余分なアスタリスクと空白に一致します。 (Lispの構文では、文字列中に‘\’を含めるために‘\\’とする必要がある。 この‘\’は、最初のアスタリスクの正規表現における特別な 意味を抑制するために必要。 see Regexps。)

コメント用コマンドで新たなコメントを作ると、 コメントを始めるためにcomment-startの値を挿入します。 また、ポイントの直後にはcomment-endの値が挿入されて、 これから入力するテキストのあとに続くことになります。 Cモードでは、comment-startの値は"/* "comment-endの値は" */"です。

変数comment-multi-lineは、 C-M-jindent-new-comment-line)が コメントの内側で使われたときの動作を制御します。 comment-multi-linenil(通常の設定)ならば、 現在行のコメントを終了し、新たなコメントをつぎの行から始めます。 comment-multi-linenil以外ならば、 現在行と同じコメントが継続されます。 つまり、現在行のコメントを終えず、新たな行にも開始文字列を挿入しません。 複数行にわたるコメントを許す言語では、 この変数に設定する値は好みの問題です。

変数comment-indent-functionには、 新たに挿入したコメントの字下げや 既存のコメントに桁を揃えるための字下げを計算する関数を 設定する必要があります。 この変数には、メジャーモードごとに異なった関数が設定されます。 この関数は引数なしで呼ばれますが、 コメントがあるときにはその開始位置にポイントを置いて、 新規コメントの挿入時には行末にポイントを置いて呼ばれます。 戻り値は、コメントを始めるべき桁位置です。 たとえば、Lispモードでは、この字下げ用フック関数は、 既存のコメントのセミコロンの個数と まえの行のコードに基づいて計算を行います。