Emacs: GNU GLOBAL使う

GNU GLOBALとは

GNU GLOBALはソースコードにタグ付けを行い、ソースコード中のシンボルの参照先、参照元に移動することができる。etagsとはエディタに依存していない点で異なる。

GNU GLOBALの機能

対象言語
サポートしているエディタ
機能
  • 検索
  • 定義や参照へ移動
  • パス移動
  • サブディレクトリを含むソースツリー管理
  • ライブラリも含んだ検索
  • 正規表現
  • 外部検索エンジンサポート(grep, idutils)
  • XTML生成
  • 環境非依存索引
  • プラガブルパーザ
  • 小サイズ
  • 索引のインクリメンタル生成
  • gtags.confでのカスタマイズ
  • コード補完

(http://www.gnu.org/software/global/より)

インストール

debian4.0は下記でインストールできた。

$ apt-get install global

tag生成

ソースディレクトリで、

$ gtags -v

を行うと生成される。

コマンドラインから使う

関数を検索する
$ global getPString
SWFReader.cpp
参照元を検索する
$ global -r getPString
SWFReader.h
gSWFParser.cpp

Emacsで使う

.emacsに組み込む
(autoload 'gtags-mode "gtags" "" t)
(setq gtags-mode-hook
      '(lambda ()
         (local-set-key "\M-t" 'gtags-find-tag)
         (local-set-key "\M-r" 'gtags-find-rtag)
         (local-set-key "\M-s" 'gtags-find-symbol)
         (local-set-key "\C-t" 'gtags-pop-stack)
         ))

(add-hook 'c-mode-common-hook
          '(lambda()
             (gtags-mode 1)
             (gtags-make-complete-list)
             ))

(http://d.hatena.ne.jp/higepon/20060107/1136628498より)

Emacsで使ってみる。
  • M-t 関数定義へ飛ぶ
  • C-t 元のバッファへ戻る
  • M-r 呼び出し元に飛ぶ
  • M-s シンボル参照先に飛ぶ