Flymake for Erlang

Emacs での開発の際には、Flymake を使うと超便利だヨ!
リアルタイム (on the fly) で Syntax Check してくれるヨ!
と素敵なお話を伺ったので、設定してみました。

文法ミスをするとこんな感じで教えてくれます。

薄い灰色が警告、濃い灰色がエラーです。(ちょっと分かりにくいかしら。。。)

あら、素敵!

設定の手順をまとめてみました。

環境

GNU Emacs 22.2.1
Emacs 22 以降はデフォルトで flymake は入っています。
ver 2.X の Meadow では flymake が入っていません。
ver 3.X に移行するか、flymake.pl を落としましょう。

スクリプト

下記のスクリプト (escript) を作成し、適当なディレクトリに置いて下さい。
実行権限の付与をお忘れなく。

#!/usr/bin/env escript
-export([main/1]).

main([File_Name]) ->
    compile:file(File_Name, [warn_obsolete_guard, warn_unused_import, 
                             warn_shadow_vars, warn_export_vars,
  			     strong_validation, report,
  			     {i, "../include"}]).
]

.emacs の設定

;; set up elrang-flymake
(require 'flymake)
(defun flymake-erlang-init ()
  (let* ((temp-file (flymake-init-create-temp-buffer-copy
		     'flymake-create-temp-inplace))
	 (local-file (file-relative-name temp-file
		(file-name-directory buffer-file-name))))
    (list "<上記の Script の場所を指定してください>" (list local-file))))
(add-to-list 'flymake-allowed-file-name-masks '("\\.erl\\'" flymake-erlang-init))

;; Erlang mode の際に、flymake-mode を有効にし、C-cd で現在行のエラーメニューを表示する。
(add-hook 
 'erlang-mode-hook
 '(lambda () 
    (flymake-mode t)
    (define-key erlang-mode-map "\C-cd" 'flymake-display-err-menu-for-current-line)))

;; エラー/警告の際の色を変更
(custom-set-faces
  '(flymake-errline ((((class color)) (:background "Gray30"))))
  '(flymake-warnline ((((class color)) (:background "Gray20")))))

ハイライトされた行で、C-c d と押すとエラー、警告内容を表示してくれます。