這篇博文和前面的篇文章是銜接的,也算是一點點補充吧.
在前文中說過關於閱讀源碼可以提高自己的修養~ 對於源碼的閱讀,無非就是選中一個自己認為適合自己的源碼包,
然后去閱讀和學習.這里就有一個問題了,你使用什么樣子的工具閱讀呢? 使用vi? 或者是win下的記事本?
雖然很多的源碼都是模塊化開發的,在閱讀的時候選中一個小模塊,然后慢慢琢磨就可以了.但是在源碼閱讀的過程中
總是需要查找的功能的,一般的文本編輯器只能實現在一個文件中的指定查找,功能有限.不過,你也可以使用IDE閱讀
源碼,方法很多,隨自己喜歡吧.其實,我們還是有其他選擇的.
解決的辦法是什么呢? emacs/vim會給我們答案.
我已經不使用vim好久了,或者說更多的時間我選擇使用emacs.個人感覺emacs慢慢有節奏的按鍵操作,可以讓我體驗coding
的快樂.那種感覺是vim不能給的,因為vim使用起來有點暴力~
取決於你的選擇,我的建議是:emacs優雅,vim更注重效率.可隨自己喜歡挑選一個.
emacs + cscope + xcscope 是源碼閱讀的不錯選擇.配置也相當的簡單.
由於我使用的是ubuntu 12.04 所以配置工作也都是在此環境下面完成的,僅供參考.
sudo apt-get install cscope*
xcscope是cscope插件的擴展:[link:http://www.emacswiki.org/emacs/xcscope+.el]]
怎么去結合emacs使用cscope閱讀源碼呢? 先看一下關於xcscope的一些操作說明( 當然,這些說明在emacs的菜單選項中也是有的~ )
1 C-c s s Find symbol. 2 C-c s d Find global definition. 3 C-c s g Find global definition (alternate binding). 4 C-c s G Find global definition without prompting. 5 C-c s c Find functions calling a function. 6 C-c s C Find called functions (list functions called 7 from a function). 8 C-c s t Find text string. 9 C-c s e Find egrep pattern. 10 C-c s f Find a file. 11 C-c s i Find files #including a file. 12 13 search: 14 C-c s b Display *cscope* buffer. 15 C-c s B Auto display *cscope* buffer toggle. 16 C-c s n Next symbol. 17 C-c s N Next file. 18 C-c s p Previous symbol. 19 C-c s P Previous file. 20 C-c s u Pop mark.
下面就就結合glib的源碼說說如何使用emacs + xcscope+ cscope 組合的使用方法:
1. 隨便打開源碼包中的一個文件: 我打開的是glib/glib/gthread.h (我的glib源碼包是使用git clone的,和官網下載的源碼包目錄有點不一樣,請自己注意~)
2. 設定初始化目錄,也就是cscope + xcscope插件生成tag的檢測范圍的限定.這可以根據你自己的需求去做,我的選擇是把源碼包設置為初始化目錄. ( C-c s a)
3. 為文件生成檢索tag. 一般我會選擇執行兩條命令(C-c s L and C-c s i)
有的時候,如果源碼包很大個的話,執行的過程可能需要一些時間,不過還是很快的.
4. 執行完上面的步驟之后,就可以隨意在源碼包中查找關鍵詞了.(C-c s s + key )
如上圖所示,會幫你查找到所有關鍵詞出現的位置.這時候就是很據你自己的需求進行跳轉.我想,對於辨別查找自己需要的源碼這種能力,還是有的,不會在一大堆tag面前無力~