anythingからタグファイルを引く
emacsでpython開発するのに、ちょくちょく環境を整えていってます。
先日eclipseでいうOutlineのようなものが使いたくてsummarye.elを導入しました。
今度はeclipseでいう「参照を開く」に該当する機能を使いたくて、タグジャンプを使う設定をしました
まずexuberant-ctagsをbrewからインストール
brew install ctags
開発中のプロジェクトのディレクトリでタグファイルを作成します
/usr/local/bin/ctags -e -R
ディレクトリにTAGSファイルが生成されます。
PYTHONPATHに含まれるソースのタグファイルを作成するのに、スクリプトが公開されていましたので、これを使ってみます。
https://gist.github.com/848413
etagsやmd5のコマンドを環境にあわせて変更する必要があります。
タグファイルが複数作成されるので、最後に1つにまとめるようにしました。
TAGSDIR=`pwd` rm -f $TAGSDIR/*.tags rm -f $TAGSDIR/TAGS for ENTRY in `python -c 'import sys; print " ".join(sys.path)'` ; do if [ -d $ENTRY ] ; then cd $ENTRY TAGFILE=$TAGSDIR/`pwd | md5 | awk '{print $1}'`.tags if [ -f $TAGFILE ] ; then echo "Skipping duplicate $ENTRY (aka `pwd`)" else echo "$ENTRY --> $TAGFILE" find $ENTRY -type f | /usr/bin/etags --output $TAGFILE - fi fi done cat $TAGSDIR/*.tags > $TAGSDIR/TAGS rm -f $TAGSDIR/*.tags
タグはanything-etags+.elを使って検索します。
auto-installでインストール
M-x auto-install-from-emacswiki anything-etags+.el
設定は以下のようにしました。
(require 'anything-etags+) (setq anything-etags+-use-short-file-name nil) (setq anything-etags+-highlight-tag-after-jump t) (global-set-key "\M-." 'anything-etags+-select-one-key) (global-set-key "\M-*" 'anything-etags+-history) (setq tags-table-list '("~/.emacs.d/tags/TAGS"))
親ディレクトリに存在するTAGSという名前のファイルはanything-etags+.elが
tags-table-listに追加してくれます。
これでM-.でカーソル位置のシンボルをanythingのインターフェースで絞込み検索できるようになりました。
C-u M-.で全候補から絞込みができます。
とりあえず感が否めませんが、しばらく使ってみようと思います。