Emacs cscope
Table of Contents
1 cscope
很久前(大约在09年一个夏天吧)刚开始接触到vi,就喜欢上了vi,于是写代码也就无处不vi了,后来用了vim,自然离不开cscope来查看代码。 用了有几年了,现在换Emacs了,还是忘不了它。于是记录一下它在Emacs下的使用情况。
2 install
;; Installation steps: ;; ;; 0. (It is, of course, assumed that cscope is already properly ;; installed on the current system.) ;; ;; 1. Install the "cscope-indexer" script into some convenient ;; directory in $PATH. The only real constraint is that (X)Emacs ;; must be able to find and execute it. You may also have to edit ;; the value of PATH in the script, although this is unlikely; the ;; majority of people should be able to use the script, "as-is". ;; ;; 2. Make sure that the "cscope-indexer" script is executable. In ;; particular, if you had to ftp this file, it is probably no ;; longer executable. ;; ;; 3. Put this emacs-lisp file somewhere where (X)Emacs can find it. It ;; basically has to be in some directory listed in "load-path". ;; ;; 4. Edit your ~/.emacs file to add the line: ;; ;; (require 'xcscope) ;; ;; 5. If you intend to use xcscope.el often you can optionally edit your ;; ~/.emacs file to add keybindings that reduce the number of keystrokes ;; required. For example, the following will add "C-f#" keybindings, which ;; are easier to type than the usual "C-c s" prefixed keybindings. Note ;; that specifying "global-map" instead of "cscope:map" makes the ;; keybindings available in all buffers: ;; ;; (define-key global-map [(control f3)] 'cscope-set-initial-directory) ;; (define-key global-map [(control f4)] 'cscope-unset-initial-directory) ;; (define-key global-map [(control f5)] 'cscope-find-this-symbol) ;; (define-key global-map [(control f6)] 'cscope-find-global-definition) ;; (define-key global-map [(control f7)] ;; 'cscope-find-global-definition-no-prompting) ;; (define-key global-map [(control f8)] 'cscope-pop-mark) ;; (define-key global-map [(control f9)] 'cscope-next-symbol) ;; (define-key global-map [(control f10)] 'cscope-next-file) ;; (define-key global-map [(control f11)] 'cscope-prev-symbol) ;; (define-key global-map [(control f12)] 'cscope-prev-file) ;; (define-key global-map [(meta f9)] 'cscope-display-buffer) ;; (defin-ekey global-map [(meta f10)] 'cscope-display-buffer-toggle) ;; ;; 6. Restart (X)Emacs. That's it. ;;
3 functaion
;; Find symbol ;; Find global definition ;; Find called functions ;; Find functions calling a function ;; Find text string ;; Find egrep pattern ;; Find a file ;; Find files #including a file
4 Keybindings
;; * Keybindings: ;; ;; All keybindings use the "C-c s" prefix, but are usable only while ;; editing a source file, or in the cscope results buffer: ;; ;; 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. ;; ;; These pertain to navigation through the search results: ;; ;; 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. ;; ;; These pertain to setting and unsetting the variable, ;; `cscope-initial-directory', (location searched for the cscope database ;; directory): ;; ;; C-c s a Set initial directory. ;; C-c s A Unset initial directory. ;; ;; These pertain to cscope database maintenance: ;; ;; C-c s L Create list of files to index. ;; C-c s I Create list and index. ;; C-c s E Edit list of files to index. ;; C-c s W Locate this buffer's cscope directory ;; ("W" --> "where"). ;; C-c s S Locate this buffer's cscope directory. ;; (alternate binding: "S" --> "show"). ;; C-c s T Locate this buffer's cscope directory. ;; (alternate binding: "T" --> "tell"). ;; C-c s D Dired this buffer's directory. ;;