通常のEmacsのコメントコマンドは、コード行の後にコメントを記述できると仮定します。Fortran 77では、標準のコメント構文はコメント行に行全体を要求します。したがってFortranモードは、標準のEmacsコメントコマンドを置き換え、新しい変数も定義します。
Fortranモードは、‘!’で始まり、他のテキストの後に記述することができる、Fortran
90のコメント構文も処理できます。この構文を許すFortran
77コンパイラーは限られているので、Fortranモードは、あらかじめそれを行うように指示しない限り、そのようなコメントを挿入しません。これを行うには、変数fortran-comment-line-start
に‘"!"’をセットします。通常とは異なる値を使う場合、fortran-comment-line-start-skip
も変更する必要があるでしょう。
コメントの位置揃え、または新しいコメントを挿入します(comment-dwim
)。
非標準の‘!’だけを適用します(comment-set-column
)。
リージョンのすべての行をコメントにします。または(引数を指定した場合は)コメントを実際のコードに戻します(fortran-comment-region
)。
Fortranモードで実行すると、これは標準のcomment-dwim
を実行します。これは任意の種類の既存のコメントを認識して、それらのテキストの位置揃えをします。既存のコメントがない場合は、コメントの挿入・位置揃えをします。Fortranモードでのコメントの挿入および位置揃えは、他のモードとは異なります。
新しいコメントが挿入されなければならない場合、カレント行が空のときは、行全体をコメントとして挿入します。その行が空でない場合、もしそれを使うことを指示していれば、非標準の‘!’コメントが挿入されます。そうでない場合はカレント行の前に新しい行を挿入して、その行全体をコメントにします。
非標準の‘!’コメントは、他の言語のコメントと同じように位置揃えされますが、行全体のコメントは異なります。標準の行全体のコメントは、コメント区切り自体は常に列0に出現しなければなりません。位置揃えできるのは、コメントの中のテキストです。変数fortran-comment-indent-style
に、以下の3つの値のうち1つをセットすることにより、3つのスタイルの位置揃えを選択できます。
fixed
テキストを固定列に位置揃えします。これはfortran-comment-line-extra-indent
と命令文の最小のインデントとの和です。これがデフォルトです。
最小のインデントは、タブ形式の継続行スタイルの場合はfortran-minimum-statement-indent-tab
で、固定形式スタイルの場合はfortran-minimum-statement-indent-fixed
です。
relative
そのテキストがコード行であるかのように位置揃えしますが、fortran-comment-line-extra-indent
に指定した列のインデントが追加されます。
nil
行全体のコメントを自動的に移動しません。
これらに加えて、変数fortran-comment-indent-char
に、使用したい1文字をセットすることにより、行全体のコメントのインデントに使用する文字を指定することができます
コンパイラーにたいする命令行や、プリプロセッサー行は、コメント行と同じ外観をもっています。しかし、fortran-comment-indent-style
の値に関わらず、そのような行が決してインデントされないことが重要です。変数fortran-directive-re
は、どのような行がそのような命令なのかを指定する正規表現です。これにマッチする行はインデントされず、特別な外観のフォントが適用されます。
Emacsの通常のコメントコマンドC-x ;
(comment-set-column
)は再定義されません。‘!’コメントを使用している場合、このコマンドをそれらに使用できます。そうでない場合、これはFortranモードでは役に立ちません。
コマンドC-c ;
(fortran-comment-region
)は、リージョンのすべての行の行頭に文字列‘c$$$’を挿入することにより、これらをコメントにします。数引数を指定した場合、各行の行頭から‘c$$$’を削除することにより、リージョンをコードに戻します。これらのコメントに使用する文字列は、変数fortran-comment-region
をセットすることにより制御できます。これはコマンドと変数が同じ名前をもつ例であることに注意してください。同じ名前を2つの用途で使用することによる衝突はありません。なぜならLispおよびEmacsではそれが意味するものは、コンテキストにより明らかだからです。