GNU GLOBAL(gtags)

最終更新日: 2012年04月01日
ホーム | 文書トップ | 目次 | ソース
概要
リリース情報
6.0
5.9.1
5.9
5.8.2
5.8.1
5.8
5.7.7
インストール方法
過去のバージョンにおけるインストール時の注意
4.8.1以前
タグファイル生成方法
使い方
gtags.el(emacs用)の設定例
.emacs の定義
キーアサイン関係
*GTAGS SELECT* のバッファに関して
バッファを1つだけ生成されるようにする方法
Link

概要

いわゆるタグジャンプ。他にctags,etags等があるが、これらより強力な機能を持っている。効率的にプログラミングを行う為には必須といってよい。 下記のような特徴がある。

プログラム自体は、コマンドライン(シェル)から実行するものであり、様々なアプリケーションで利用することが可能であるが、 ここでは、Windows(Windows2000/XP)におけるemacs(Meadow)上から利用することを前提として解説する。

リリース情報

公式ページのWhat's Newのところに記載されているリリースノートからピックアップ。 なお、ピックアップ基準は、私の主観なので、注意。

6.0

5.9.1

5.9

5.8.2

5.8.1

5.8

5.7.7

$ gtags.exe --statistics
period                  elapsed[sec]
----------------------- ------------
Time of creating GTAGS         0.172
Time of creating GRTAGS        0.109
Time of creating GSYMS         0.141
----------------------- ------------
The entire time                0.438

インストール方法

Use C-u M-x make-directory RET RET to create directory and its parents

過去のバージョンにおけるインストール時の注意

4.8.1以前

タグファイル生成方法

> gtags.exe -v
> gtags.exe -iv
> global.exe -uv

使い方

gtags.el(emacs用)の設定例

.emacs の定義

;--- GNU GLOBAL(gtags) gtags.el ---
(when (locate-library "gtags")
  (require 'gtags)
)

(global-set-key "\M-t" 'gtags-find-tag)     ;関数の定義元へ
(global-set-key "\M-r" 'gtags-find-rtag)    ;関数の参照先へ
(global-set-key "\M-s" 'gtags-find-symbol)  ;変数の定義元/参照先へ
(global-set-key "\M-p" 'gtags-find-pattern)
(global-set-key "\M-f" 'gtags-find-file)    ;ファイルにジャンプ
(global-set-key [?\C-,] 'gtags-pop-stack)   ;前のバッファに戻る
(add-hook
 'c-mode-common-hook
 '(lambda()
      ・
      ・
    (gtags-mode 1)
      ・
      ・
))
;---- cygwin-mount ----
(when (and (featurep 'meadow) (locate-library "cygwin-mount"))
  (require 'cygwin-mount)
  (cygwin-mount-activate))
(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)
         ))

キーアサイン関係

...
(define-key gtags-select-mode-map "q" 'gtags-pop-stack)
(define-key gtags-select-mode-map "u" 'gtags-pop-stack)
;(define-key gtags-select-mode-map "\C-t" 'gtags-pop-stack)  ; ここ
(define-key gtags-select-mode-map "\C-m" 'gtags-select-tag)
(define-key gtags-select-mode-map "\e." 'gtags-select-tag)
...

*GTAGS SELECT* のバッファに関して

バッファを1つだけ生成されるようにする方法

デフォルト設定では、*GTAGS SELECT* のバッファは無限に生成される。

これを、一つだけにする方法である。

従来は、下記のように、gtags.el にパッチをあてて対応する必要があったが、

version 5.8 以降に付属の gtags.el では、このモードに対応している。

gtags-select-buffer-single 変数を t にするだけでよい。 例えば、下記のように設定する。

(setq gtags-mode-hook
      '(lambda ()
         (setq gtags-select-buffer-single t)
         ))

Link

ホーム | 文書トップ | 目次 | ソース