GNU GLOBAL gtags.el の pop でkill-bufferされるのを防ぐ

GNU GLOBAL + gtags.el は超便利なので毎日使っています。(Perlも対応して欲しい。)
一つだけ不満があって、TAGジャンプ後 pop して戻ってきたときにひとつ前の buffer が kill-bufferされてしまう。
最近 Emacs で開いていたはずのバッファがいつの間にかいなくなるのはこれが原因だったようです。


不満ならば自分でなんとかすれば良いということで、例によって defadvice で対処。(gtags.el に一切触らずに変更できるのが素敵)

;; gtags の pop でバッファが kill されるのを防ぐ
(defadvice kill-buffer (around do-not-kill-buffer)
  "do-not-kill-buffer"
  (setq ad-return-value t))
(defadvice gtags-pop-stack (around gtags-pop-stack-not-kill-buffer)
  "pop only"
  (ad-activate-regexp "do-not-kill-buffer")
  ad-do-it
  (ad-deactivate-regexp "do-not-kill-buffer"))
(ad-activate-regexp "gtags-pop-stack-not-kill-buffer")