emacsのetagsを活用する

会社が夏休みという事で、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)

phpetags.phpはこちらから入手できます

またTAGSをつくると、M-C-i (ispell-complete-word)で関数名の補完をする事ができます。template書きに非常に重宝しています。


ちょうど、symfony.elというのを書いています。書いているというかむしろrails.elからキーワードを置換して自分の必要な機能だけ実装している感じです。elispほとんど書けないので勉強しながら書いています、お手伝頂ける方募集です。 symfony.elでは、C-c C-c C-t (create-tags)とすることで簡単にタグを作り直す事ができます。

Leave a Reply

You must be logged in to post a comment.