Emacs でのコンパイルに未対応のコンパイラーへの対処法

Emacs 上で行うコンパイルや grep はエラー箇所にジャンプができて、とても便利です。
しかし、コンパイラーのエラーメッセージが日本語化していたり、 フォーマットが違ったりするとエラー行として認識できなくて使えないということがあります。 こういった場合の対処方法について書いてみました。

これができるようになるとコンパイルや 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 を押すと定義位置に移動することもできます。
関連記事
スポンサーサイト



Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
31位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
5位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

08月 | 2023年09月 | 10月
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。