Emacsで定義されているクラスや関数にジャンプする方法

Emacsemacs

Emacs

Emacsのような昔ながらのテキストエディタは、IDEのように定義されているクラスや関数にジャンプすることができないと思っている人はいませんか?

世界中のスーパーハッカーが愛用しているEmacsがそんなこともできないわけがありません。

今回はExuberant Ctagsを利用して、ソースコードで定義されているクラスや関数に一瞬でジャンプする設定方法をご紹介します。

スポンサーリンク

タグジャンプ

「この関数の処理を確認したいんだけど、どこに定義してあったっけ?」をソースコードをうろうろと探し回って、挙げ句の果てはgrepして抽出して探し出すという荒技をしたことがある人はいませんか?grepコマンドは利用しなかったとして、定義されているコード部分に一瞬でジャンプできたら便利ですね。Eclipseなどの統合開発環境(IDE)では、もはや標準機能です。

この動作の仕組みは、定義されているクラス名や関数名をタグとしてまとめて、インデックスファイルを作成します。このファイルに対して検索をして該当する箇所を表示します。

Emacsは標準でetagsというこのインデックスファイルを作成するコマンドが付属します。が、現在ではExuberant Ctagsという、さらに高機能なソフトウェアを利用することが主流のようです。

Exuberant Ctags のインストール

基本的に公式サイトからソースコードを取得してコンパイルしてインストールすればすぐ使えます。

Macを利用している人は、最初からBSDのctagsコマンドがインストールされていますが、これはExuberant Ctagsとは異なります。MacPortsなどを利用して新たにインストールすることを推奨します。インストール方法は下記の通り。

$ sudo port install ctags
...(省略)
$ /opt/local/bin/ctags --version
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Dec  4 2011, 23:54:28
  Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net
  Optional compiled features: +wildcards, +regex

TAGSを作成する

Exuberant Ctags大抵のプログラミング言語をサポートしています。ソースコードのトップディレクトリで下記の様にコマンドを実行すれば、TAGSというファイルが生成されます。

$ ctags -Re

このファイルに定義されているクラスや関数の情報が集約されています。Emacsからこのファイルを利用すれば、目的の機能が実現できます。

EmacsからTAGSを利用して、タグジャンプする

タグジャンプするためのコマンドを下記の通り。最初の操作をする時に使用するTAGSファイルを聞かれるので、先ほどつくったTAGSファイルを指定してください。

コマンド 説明
M-. クラスや関数を探す
C-u M-. 次の検索結果候補を表示する
C-u – M-. 前の検索結果候補を表示する
M-* 元の場所に戻る
C-x 4 . (find-tag-other-window) タグ(名前)の定義箇所を探し別ウィンドウに表示
C-x 5 . (find-tag-other-frame) タグ(名前)の定義箇所を探し別フレームに表示

特に一番下の二つは多用すると思いますので、要チェックです。

anything-etags+.el

anythingインターフェイスからTAGSの内容を利用できるのが、anything-etags+.elである。emacswikiからインストールできる。

M-x install-elisp-from-emacswiki anything-etags+.el

init.el に下記の様に設定を書き加えれば、便利に使えるでしょう。

;; anything-etags+.el
(require 'anything-etags+)
(global-set-key "\M-." 'anything-etags+-select-one-key)

その他便利なTips

こういった実用的なTipsが掲載されているこの本はオススメ。

るびきち¥ 2,919

タイトルとURLをコピーしました