[cscope][emacs] cscopeをほぼ全ての言語に対応する方法

cscopeはそこそこの規模~大規模ソースを読むツールとしては秀逸なんですけど、デフォルトだと基本C, C++くらいに対応?しているのみで別言語は個別処理する必要があって、それをどうしたものかと考えていてググッた結果、いい記事(http://groups.google.com/group/vim_use/browse_thread/thread/b3cf5f5f66ce2ca6?pli=1)を発見して対処してみました。(ちなみにemacs用のcscope設定なのであしからず)

まず取り敢えずはcscope dbに入れておきたいファイルをまとめる

find . -name "*.py" > cscope.files

そして,cscope.filesを元にcscope db作成

cscope -b

cscope.outがこれで出来上がります。ちなみに、結構な行数になるはずです。
あとは、cscope-modeをマイナーモードとして利用したい言語にフックさせる(.emacsに追加)(xcscope.el参照の事)

(add-hook 'python-mode-hook (function cscope:hook))

ちなみにデフォルトだと以下の3つのモードのみに対応してます.(interactiveでcscope-modeになるようにはなってません. まあ、変更したければした方がいいかも。。)(ちなみにphp-modeとかはc-mode利用してるんでhookしなくても使えたりします。)

(add-hook 'c-mode-hook (function cscope:hook))
(add-hook 'c++-mode-hook (function cscope:hook))
(add-hook 'dired-mode-hook (function cscope:hook))

で、こんな感じで設定したらあとはCとかC++でcscope使う感じで別言語にも対応できてるはずです。まあなかなか便利。
特にRailsとかSymfonyとかのフレームワーク開発の時便利な気がしますね。

ちなみに別話ですが,emacsでcscope-indexer実行時エラーになる時はcontribのcscope-indexerがPATHに入っていないのがエラー原因になることが多いらしいので備忘録。