Next: Compilation Shell, Previous: Compilation, Up: Building [Contents][Index]
*compilation*バッファーは、Compilationモードと呼ばれるメジャーモードを使用します。Compilationモードは、バッファーのエラーメッセージをハイパーリンクに変換します。ポイントをそこに移動してRETをタイプするか、マウスでクリック(Mouse Referencesを参照してください)すると、別のウィンドウでエラーメッセージのlocusをvisitします。locusとは、エラーが発生したファイルの特定の位置を意味します。
変数compilation-auto-jump-to-first-error
を非nil
値に変更した場合、Emacsは、*compilation*バッファーに表れる最初のエラーメッセージのlocusを自動的にvisitします。
Compilationモードは、以下の追加のコマンドを提供します。これらのコマンドは*grep*バッファーでも使用できます。このバッファーではエラーメッセージのかわりに、検索にたいするマッチにハイパーリンクが設定されます(Grep Searchingを参照してください)。
次のエラーメッセージ(またはマッチ)のlocusをvisitします(next-error
)。
前のエラーメッセージ(またはマッチ)のlocusをvisitします(previous-error
)。
locusをvisitせずに、ポイントを次のエラーメッセージ(またはマッチ)に移動します(compilation-next-error
)。
locusをvisitせずに、ポイントを前のエラーメッセージ(またはマッチ)に移動します(compilation-previous-error
)。
他のファイルで発生した次のエラーメッセージ(またはマッチ)にポイントを移動します(compilation-next-file
)。
他のファイルで発生した前のエラーメッセージ(またはマッチ)にポイントを移動します(compilation-previous-file
)。
Next Error Followマイナーモードに切り替えます。これはcompilationバッファーでのカーソル移動にしたがって、ソースを自動的に表示するモードです。
順番にエラーをvisitするには、C-x ` (next-error
)とタイプするか、これと等価なM-g
M-nまたはM-g
nとタイプします。このコマンドはCompilationモードのバッファーだけでなく、任意のバッファーから呼び出すことができます。コンパイル後に最初に呼び出すときは、最初のエラーメッセージのlocusをvisitします。連続したC-x `は、同じ方法で次のエラーをvisitします。*compilation*バッファーからRETまたはマウスクリックで特定のエラーをvisitした場合、C-x `はそのエラーの次のエラーからvisitしていきます。これ以上visitするエラーメッセージがない場合、C-x `はエラーをシグナルします。C-u C-x `はcompilationバッファーの先頭から再開して、最初のlocusをvisitします。
M-g M-pまたはM-g p (previous-error
)は、反対方向にエラーを巡回します。
コマンドnext-error
およびprevious-error
は、バッファー*compilation*または*grep*にリストされたエラー(またはマッチ)だけに作用されるわけではありません。これらのコマンドはM-x
occur (Other Repeating Searchを参照してください)のようなコマンドで生成されたエラー(またはマッチ)を巡回する方法も知っています。すでにエラーメッセージ(またはマッチ)を含むバッファーにいる場合、それらは巡回できるものの1つです。そうでない場合、Emacsは選択されたフレームのウィンドウの中でエラーメッセージ(またはマッチ)を含むバッファー、そしてnext-error
またはprevious-error
が前に巡回したバッファー、そして最後はすべての他のバッファーの中からバッファーを探します。巡回するために選択されたバッファーが現在ウィンドウに表示されていなければ、そのバッファーが表示されます。
デフォルトでは、コマンドnext-error
およびprevious-error
は、重要でないメッセージはスキップします。変数compilation-skip-threshold
が、これを制御します。デフォルト値は1で、これは警告(warning)より重要でないメッセージをスキップします。2の場合、エラー(error)より重要でないものをスキップし、0はメッセージをスキップしません。
Emacsがエラーメッセージのlocusをvisitしているとき、関連するソース行が一時的にハイライトされます。このハイライトの持続時間は、変数next-error-highlight
により決定されます。
*compilation*バッファーが左フリンジ(Fringesを参照してください)のあるウィンドウで表示されている場合、locusをvisitするコマンドはカレントエラーメッセージを指す矢印をフリンジに配します。テキスト端末のように、左フリンジがないウィンドウの場合、これらのコマンドは、カレントメッセージがウィンドウの一番上にくるようにウィンドウをスクロールします。変数compilation-context-lines
を整数値nに変更した場合、これらのコマンドは、フリンジの有無に関わらずメッセージがウィンドウの上からn行目にくるようにウィンドウをスクロールします。デフォルト値のnil
では上述したように振る舞います。
コンパイラーからのメッセージを解析するために、Compilationモードは変数compilation-error-regexp-alist
を使用します。これはさまざまなエラーメッセージのフォーマットをリストし、それらからlocusを抽出する方法をEmacsに指示します。同じような変数grep-regexp-alist
は、grep
コマンド(Grep Searchingを参照してください)の出力を解析する方法を指示します。
Compilationモードは、スクリーン単位でスクロールを行うために、キーSPCおよびDELも定義します。M-n
(compilation-next-error
)およびM-p
(compilation-previous-error
)は、次または前のエラーメッセージに移動します。M-{
(compilation-next-file
)およびM-}
(compilation-previous-file
)は、違うソースファイルの、次または前のエラーメッセージに移動します。
C-c C-fとタイプして、Next Error Followモードに切り替えることができます。このマイナーモードでは、compilationバッファーでの通常のカーソル移動により、自動的にソースを表示するバッファーが更新されます。たとえばカーソルをエラーメッセージに移動すると、そのエラーにたいするlocusが表示されます。
Compilationモードの機能は、Compilation Minorモード呼ばれるマイナーモードでも利用可能です。これは通常のコンパイル出力のバッファーだけでなく、任意のバッファーのエラーメッセージを解析します。M-x compilation-minor-modeとタイプすることにより、このマイナーモードが有効になります。たとえばRloginバッファー(Remote Hostを参照してください)では、Compilation minorモードはリモートのソースファイルに、FTPを通じて自動的にアクセスします(File Namesを参照してください)。