USEフラグを設定
karky7 ~ # flaggie dev-util/cscope +emacs
cscopeをemergeする
karky7 ~ # emerge -pv dev-util/cscope These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] dev-util/cscope-15.8a USE="emacs" 588 kB karky7 ~ # emerge dev-util/cscope
cscopeコマンドでタグを作成する
例えばZendFrameworkのソースコードを閲覧するためにcscopeタグを作成する、面倒くさいのでインストール済みのコードを拝借しちゃう
cuomo@karky7 ~ $ cd workspace/ cuomo@karky7 ~/workspace $ cp -rf /usr/share/php/Zend ~/workspace/Zendこの辺は、適当にもってきて配置してください
タグファイルを配置するディレクトリを作成
cscopeが吐くタグを保存するディレクトリを作成しそこへ、タグファイルを作成する。 タグを作成する、スクリプトは適当に作成してそれを実行する
cuomo@karky7 ~/workspace $ mkdir -p ~/workspace/db/Zend
スクリプトの実行
簡単なシェルスクリプトのなので、適当に作成してchmod 0755 辺りに設定してください
cuomo@karky7 ~/workspace $ mkdir -p ~/workspace/db/Zend cuomo@karky7 ~/workspace $ ./zend_cscope_tag_create.sh Find ... Change dir ... [ /home/cuomo/workspace/db/Zend ] Create cscope index ... run [ /usr/bin/cscope -bqk ] cuomo@karky7 ~/workspace $これで、~/workspace/db/Zend/に4つのファイルができているはず
実行スクリプトはこちら、とりあえずphpとphtmlに絞ってある
ZEND_SRC_PATH=~/workspace/Zend CSCOPE_DB=~/workspace/db/Zend find -L ${ZEND_SRC_PATH} -name "*.php" -print > ${CSCOPE_DB}/cscope.files find -L ${ZEND_SRC_PATH} -name "*.phtml" -print >> ${CSCOPE_DB}/cscope.files echo "Find ..." echo "Change dir ... [ ${CSCOPE_DB} ]" cd ${CSCOPE_DB} echo "Create cscope index ... run [ /usr/bin/cscope -bqk ]" /usr/bin/cscope -bqk
.emacsに追加する
init.elでも.emacsでもいいので、タグのファイルを読み込むように設定しておく(自分はload-fileで読み込ませていますが)
(require 'xcscope) (setq cscope-do-not-update-database t) (setq cscope-database-regexps '( ("^/home/cuomo/workspace/" ("/home/cuomo/workspace/db/Zend" ("-q")) ) )) (set-face-foreground 'cscope-file-face "MediumSeaGreen") (set-face-foreground 'cscope-function-face "yellow") (set-face-foreground 'cscope-line-number-face "red") (set-face-foreground 'cscope-line-face "yellow") (set-face-foreground 'cscope-mouse-face "blue")これで、設定は完了、emacsを起動して.emacsを読み込ませる(M-x load-file)
例えば「Zend_Config_Ini」を探してみる、Zend_Config_iniへカーソルをのせ、emacsで以下のコマンド 「C-c s d」とやると...
検索結果が右のペインへ表示される
そして検索結果に、カーソルを合わせて「スペース」キーを押すとそのファイルに飛んでいける、複数ある場合もそれだけでいける、これだけでも結構使える
他には、「C-c s c」で、カーソルに合わせた関数をコールしている箇所を全部拾ってくる、もちろん「スペースキー」で飛んでいける

これは便利でしょう、もう止められません。
cscopeその他のコマンド
まだたくさんのキーバインドがあるのですがこれだけとりあえず覚えてしまえば結構っていうかほぼ問題ない
- C-c s s ・・・ (カーソルが置かれた)シンボルを検索
- C-c s d ・・・ (カーソルが置かれた)シンボルの定義を検索
- C-c s c ・・・ (カーソルが置かれた)関数を呼んでいる関数群を検索
- C-c s C ・・・ (カーソルが置かれた)関数から呼び出している関数群を検索
- C-c s t ・・・ テキスト文字列を検索
- C-c s e ・・・ egrepパターンで検索
- C-c s f ・・・ ファイル検索
- C-c s i ・・・ #include してるファイルを検索
- C-c s u ・・・ マークをポップ(スペースキーを押した履歴を遡って戻ってくれる)
0 件のコメント:
コメントを投稿