gtags の便利設定と関数一覧を出す関数の自前定義(gtags-parse-file)
gtags.el Version: 2.6 でのみ確認、他ではほぼ確実に動かない。
以下のような感じに gtags-goto-tag を修正して、
((char-equal flag-char ?r) (setq prefix "(R)")) ((char-equal flag-char ?f) (setq prefix "(F)")) (t (setq prefix "(D)")))
以下のように .emacs あたりに書く。
(setq gtags-suggested-key-mapping t) (setq gtags-prefix-key "\C-c") (require 'gtags) (defun gtags-parse-file2 () (interactive) (let ((root (gtags-get-rootpath)) (path (buffer-file-name))) (if (string-match root path) (gtags-goto-tag (replace-match "" t nil path) "f" t) (message "Not found.")))) (setq gtags-mode-hook '(lambda () (local-set-key (concat gtags-prefix-key "t") (lambda () (interactive) (gtags-find-tag t))) (local-set-key (concat gtags-prefix-key "r") 'gtags-find-rtag) (local-set-key (concat gtags-prefix-key "s") 'gtags-find-symbol) (local-set-key (concat gtags-prefix-key "f") 'gtags-parse-file2))) (setq gtags-select-mode-hook '(lambda () (local-set-key "\C-m" (lambda () (interactive) (let ((buf (current-buffer))) (gtags-select-tag-other-window) (kill-buffer buf)))) (local-set-key "\C-o" 'gtags-select-tag) )) (add-hook 'c-mode-common-hook '(lambda() (gtags-mode 1) )) (add-hook 'php-mode-hook '(lambda() (gtags-mode 1) )) (add-hook 'emacs-lisp-mode-hook '(lambda() (gtags-mode 1) )) (setq gtags-select-buffer-single t)
gtags-parse-file は gtags.el の最新バージョンだとあったけど、TRAMP と併用で動かなくなってた。