emacsでPHPの構文チェック
http://www.blik.it/2007/02/21/syntax-checking-for-php-in-emacs/
を参考にして、emacs21でPHP用のflymakeを使用できるように設定してみた。
1.flymakeのインストール
http://cvs.savannah.gnu.org/viewvc/emacs/emacs/lisp/progmodes/flymake.el
からflymake.elをダウンロードしてきて、
~/.emacs.d/flymake.el
に保存。
エラーがでるので、下記の行をコメントアウト。理由は良く分からない。
(flymake-reformat-err-line-patterns-from-compile-el compilation-error-regexp-alist-alist)
2.~/.emacs.d/flymake-php.elを作成
;; Flymake PHP Extension
(require 'flymake)
(defconst flymake-allowed-php-file-name-masks '(
(".php3'" flymake-php-init)
(".inc'" flymake-php-init)
(".php'" flymake-php-init))
"Filename extensions that switch on flymake-php mode syntax checks")(defconst flymake-php-err-line-pattern-re '("(Parse|Fatal) error: (.*) in (.*) on line ([0-9]+)" 3 4 nil 2)
"Regexp matching PHP error messages")(defun flymake-php-init ()
(let* *1
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "php" (list "-f" local-file "-l"))))(defun flymake-php-load ()
(setq flymake-allowed-file-name-masks (append flymake-allowed-file-name-masks flymake-allowed-php-file-name-masks))
(setq flymake-err-line-patterns (cons flymake-php-err-line-pattern-re flymake-err-line-patterns))
(flymake-mode t)
;;(local-set-key "C-cd" 'flymake-display-err-menu-for-current-line)
)(provide 'flymake-php)
Shift-Cが入力できなくなるので、下記行をコメントアウト。理由は良く分からない。
(local-set-key "C-cd" 'flymake-display-err-menu-for-current-line)
3.~/.emacsに追記
(add-to-list 'load-path "~/.emacs.d/")
(require 'flymake-php)
(add-hook 'php-mode-user-hook 'flymake-php-load)
php-modeが必要。
*1:temp-file (flymake-init-create-temp-buffer-copy 'flymake-create-temp-inplace