xyzzyでGNU GLOBAL
移植です。
比較的大規模なソースを追いかけるとき、
xyzzy付属のXTAGSでは、変数の定義元へタグジャンプできないなどの
不満があります。
そこで、超便利なソースコードタグシステムである
GNU GLOBALというツールがあります。
EmacsやVimでは普通に使えるんですが、
xyzzyでは誰も移植されていなく使用できませんでした。
そこで、bulbがgtags.elをxyzzy-lispにしてみました(へなちょこな移植ですが orz)。
まだ、全機能を移植したわけではありませんが、基本機能は移植してあります。というわけでまだα版です。
また、雄猫さんのEmacs Lisp移植キットを利用させて頂きました。
ありがとうございます。
■ダウンロード
gtags-20060813.zip
gtags-20050905.zip
gtags.l 20051109版[190clicks]
gtags.l 20050905版[36clicks]
gtags.l[18clicks]
■インストール
●1
gtagsフォルダごとsite-lispフォルダにコピーして下さい。
●2
当ファイルの他にGNU GLOBALのインストールが必要です。
Emacs電子書棚さんが参考になります。
↑に置いてあるglobal-4.6.lzhを解凍して、
PATHが通っているフォルダに置いてください。
また、cygwinをインストールしてあれば、
最新版のGNU GLOBALをコンパイルして使用することもできますが、Win32版を持ってきた方がGTAGSのタグ生成が断然速いです。
■初期設定
下記を.xyzzyかsiteinit.lに記述します。
;;; Emacs Lisp 移植キット
(require "elisp")
;;; gtags-mode
(in-package "editor")
(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 #M-e 'gtags-find-tag-from-here)
;(local-set-key #M-a 'gtags-pop-stack)
(local-set-key #C-t 'gtags-pop-stack)
(local-set-key #M-j 'gtags-find-with-grep)
(local-set-key #M-c 'gtags-find-file-ext)
(local-set-key #M-n 'gtags-find-next-tag)
(local-set-key #M-p 'gtags-find-previous-tag)
))
(setq *gtags-select-mode-hook*
#'(lambda ()
(local-set-key #M-a 'gtags-pop-stack)
(local-set-key #PageUp 'previous-page-kept-selection)
(local-set-key #PageDown 'next-page-kept-selection)
(local-set-key #LBtnDown 'gtags-mouse-left-press)
(local-set-key #M-n #'(lambda ()
(interactive)
(next-virtual-line)
(gtags-select-tag)))
(local-set-key #M-p #'(lambda ()
(interactive)
(previous-virtual-line)
(gtags-select-tag)))
))
(add-hook '*c-mode-hook*
#'(lambda ()
(gtags-mode 1)
;(gtags-make-complete-list);未対応
))
(add-hook '*c++-mode-hook*
#'(lambda ()
(gtags-mode 1)))
(add-hook '*php-mode-hook*
#'(lambda ()
(gtags-mode 1)))
(in-package "user")
■使い方
●1
GTAGSの生成方法(コマンドライン)
タグを作りたいソースディレクトリに移動
> cd sourceGTAGSを生成
> gtags -v
xyzzyからは、C-x & としてから gtags で生成することができます。
ファイラーでやる場合、好きなディレクトリに移動し、F3を押してgtags -vというやり方もあります。ソース規模にもよりますが、時間がかかります…
GNU GLOBALの便利なところは、更新したソースだけTAGファイルを作り直すところです。
やり方は、
% global -u
●2
M-tで、関数の定義元へ移動
M-rで、関数を参照元の一覧を表示。RET で参照元へジャンプ
M-sで、変数の定義元と参照元の一覧を表示。RET で該当箇所へジャンプ
C-tで、前のバッファへ戻る
About this entry
You’re currently reading “xyzzyでGNU GLOBAL,” an entry on oojah log
- Published:
- 08.04.05 / 7am
- Category:
- xyzzy

1 Comment
Jump to comment form | comments rss [?] | trackback uri [?]