etags
どもども。
gtags では Windows環境だと,global のソースコードに対して,
タグファイルを生成できないので,オレ,etags,使う。
(GTAGS ファイルを作成しようとしてこける。gtags ディレクトリがあるから)
で,ちょっと混乱したついでに,etags についてちょっと調べたので,
調べた範囲でまとめます。
M-x からの〜
- visit-tags-table
タグテーブルファイルを選択する。こんときに既に1個以上のタグファイルを
使っている場合は,現在のタグテーブルリストに追加するか,
もしくは,新たなタグテーブルリストを作るか聞かれる。
新たに作った場合は,下の select-tags-table での選択肢が増えることになる。
つまり使用するリストを切替え可能になる。
例えば2つのリストがある場合は以下の様になると。
(~/src/foo/TAGS) <--- この行にカーソルおいて t で,このタグテーブルリストを使用するということ。 (~/elisp/bar/TAGS) ~/src/foo/TAGS <--- これらは何のためにあるのかわからんかった。 ~/elisp//TAGS
- select-tags-table
上記参照。
タグテーブルを選択するバッファに突入。q で終了。t で選択できる。
t すると,エコーエリアにメッセージがでます。
見逃したら,*Message* バッファを見ればわかるはずです。
- tags-reset-tags-table
タグテーブルリストとかをリセットしまっせ。
今まで選択してきたタグファイルがぱーになります。
間違ったタグファイルを選択してしまった場合とかに使う?
- find-tag, pop-tag-mark
タグを探して移動。んで戻ってくるときは,pop-tag-mark
find-tag は,デフォルトでは 「M-.」,
pop-tag-mark は,「M-*」にそれぞれバインドされています。
- gtags が動くとき
gtags-mode が有効の時は,上記のキーバインドが上書きされるようです。
つまり,「M-.」は,gtags-find-tag に,「M-*」は,gtags-pop-stack になると。
一応,gtags.el から引用します。
; ; New key assignment to avoid conflicting with ordinary assignments. ; (define-key gtags-mode-map "\e*" 'gtags-pop-stack) (define-key gtags-mode-map "\e." 'gtags-find-tag) ; ; Old key assignment. ; ; If you hope old style key assignment. Please include following code ; to your $HOME/.emacs: ; ; (setq gtags-mode-hook ; '(lambda () ; (define-key gtags-mode-map "\eh" 'gtags-display-browser) ; (define-key gtags-mode-map "\C-]" 'gtags-find-tag-from-here) ; (define-key gtags-mode-map "\C-t" 'gtags-pop-stack) ; (define-key gtags-mode-map "\el" 'gtags-find-file) ; (define-key gtags-mode-map "\eg" 'gtags-find-with-grep) ; (define-key gtags-mode-map "\eI" 'gtags-find-with-idutils) ; (define-key gtags-mode-map "\es" 'gtags-find-symbol) ; (define-key gtags-mode-map "\er" 'gtags-find-rtag) ; (define-key gtags-mode-map "\et" 'gtags-find-tag) ; (define-key gtags-mode-map "\ev" 'gtags-visit-rootdir) ; ))
わたしゃ,C-t をつぶされたくないので,コメントアウトされている
キーバインドを有効にはしていません。
でですね,gtags-mode で,gtags の有効,無効を切り替えられまっせ。
だもんで,global のソースを覗く時には,M-x gtags-mode で無効にして,
etags の方を使わないとね。GTAGS とかないからだべよ。
ちなみに,gtags-mode が有効の時に,M-x select-tags-table とか,
M-x visit-tags-table とかしても,gtags-mode が有効のときには,
その効果は現れないので,ワタシみたいにひつこく何度もしないように。
まとめ
ま,etags 使うなら,gtags 使っとけって感じもするけど,
gtags 使えないときには,やはり etags な気もするので。
こないだ書いた件で,global -ci ってできたらいいなと思って,
ソースを覗いてみたけど,btree の操作で候補を引っ張ってきている感があって,
太刀打ちできなさそうなので諦めムードが漂っています。
あとコメントが英語で書かれているわけですが,
ついついスペルミスを見つけてしまったりと,でも見ないふり見ないふり。
てか,global -ci の i オプションっていらなくね? とか立場をささっと変えてみたり。
そういうわけで,global の中の人,ありがとう!