閑古鳥 -> 呟き -> emacs で PHP-mode と mmm-mode を使う
PHP のスクリプトを書く時にあると便利な emacs 用の PHP-mode のインストール方法と、ついでに html-mode 等との同一バッファ内での同居をさせるための mmm-mode のインストール方法。覚え書き。
emacs や php を使用していない方などには無益な情報。そうでない人にも簡単なことしか書いてないのでそう役にも立たないでしょうが、日本語の解説ページがひとつもなかったので、まぁ、ないよりはいいかと。
PHP-modeのインストールは簡単。まず、Project: PHP mode for Emacs: Summaryから最新の php-mode-*.el をダウンロードします。 * の部分はバージョン。
次にダウンロードしたファイルを site-lisp ディレクトリにコピーします。例えば /usr/local/share/emacs/21.2/site-lisp/ など…人(というか emacs のバージョン)によって違うでしょうからそのへんは適宜変えてください。そして、コピーした *.el ファイルをバイトコンパイルします。
M-x : byte-compile-file
と打ち、コピーしたファイルを指定する。あとは .emacs あるいは .emacs.el に設定を書き加えて読み込めば、 php-mode を使用することができるようになります。
;;php-mode
(load-library "php-mode-102")
(require 'php-mode)
コメントアウトされた部分(行頭にセミコロンがあるもの)は当然不要です。2行目の load-library に指定されている部分はバージョンによって変えてください。
mmm-mode は、ひとつのバッファで2つのメジャーモードを使用するためのモード。要はひとつのバッファで html-mode と php-mode を一緒に使えるぞ、というようなもの。細かい説明ができないので簡略に。……。
まずProject: MMM Mode: Summaryから最新の mmm-mode-*.tar.gz を適当なディレクトリにダウンロードします。 * の部分はやはりバージョン。
解凍して、make して、 install します。下記のような感じ。
$ tar xzvf mmm-mode-0.4.7.tar.gz
$ ./configure
$ make
$ su
# make install
最後の make install かます時はたぶんスーパユーザになる必要がある。あとは .emacs あるいは .emacs.el に設定を書き加えれば、動くはず。
; mmm-mode in php
(require 'mmm-mode)
(setq mmm-global-mode 'maybe)
(mmm-add-mode-ext-class nil "\\.php?\\'" 'html-php)
(mmm-add-classes
'((html-php
:submode php-mode
:front "<\\?\\(php\\)?"
:back "\\?>")))
(add-to-list 'auto-mode-alist '("\\.php?\\'" . xml-mode))
php ファイルを読みこんだ時、デフォルトでは xml-mode で処理をしますが、 php のソース部分 <? と ?> で挟まれた部分だけは、 php-mode で処理をする、という感じ(多分……まぁ違っても困ることはないのでいいか←適当)。
ここで、 html の部分を xml-mode 以外の mode で処理したい場合、上のコードの最後にある 「xml-mode」 の部分を使用したい mode に書き変えてください。