emacsのphp-modeを入れてみた

phpの開発はローカルにサーバ(実機でもVMでも)立てて、Sambaでつないでxyzzyでコード書く、というのが染みついてるんだけど、もっとリモートの開発環境を整えたい。まだvimemacsをちょこちょこ触って、どっちにいこうかなぁというところです。

emacs は以前、自宅のMacでリモート接続すると日本語が化けるという問題が解決できなかったんだけど、いつの間にか直ってた。本物ではないけど、 μemacs@X68kemacs風にカスタマイズした秀丸@Win → xyzzy@Win と15年ぐらいやってるので、キーバインドはやはりemacs系が馴染む。

vimは特に何も追加しなくてもいろいろ入ってるっぽいのと、 Linux使うならvi系は覚えておきたいという気持ちがある。操作も多少は慣れてきたけど、設定ファイルぐらいならまだしもコード書くところまではなかなか。カーソル移動とかウィンドウ操作系で、気が付けばemacsの入力をしていることも多々。

しばらくは両方触っていこうということで、まずはemacsphp-modeを試してみました。yumで入れたら付いてたんだけど、どうやらこいつはバージョンが古いらしく、関数補完ができない今ひとつイケてないバージョン。 sourceforgeから拾ってきて、/usr/share/emacs/site-lisp/ に突っ込んでbyte-compile。.emacsにはこんな感じの設定を追加。

(require 'php-mode)
(setq php-mode-force-pear t)
(add-hook 'php-mode-user-hook
          '(lambda ()
             (setq tab-width 4)
             (setq c-basic-offset 4)
             (setq indent-tabs-mode nil)
             (define-key php-mode-map "\C-l" 'php-complete-function)
             (define-key php-mode-map "\C-m" 'newline-and-indent)
             (setq php-manual-path "/usr/share/doc/php/html")
             (setq php-manual-url "http://www.phppro.jp/phpmanual")))

\C -lに関数補完を当ててるのは、とりあえず試すのに適当に割り当てただけ。ただ、この補完がやたら遅い。例えば、htmlspecialcharsと書こうと思って「html」で補完すると3秒ぐらい待ってようやくリストが出てくる。んで、「htmlsp」まで入れてもう一度補完すると、ここでまた3秒。待ち時間だけで6秒も取られてしまう。これでは流石に仕事になりません。いちいちマニュアルからキーワードを引っ張ってるのが遅い原因なんだろうけど、何か回避策は無いのかな? 後は、phpの構文はハイライトしてくれるけど、関数はハイライトしてくれないのも落ち着かない。
emacs+php-mode な人達がこの状態で開発しているとは思えないし思いたくないので、もっとサクサク補完する方法がありそうなんだけど、ググっても見当たらない。いくらなんでも本当にこれしかなかったらローカルのxyzzyで書いてrsyncした方が幸せになれそうです。

xyzzyだと補完はキーワードファイルを読み込んでやるからサクサク動くし、Windowsとよろしくやってくれるおかげでエディタの中にブラウザを開いて、そこでカーソル位置の関数のマニュアルを読むとかできて便利です。コンソールのemacsの中でブラウザは開けないにしても、補完は何とかやってくれんもんかな。

次はvimphp補完も試してみよっと。

# 2007/06/23(Sat) 追記
# 続報書きました。ハードの性能重要らしい。