最近仕事でphpを使っていて、とりあえず emacsで php-mode で書いているのだけれど、php-completion.elと言うものを知ったので使えるようにしてみた。
まずは、ページの指定通り install-elisp を入れる。通常の手順だと ~/.emacs.d/ を使うらしいけど、システム全体で使いたいので /usr/local/share/emacs/site-lisp/ に入れた。
# cd /usr/local/share/emacs/site-lisp
# fetch http://www.emacswiki.org/cgi-bin/wiki/download/install-elisp.el
まあ、普段使わないからこれはバイトコンパイルしなくても良いか。
そして、rootでemacsを起動して、*scratch* バッファで以下のそれぞれの行で C-j。
(require 'install-elisp)
(setq install-elisp-repository-directory "/usr/local/share/emacs/site-lisp/")
# ~root/.emacs に書いても良いんだけど。
後は、手順に書いてある通り
M-x install-elisp-from-emacswiki anything.el -> C-c C-c
M-x install-elisp-from-emacswiki anything-match-plugin.el -> C-c C-c
M-x install-elisp-from-emacswiki auto-complete.el -> C-c C-c
M-x install-elisp-from-emacswiki php-completion.el -> C-c C-c
(M-x install-elisp-from-emacswikiで一度Enterを押す)
他のanything.el を説明しているサイトとかだと、anything-config.el も入れているので一応それも入れておく。
~/.emacsに以下を追記
(require 'php-mode)
(add-hook 'php-mode-hook
          '(lambda ()
             (require 'php-completion)
             (php-completion-mode t)
             (define-key php-mode-map (kbd "C-o") 'phpcmp-complete)
             (when (require 'auto-complete nil t)
             (make-variable-buffer-local 'ac-sources)
             (add-to-list 'ac-sources 'ac-source-php-completion)
             (auto-complete-mode t))
             (setq c-basic-offset 4)
             (setq indent-tabs-mode nil)))
これで、emacsでphpのファイルを開くと VisualStudioみたいに候補を表示してくれる。
C-o で候補選択中にTABを押してSearchを選ぶとマニュアルが見られるのだが、デフォルトだと browse-urlが呼ばれてしまう。私はX上ではなくputty等の端末上で使っていることが多いので、emacs上のwebブラウザが使いたい。
昔はemacs-w3mを使っていたよな~と思って調べてみたら、最後の安定版リリースは2005年3月。
試しに入れてみたらemacs23では動かないとエラーになってしまう。
もちょっと調べてみると、CVSの開発版を取ると emacs23で動くらしいので、CVSから取ってきて入れてみたら無事に動いた。
# この手順、最初はLinuxでやって後からFreeBSDで試してるんだけど、FreeBSDの場合は /usr/ports/www/emacs-w3m が emacs23用の emacs-w3mになっているようなのでportsから入れれば良さそうだ。(と思ったら、依存関係が要求するw3m-m17nと元から入っていたja-w3m-img が喧嘩している感じかも・・・)
emacs-w3mを使うためには~/.emacsに以下を追加。
(setq browse-url-browser-function 'w3m-browse-url)
これでだいぶ快適になったんだけど、PHPの標準の関数以外は同じファイル内でしか補完してくれない。
php-completionのページにはETAGSとかGNU Globalに対応していると書いてあったので、etagsコマンドでTAGSファイルを作ってみたけどうまくいかず。
ソースを読んでもちょっとわからなかったので、ETAGSよりも高機能そうなGNU Globalをインストール。FreeBSDの場合は portsから devel/global でいける。
ソースツリーのトップで
% gtags -v
とかやったらいくつかファイルができて、その状態だと php-completion がファイルを超えて補完してくれるようになった。
手で gtags を毎回やるのは嫌なので、.emacsに
(setq phpcmp-global-enable-auto-update-tag-files t)
とか足してみたけど効果があるだろうか?

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: php-completion.el

このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/2435

コメントする

このブログ記事について

このページは、falseが2010年8月30日 17:47に書いたブログ記事です。

ひとつ前のブログ記事は「ゲーム用PCその2」です。

次のブログ記事は「無線LAN」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

Powered by Movable Type 6.1.1