Windows + emacs+cscope看源代码

如果不熟悉find命令可以查看:http://blog.csdn.net/pfanaya/article/details/7013742


Windows下用Cscope查看源码:

不用自己动手编译cscope,Sourceforge提供了编译好的exe文件

 下载Cscope(是zip的那个)


下载完后解压将其路径加入环境变量中,打开Emacs的Eshell,输入cscope有提示则表明成功。


在eshell中切换到目录下:(其中*.java表示以java为扩展名的文件,如果你在查看Linux内核源码,此处可以用*.[h|c]表示所有h或c结尾的文件)

匹配c或cpp结尾的可以用 find . -name "*.c" -o -name "*.cpp" 或 find . -regex ".*\(c\|cpp\)"


find -name '*.java' > cscope.files

cscope -b

第一条语句会生成cscope.files文件,其中内容包含所有的扩展名为java的路径

cscope -b生成cscope.out文件,该文件包含java文件变量名函数名之类的位置信息


打开该目录下的java文件


C-c s s 输入一个变量名会有显示,此时在cscope buffer中可以用n p上下选择 o定位等(可以用?或h查看帮助)




快捷键及其含义如下:

C-c s s Find symbol. C-c s d Find global definition. C-c s g Find global definition (alternate binding). C-c s G Find global definition without prompting. C-c s c Find functions calling a function. C-c s C Find called functions (list functions called from a function). C-c s t Find text string. C-c s e Find egrep pattern. C-c s f Find a file. C-c s i Find files #including a file. 下面是在搜索到的结果之间切换用的快捷键: C-c s b Display *cscope* buffer. C-c s B Auto display *cscope* buffer toggle. C-c s n Next symbol. C-c s N Next file. C-c s p Previous symbol. C-c s P Previous file. C-c s u Pop mark. 

;不知道怎么回事,我的cscope没有菜单,快捷键也没用,于是自己绑定了一些键 (require 'xcscope) (setq cscope-do-not-update-database t) (define-key global-map (kbd "C-c s a") 'cscope-set-initial-directory) (define-key global-map (kbd "C-c s A") 'cscope-unset-initial-directory) (define-key global-map (kbd "C-c s s ") 'cscope-find-this-symbol) (define-key global-map (kbd "C-c s d") 'cscope-find-global-definition) (define-key global-map (kbd "C-c s G") 'cscope-find-global-definition-no-prompting) (define-key global-map (kbd "C-c s u") 'cscope-pop-mark) (define-key global-map (kbd "C-c s n") 'cscope-next-symbol) (define-key global-map (kbd "C-c s N") 'cscope-next-file) (define-key global-map (kbd "C-c s p") 'cscope-prev-symbol) (define-key global-map (kbd "C-c s P") 'cscope-prev-file) (define-key global-map (kbd "C-c s b") 'cscope-display-buffer) ;(define-key global-map (kbd "C-c s ")' cscope-display-buffer-toggle) (define-key global-map (kbd "C-c s c") 'cscope-find-functions-calling-this-function);显示被一个输入函数调用的所有函数。 (define-key global-map (kbd "C-c s C") 'cscope-find-called-functions);显示被输入函数调用的所有函数 (define-key global-map (kbd "C-c s f") 'cscope-find-this-file); (define-key global-map (kbd "C-c s i") 'cscope-find-files-including-file);Find files #including a file. (global-set-key (kbd "C-c s e") 'cscope-find-egrep-pattern);Find egrep pattern (global-set-key (kbd "C-c s t") 'cscope-find-this-text-string);Find text string;  

你可能感兴趣的:(Emacs)