以下指令可以在目前目錄建立一個 TAGS 檔案,把本目錄下的 .C, .H, .CPP, .M, .MM 檔內的 symbol 做索引。
$ find . \( -name *.[cmh] -or -name *.cpp -or -name *.mm \) -print0 | xargs -0 etags
接下來在 Emacs 中按 M-. 或 M-x find-tag,會詢問 TAGS 檔路徑,選好了之後,以後按 M-. 就可以直接跳到某個 symbol/function 的定義了。
注意,在命令列上打 etags 執行的其實是 Mac OS X 內建的 Emacs 所提供的 (比如 OS X Lion 就有內建 Emacs 22),這通常跟新版的 Emacs 相容,如果想要用 MacPorts 內更新版的 Emacs 所提供的 etags 工具,請在 ~/.profile 中加上
alias etags="/Applications/MacPorts/Emacs.app/Contents/MacOS/bin/etags"
或把上列路徑加到 PATH。
Xcode 對於 Objective C 的處理做得比 Emacs 好,只是偶而開 Emacs 會比較順手而已。
坦白講,不論是用 Xcode 或 Emacs,若你需要閱讀一個數十萬行以上的 C/C++/Java code base,都遠比不上在 VMWare 中開一套 Source Insight 來得好用,只是可惜 Source Insight 目前不支援 Objective C。
雖然 Emacs 可以搭配 Cscope 做到更接近 Source Insight 的水準,但目前 Cscope 好像也沒支援 Objective C...
沒有留言:
張貼留言