アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

PHP開発で追加しておきたいEmacs Lisp 8選

はじめまして、アシアルで働くようになってまだ三週間ほどの高橋と申します。
ブログを書くのもはじめてのことなので、何か至らないところがありましたら、ご指摘くださると助かります。

さて、皆さんはPHPで開発を行う際、エディタは何を使っていますか?
私はEmacsというエディタを使っています。Emacsは使いはじめこそとっつきにくいのですが、慣れてしまうと離れられない魅力が一杯詰まった素敵なエディタです。

今回はそんなEmacsPHPの開発環境を作る場合に、追加しておくと開発がより便利になるelispを8個選んで紹介してみたいと思います。
なお、標準のEmacsに含まれているものは除外しています。


1. PHP mode for Emacs

EmacsPHPのコードを書くなら、やはりこれが必須です。そのためか、追加インストールしなくても使えるようになってるディストリビューションも多いです。
このモードを使うと、コードの色付け、関数名の入力補完、PEARコーディング規約に準拠した編集などが行えます。

なお、入力補完を行うには、PHPのHTMLマニュアルをダウンロードして、/usr/local/share/php/docなどへ展開しておく必要があります。



; 設定例
(autoload 'php-mode "php-mode")
(setq auto-mode-alist
      (cons '("\\.php\\'" . php-mode) auto-mode-alist))
(setq php-mode-force-pear t)
(add-hook 'php-mode-user-hook
	  '(lambda ()
	     (setq php-manual-path "/usr/local/share/php/doc/html")
	     (setq php-manual-url "http://www.phppro.jp/phpmanual/")))



2. A CSS editing mode for emacs

HTMLと一緒によく書くものといえば、スタイルシートですね。そのCSSを編集するためのモードです。
コードの色付けはもちろんのこと、M-TABでプロパティ名の補完ができるようになり、入力するのがとても楽になります。



; 設定例
(autoload 'css-mode "css-mode")
(setq auto-mode-alist
      (cons '("\\.css\\'" . css-mode) auto-mode-alist))
(setq cssm-indent-function #'cssm-c-style-indenter)



3. Major mode for editing JavaScript source code

Ajaxを使うサイト開発に必要なJavaScriptを編集するためのモードです。ただ、いつの間にか配布していたサイトが404 Not Foundになってました……。
一応こちらの方の記事によると、Internet Archiveからダウンロードできるようですが、何か問題でもあったんでしょうか?

トラックバックで教えていただいたのですが、こちらのURLでサイトが復活したようです(2007年5月9日追記)



; 設定例
(add-to-list 'auto-mode-alist (cons "\\.js\\'" 'javascript-mode))
(autoload 'javascript-mode "javascript" nil t)
(setq js-indent-level 4)



4. MMM Mode

例えば、HTMLファイルを編集する際、styleタグで囲まれているところはcss-mode、他はhtml-modeといったように、カーソルの位置にあわせて複数のモードを自動的に切り替えてくれます。



; 設定例
(require 'mmm-auto)
(setq mmm-global-mode 'maybe)
;(set-face-background 'mmm-default-submode-face nil) ;背景色が不要な場合

(mmm-add-classes
 '((embedded-css
    :submode css-mode
    :front "<style[^>]*>"
    :back "</style>")))
(mmm-add-mode-ext-class nil "\\.html\\'" 'embedded-css)



5. Mule-UCS

最近では、PHPエンコーディングUTF-8として開発している方も多いのではないでしょうか。
Mule-UCSをいれることで、UTF-8JIS X 0213などの文字コードを扱えるようになります。

なお、現在オフィシャルサイトにアクセスできないのですが、Hideyuki SHIRAI's Web pageからダウンロードできます。



; 設定例
(require 'jisx0213)
(set-language-environment "Japanese")



6. Subversion Interface for emacs
PHP開発に限ったことではありませんが、ソースコードのバージョン管理は大切ですね。アシアルでもSubversionを使って管理しています。
psvnはそのSubversonのインターフェースとなり、手動でsvnコマンドを実行するよりも手軽な操作性を提供してくれます。
実際に操作する場合は、チェックアウトしたファイルのあるところでM-x svn-statusを実行します。



; 設定例
(autoload 'svn-status "psvn" nil t)



7. ElScreen

バッファを複数に分割して作業をしていると、そのバッファの状態を保ったまま、別のバッファへ切り替えたくなることが多々あります。
window環境であれば別フレームを開くことで対応できますが、フレームが多くなると切り替えが大変ですし、ターミナル環境ではそうはいきません。

ElScreenを使えば、ひとつのフレーム内で複数のスクリーンを素早く切り替えることができ、慣れると手放せなくなります。



; 設定例
(require 'elscreen)
(if window-system
    (define-key elscreen-map "\C-z" 'iconify-or-deiconify-frame)
  (define-key elscreen-map "\C-z" 'suspend-emacs))



8. TRAMP

さて、これまで紹介してきたelispをインストールして快適な開発環境を構築したとしても、作業マシンが変わってしまったら、もうその環境は使えません。かといって、マシン毎に開発環境を構築するのは非常に手間がかかって面倒ですね。
TRAMPを使うと、



C-x C-f /user@host:/path/to/remote/file
C-x d   /user@host:/path/to/remote/dir


といった操作で、別のマシンにあるファイルを、まるでローカルマシンにあるかのように編集したり、diredで移動したりといったことができるため、お気に入りのEmacs環境をひとつ作るだけで大丈夫になります。



; 設定例
(require 'tramp)



以上、駆け足の紹介となりましたが、如何だったでしょうか?
8個選ぶならこの8個のほうがいいとか、他にPHPの開発が便利になるelispをご存知でしたら、ぜひぜひお教えください。