Emacs使いなら普通に使ってるよね、ってな素晴らしいEmacs Lispの一つにFlymakeというのがあります。これは名前の通り、Emacsでファイル編集中にon the flyにmake(設定次第で何でも)してくれるEmacs Lispです。makeしてエラーが出た場合には、エラー箇所をハイライトしてくれます。typo などがあれば瞬時に気づくことができますので、開発効率がアップします。

青くハイライトされているのがwarning、赤はエラーの意味です。
PHPもJavaScriptも他の方が設定を公開されていますけど、社内で設定を紹介したところ、「Warningに別の色が付いたりしないんですね」などと言われたので、ムキになってWarningにも色を付けてみました。そんなわけで、他の方の設定とはひと味違うと思います。実はPHPに関して言うと滅多にWarningが出ないので、便利になったかどうかは疑問ですが…。
JavaScriptについてはJavaScript Lintが素晴らしいですね。macportsならport install javascript-lintでインストールできます。「JavaScript Lint - あどけない話」に書いてある通りなのですが、これもWarningに別の色が付くように頑張ってみました。
.emacsに書く設定内容は下記の通りです。下記でも動作はしますがblogシステムの都合で少し冗長なので、実際に利用される場合はdot-emacs.txtからコピペする方が良いかもしれません。
;; flymake (Emacs22から標準添付されている) (when (require (quote flymake) nil t) (global-set-key "\C-cd" (quote flymake-display-err-menu-for-current-line)) ;; PHP用設定 (when (not (fboundp (quote flymake-php-init))) ;; flymake-php-initが未定義のバージョンだったら、自分で定義する (defun flymake-php-init () (let* ((temp-file (flymake-init-create-temp-buffer-copy (quote flymake-create-temp-inplace))) (local-file (file-relative-name temp-file (file-name-directory buffer-file-name)))) (list "php" (list "-f" local-file "-l")))) (setq flymake-allowed-file-name-masks (append flymake-allowed-file-name-masks (quote (("\.php[345]?$" flymake-php-init))))) (setq flymake-err-line-patterns (cons (quote ("\(\(?:Parse error\|Fatal error\|Warning\): .*\) in \(.*\) on line \([0-9]+\)" 2 3 nil 1)) flymake-err-line-patterns))) ;; JavaScript用設定 (when (not (fboundp (quote flymake-javascript-init))) ;; flymake-javascript-initが未定義のバージョンだったら、自分で定義する (defun flymake-javascript-init () (let* ((temp-file (flymake-init-create-temp-buffer-copy (quote flymake-create-temp-inplace))) (local-file (file-relative-name temp-file (file-name-directory buffer-file-name)))) ;;(list "js" (list "-s" local-file)) (list "jsl" (list "-process" local-file)) )) (setq flymake-allowed-file-name-masks (append flymake-allowed-file-name-masks (quote (("\.json$" flymake-javascript-init) ("\.js$" flymake-javascript-init))))) (setq flymake-err-line-patterns (cons (quote ("\(.+\)(\([0-9]+\)): \(?:lint \)?\(\(?:warning\|SyntaxError\):.+\)" 1 2 nil 3)) flymake-err-line-patterns))) (add-hook (quote php-mode-hook) (quote (lambda() (flymake-mode t)))) (add-hook (quote javascript-mode-hook) (quote (lambda() (flymake-mode t)))))
私は他にもYAMLのチェックをsyckでやっていたりもするのですが、これはイマイチなのでオススメしません。もっと良い方法があればいいんですが…。
参考リンク
- EmacsWiki: Fly Make
- Flymake を使って編集中にシンタックスエラーを検出する - ありえるえりあ Javaでの例。画面キャプチャがあるので、参考にしてください。
- EmacsでPerl開発する上で必須な設定 #2 - flymake - antipop Perlでの例。各所の工夫を色々取り込んでいるようです。
- [プログラミング]flymakeでPHPのリアルタイム文法チェック PHPでの例。他の人の設定とは違うよ、なんて書きましたけど、この正規表現ならWarningに青色がつくと思います。

コメント / トラックバックはありません
コメントする