anythingからタグファイルを引く


emacspython開発するのに、ちょくちょく環境を整えていってます。
先日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-.で全候補から絞込みができます。

とりあえず感が否めませんが、しばらく使ってみようと思います。

蛇足

この本でたら買う。

Emacs Lispテクニックバイブル

Emacs Lispテクニックバイブル