helm-gtags.elを書いた

ここの内容は古いのでこちらを参照してください。

はじめに

GNU globalの helm interfaceである helm-gtags.elを書きました。
私が helmに移行できない最大の理由として helm-gtags.elがないと
いうのがあったんですけど、待ってても出ないんで自分で作りました。
なお anything-gtags.elとは互換性はありません。


anything-gtags.elは gtags.elの結果を加工して、anythingインタフェースで
表示するということで、gtags.elの設定をしていれば anything-gtags.elを
requireするだけで、anythingインタフェースで使えるという利点があります。
ただこのような作りのため、処理に時間がかかりカーネル規模のソースで利用
した場合、表示まで若干時間がかかりました。helm-gtags.elでは gtags.elの
機能を一部利用していますが、候補の生成は自前で行なっているので、結果の
表示が早くなっています(カーネル規模でないと変わらないかもしれないですが)。

依存関係

  • gtags.el

設定

anything-gtags.elと違い, 独自の設定が必要になります。

(setq gtags-mode-hook
      '(lambda ()
         (local-set-key (kbd "M-t") 'helm-gtags-find-tag)
         (local-set-key (kbd "M-r") 'helm-gtags-find-rtag)
         (local-set-key (kbd "M-s") 'helm-gtags-find-symbol)
         (local-set-key (kbd "C-t") 'helm-gtags-pop-stack)))

;; customize
(setq helm-c-gtags-path-style 'root) ;; root(default) or relative or absolute
(setq helm-c-gtags-ignore-case nil)  ;; Default is nil

;;; hook for gtags
(add-hook 'c-mode-common-hook 'gtags-mode)
(add-hook 'c++-mode-hook 'gtags-mode)
(add-hook 'java-mode-hook 'gtags-mode)
(add-hook 'asm-mode 'gtags-mode)

イメージ


おわりに

「自分で作ったドッグフードを食え」ということで、自分でしばらく使ってみて、
問題なければ、MELPAやらに登録していこうかと思います。あとをこれを機に
anythingから helmへ移行します。


問題、改良点等ございましたら、githubの方までお願いします。