会社が夏休みという事で、symfonyコードを普段と違ったemacs環境で書いています。そのため、久々にemacs環境を整備する機会がありましたので、今日はetags関係の環境をセットアップのメモをポストします。
まず、etagsをご存じない方はこちらのページを一読していただくと幸せになれるかもしれません。
etagsを活用する
emacsを使っうプログラマならTAGSはよく使うと思います。とくに、キーワードに対して一発で移動できるM-. (find-tags)はとても良く使います。
プロジェクト毎にTAGSファイルを作っているのですが、プロジェクトのファイル以外にphpの関数とsymfonyの関数をごちゃ混ぜにしてTAGSファイルを生成すると便利です。下のようなシェルスクリプトを使ってTAGSファイルを作っています。
#!/bin/sh if [ -z $1 ];then echo "Usage: $0 fullpath of TAGS" exit fi tags=$1 dir=`dirname $tags` cd $dir && etags `find . -name "*.php"` -o $tags etags --append `find ?/lib/php -name "*.php"` -o $tags etags --append /home/tumf/share/php/etags/phpetags.php -o $tags
phpetags.phpというファイルはPHPの関数定義を並べたファイルで、これを元にTAGSをつくるとM-x php-show-arglistとすると簡単に関数定義を調べる事ができます。

よく使うので下のように、C-cC-.に割り当てて使っています。
(define-key php-mode-map '[(control c)(control .)] 'php-show-arglist)
またTAGSをつくると、M-C-i (ispell-complete-word)で関数名の補完をする事ができます。template書きに非常に重宝しています。
ちょうど、symfony.elというのを書いています。書いているというかむしろrails.elからキーワードを置換して自分の必要な機能だけ実装している感じです。elispほとんど書けないので勉強しながら書いています、お手伝頂ける方募集です。
symfony.elでは、C-c C-c C-t (create-tags)とすることで簡単にタグを作り直す事ができます。

