gtags / global†
- タグシステムの一つ
- debian では、 global パッケージに入っている。
- 敢えて絞った結果なのかもしれないが、 emacs 用の gtags.el で用意されている機能は、 cscope, rtags のそれと比べて随分少ない。
tag の生成†
$ gtags [options] [path]
$ gtags -f <files>
$ gtags -v
- gtags には、etags と違って append mode が存在しないため、xargs でマルチスレッド化して実行するのは不可かもしれない。
- -f <file> を指定しない場合、gtags はカレント以下のディレクトリを走査してタグ情報を生成する。
- tag の生成処理が終わると、実行したディレクトリ配下に、下記4つのファイルが作られる:
GPATH GTAGS GRTAGS
file | description |
GTAGS | シンボル定義のデータベース |
GRTAGS | シンボル参照のデータベース |
GPATH | ソースファイルへのパスのデータベース |
emacs の設定†
gtags.el の標準キーバインド†
binding | function | description | remark |
C-t | gtags-pop-stack | | |
C-] | gtags-find-tag-from-here | | |
<mouse-2> | gtags-find-tag-by-event | | |
<mouse-3> | gtags-pop-stack | | |
M-* | gtags-pop-stack | | |
M-. | gtags-find-tag | | |
C-c I | gtags-find-with-idutils | | |
C-c P | gtags-find-file | | |
C-c d | gtags-find-tag | | |
C-c f | gtags-parse-file | | |
C-c g | gtags-find-with-grep | | |
C-c h | gtags-display-browser | | |
C-c r | gtags-find-rtag | | |
C-c s | gtags-find-symbol | | |
C-c t | gtags-find-tag | | |
C-c v | gtags-visit-rootdir | | |
C-x 4 . | gtags-find-tag-other-window | | |
- gtags.el で定義されているキーバインドを有効にすると、rtags.el で定義されたキーバインドのプレフィックスである "C-c r" が gtags.el に喰われてしまって使えない。これでは rtags.el の機能を使いこなせないため、 gtags.el で定義されている "C-c r" を無効にする:
index da38467..7efea77 100644
--- a/site-lisp/gtags.d/gtags.el
+++ b/site-lisp/gtags.d/gtags.el
@@ -215,7 +215,7 @@
(define-key gtags-mode-map (concat gtags-prefix-key "g") 'gtags-find-with-grep)
(define-key gtags-mode-map (concat gtags-prefix-key "I") 'gtags-find-with-idutils)
(define-key gtags-mode-map (concat gtags-prefix-key "s") 'gtags-find-symbol)
- (define-key gtags-mode-map (concat gtags-prefix-key "r") 'gtags-find-rtag)
+ ; (define-key gtags-mode-map (concat gtags-prefix-key "r") 'gtags-find-rtag)
(define-key gtags-mode-map (concat gtags-prefix-key "t") 'gtags-find-tag)
(define-key gtags-mode-map (concat gtags-prefix-key "d") 'gtags-find-tag)
(define-key gtags-mode-map (concat gtags-prefix-key "v") 'gtags-visit-rootdir)
vi での設定†
- vimのプラグインを ~/.vim/plugin にコピー
$ mkdir ${HOME}/.vim/plugin
$ cp /usr/share/doc/global/examples/gtags.vim.gz ${HOME}/.vim/plugin
$ cd ${HOME}/.vim/plugin
$ gunzip gtags.vim.gz
/.vimrc にgtagsの設定を追加
map <C-h> :Gtags -f %<CR>
map <C-j> :GtagsCursor<CR>
map <C-n> :cn<CR>
map <C-p> :cp<CR>
binding | description |
C-h | そのソースの関数を表示 |
C-n | リストのカーソルを下に移動 |
C-p | リストのカーソルを上に移動 |
C-j | 現在の関数の中にジャンプ |
C-o | ジャンプする前の位置に戻る |
参考リンク†