emacsでのPHP開発についてgoogleではかなり情報が少なくて苦戦したのでメモ。

sudo apt-get install php-elisp

何よりPHPの関数補完が気になってたんですが、

php-mode-not-yet.png

not implemented yetかよ。

$ apt-cache show php-elisp
Package: php-elisp
Priority: optional
Section: text
Installed-Size: 144
Maintainer: Pontus Ullgren <pontus@ullgren.com>
Architecture: all
Version: 1.1.0-2
Depends: emacs21 | xemacs21 | emacsen
Suggests: php4 | php3
Filename: pool/main/p/php-elisp/php-elisp_1.1.0-2_all.deb
Size: 17644
MD5sum: 5f8372578d2bb63e5ad16b61310ddc3a
Description: Emacs support for php files
 Emacs major mode for php supporting syntax highlighting, indentation
 and good integration with html-statements.

sargeのphp-mode(php-elisp)はVersion1.1.0らしいので、SourceForgeで最新版を見に行ってみると1.2.0が出てました。しかもRelease Notesが、

Changes: Implemented php-show-arglist, C-. (Engelke Eschner) Implemented php-complete-function, M-tab (Engelke Eschner) Re-enabled # comment detection in GNU Emacs (Urban M?ller) Fixed some keybindings and default settings (Engelke Eschner)

ちょうどこのバージョンから関数補完ができるようになっているようです。 /usr/local/share/emacs/site-lisp/php-mode-120.elとして置いてM-x byte-compile-file。 PHPのHTMLマニュアルを取ってきて/usr/local/share/php/doc辺りに解凍。それを見て補完するらしいので.emacsにパスを設定。

;; php
(load-library "php-mode-120")
(require 'php-mode)
(add-hook 'php-mode-user-hook
            '(lambda ()
             (setq php-manual-path "/usr/local/share/php/doc")))

補完できたー!

中身を見てみるとたまらない変数とかあります。

(defcustom php-mode-force-pear nil
  "Normally PEAR coding rules are enforced only when the filename contains \"PEAR\"\
Turning this on will force PEAR rules on all PHP files." 
  :type 'boolean
  :group 'php)

PEARのコーディング規約守れちゃうのかよ。

  (if (or php-mode-force-pear
          (and (stringp buffer-file-name)
               (string-match "PEAR\\|pear" 
                             (buffer-file-name))
               (string-match "\\.php$" (buffer-file-name))))
      (run-hooks 'php-mode-pear-hook))

設定してなくてもpearフォルダ以下のphpファイルは自動的に? これ以上はlispがわからん。

Comments


Option