Emacs でのコンパイルに未対応のコンパイラーへの対処法
しかし、コンパイラーのエラーメッセージが日本語化していたり、 フォーマットが違ったりするとエラー行として認識できなくて使えないということがあります。 こういった場合の対処方法について書いてみました。
これができるようになるとコンパイルや grep だけでなく、 単体テスト(XUnit)のような好きなコマンドでジャンプ機能を使えるようにもなります。
対応コンパイラーを増やすためには compilation-error-regexp-alist というリストに判定のための正規表現を追加します。
grep の場合は grep-regexp-alist です。
追加は次のようなコードを .emacs.el に記述します。
(require 'compile) (setq compilation-error-regexp-alist (append '( ;; エラー E2451 foo.cpp 1058: ("^\\(エラー\\|警告\\) \\([A-Z0-9_]+\\) \\([^ ]+\\) \\([0-9]+\\):" 3 4 1) ;; "bar.c", 34 行目: 警告 ("^\"\\(.*\\)\", \\([0-9]+\\) 行目: \\(エラー\\|警告\\)" 1 2 3) ;; 1> foo_bar.c:101 : ("^[0-9]+> +\\([^,\" \n\t]+\\):\\([0-9]+\\)" 1 2) ) compilation-error-regexp-alist))追加しているのは次のような形式のリストです。
(正規表現 ファイルパス 行番号 キーワード)正規表現は文字列で指定し、それ以降はマッチするカッコの番号を指定します。
ファイルと行番号はジャンプに必須のものですが、 キーワードは Error や Warning のような文字のハイライト用なので、なくても構いません。
もっと例を見たい場合には次のようにして変数を確認してみてください。
C-h v compilation-error-regexp-alist RETまた、表示された *Help* バッファの `compile' 上で Retrun を押すと定義位置に移動することもできます。
- 関連記事
-
- eshell (Emacs のシェルモード)
- eshell (Emacs のシェルモード) その2
- Emacs でのコンパイルに未対応のコンパイラーへの対処法
- Emacs から TFS を使う tfs.el
- CoffeeScript 用 Emacs モード
Facebook コメント
コメント