emacs 使用积累5.1 gtags gtags-cscope



#vim   ~/.emacs

 (load "/usr/share/emacs/site-lisp/global/gtags.el")

 (autoload 'gtags-mode "gtags" "" t)  ;gtags-mode is true

 (global-set-key (kbd "M-.") 'gtags-find-tag)

 (global-set-key (kbd "M-,") 'gtags-find-rtag)

 (global-set-key (kbd "M-g M-f") 'gtags-find-file)

 (global-set-key (kbd "M-g M-s") 'gtags-find-symbol)

 (global-set-key (kbd "M-g M-u") 'gtags-update)


 

 

hack /usr/share/emacs/site-lisp/gtags.el  

      gtags.el 也比较简单,很多配置项都写死了,没法修改,比如在跳出的 cscope 窗口中, 选择要跳转到哪一个位置, 有 2 种方式: 一个是光标移动到函数位置,按回车。另一个是用鼠标中键点击。       

       第 2 种方式是在是太奇怪了,我想把它改到鼠标左键上, 修改 xcscope.el 文件,mouse-2 改成 mouse-1 就大功告成 

      (if gtags-running-xemacs nil

          (define-key gtags-select-mode-map [mouse-3] 'gtags-pop-stack)

          ;; (define-key gtags-select-mode-map [mouse-2] 'gtags-select-tag-by-event))  leosu modify it.

          (define-key gtags-select-mode-map [mouse-1] 'gtags-select-tag-by-event))   ;;modify for left mouse;


 

 

 

 

GNU Global

GNU Global is a source code tagging system (similar to etags, ctags and idutils) that makes it possible to almost instantly find where tags/symbols are defined and referred to in the source code. Read more on http://www.gnu.org/software/global/

 https://docs.google.com/document/d/1GW8b9yU1k6gP6FWuGYpkk_W88-8TP6Ll6tYiHK7pHeQ/edit

 http://hi.baidu.com/bamboolsu/blog/item/0499861240ee47225baf5376.html?timeStamp=1337760142576

 

http://blog.csdn.net/zhengkarl/article/details/6901813

http://forum.ubuntu.org.cn/viewtopic.php?t=343460

gnu global是一个类似cscope的工具,也能提供源文件之间的交叉索引。

安装好以后,有global、gtags、gtags-cscope三个命令。global是查询,gtags是生成索引文件,gtags-cscope是与cscope一样的界面。

$ cd project/

$ gtags

这样就生成了整个目录的索引文件,包括GTAGS、GRTAGS、GPATH三个文件。

 

你也可以先用find命令生成一个文件列表,叫gtags.files,然后再执行gtags,就会只索引gtags.files里的文件。
example:

代码: $ cd project/
$ find . -name "*.[ch]" > gtags.files

$ gtags

 

 

 

After you set  (load "/usr/share/emacs/site-lisp/global/gtags.el")   in .emacs, 

M+x gtag 之后键入 Tab 后,就会提示下面的命令;

Possible completions are:

gtags-display-browser                gtags-find-file

gtags-find-pattern                       gtags-find-rtag

gtags-find-symbol                       gtags-find-tag

gtags-find-tag-by-event              gtags-find-tag-from-here

gtags-find-with-grep                   gtags-find-with-idutils

gtags-make-complete-list           gtags-mode

gtags-parse-file                           gtags-pop-stack

gtags-select-mode                      gtags-select-tag

gtags-select-tag-by-event           gtags-visit-rootdir

 

 

 

 

 

 

 

 

让Emacs功能强于Source Insight -- Step 2. gtags  

基本用法:
①下载安装gtags后,在源文件的目录中,键入"gtags -v"命令,就会生成相应文件。

[xx@localhost sys]$ gtags -v

例:source code(/usr/src/sys)       123MB

    GPATH                             1MB`GPATH'  path name database
    GTAGS                            26MB `GTAGS'  definition database
    GRTAGS                           22MB `GRTAGS' reference database
    GSYMS                            23MB`GSYMS'  symbol database
    -------------------------------------
    total of tag files               72MB

gtags的其他options的含义,请参考man手册。
(辅助: http://blog.chinaunix.net/u3/98822/showart_2129660.html


②下载安装gtags后,会有名为gtags.el的文件,注意看安装时make install的list,即可找到gtags.el的安装位置(默认目录是:/usr/local/share/gtags/)。
将gtags.el的路径设置为Emacs的<load-path>。
例:在`$HOME/.emacs'文件中加入下记代码例。

(setq load-path (cons "/home/owner/global" load-path));gtags.el load-path
(autoload 'gtags-mode "gtags" "" t);gtags-mode is true

从此启动Emacs后,及在<load-path>中load了gtags.el文件,并将gtags-mode设置为真(等同于每次启动后,都在Emacs中的M-x,手动键入gtags-mode)。

个人.emacs文件中的内容:

;##global(GNU GLOBAL source code tag system);;;;;;;;;;;;;;;;;;;;;
;to useglobalfromEmacs, you need to load the `gtags.el' and execute gtags-mode function in it.
;you need to add it to load-path. for `gtags.el'file.
;(add-to-list 'load-path "<path to gtags.el>");已经在之前的代码中load完了
(autoload 'gtags-mode "gtags" "" t);;start Emacs and execute gtags-mode function.  
(setq c-mode-hook
      '(lambda()
     (gtags-mode 1)));getinto gtags-mode whenever you getinto c-mode
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


 

③当源程序的源文件的内容变化了(导致行号变化),或追加删除了源文件等等。只要有改变,就要更新gtags生成的那4个文件。
例:source code(/usr/src/sys)

[xx@localhost sys]$ gtags-vi 
or
[xx@localhost sys]$ global-u (推荐)


 

 

 

 

 


#vim   ~/.emacs

 (load "/usr/share/emacs/site-lisp/global/gtags.el")

 (autoload 'gtags-mode "gtags" "" t)  ;gtags-mode is true

 (global-set-key (kbd "M-.") 'gtags-find-tag)

 (global-set-key (kbd "M-,") 'gtags-find-rtag)

 (global-set-key (kbd "M-g M-f") 'gtags-find-file)

 (global-set-key (kbd "M-g M-s") 'gtags-find-symbol)

 (global-set-key (kbd "M-g M-u") 'gtags-update)


 

 

hack /usr/share/emacs/site-lisp/gtags.el  

      gtags.el 也比较简单,很多配置项都写死了,没法修改,比如在跳出的 cscope 窗口中, 选择要跳转到哪一个位置, 有 2 种方式: 一个是光标移动到函数位置,按回车。另一个是用鼠标中键点击。       

       第 2 种方式是在是太奇怪了,我想把它改到鼠标左键上, 修改 xcscope.el 文件,mouse-2 改成 mouse-1 就大功告成 

      (if gtags-running-xemacs nil

          (define-key gtags-select-mode-map [mouse-3] 'gtags-pop-stack)

          ;; (define-key gtags-select-mode-map [mouse-2] 'gtags-select-tag-by-event))  leosu modify it.

          (define-key gtags-select-mode-map [mouse-1] 'gtags-select-tag-by-event))   ;;modify for left mouse;


 

 

 

 

GNU Global

GNU Global is a source code tagging system (similar to etags, ctags and idutils) that makes it possible to almost instantly find where tags/symbols are defined and referred to in the source code. Read more on http://www.gnu.org/software/global/

 https://docs.google.com/document/d/1GW8b9yU1k6gP6FWuGYpkk_W88-8TP6Ll6tYiHK7pHeQ/edit

 http://hi.baidu.com/bamboolsu/blog/item/0499861240ee47225baf5376.html?timeStamp=1337760142576

 

http://blog.csdn.net/zhengkarl/article/details/6901813

http://forum.ubuntu.org.cn/viewtopic.php?t=343460

gnu global是一个类似cscope的工具,也能提供源文件之间的交叉索引。

安装好以后,有global、gtags、gtags-cscope三个命令。global是查询,gtags是生成索引文件,gtags-cscope是与cscope一样的界面。

$ cd project/

$ gtags

这样就生成了整个目录的索引文件,包括GTAGS、GRTAGS、GPATH三个文件。

 

你也可以先用find命令生成一个文件列表,叫gtags.files,然后再执行gtags,就会只索引gtags.files里的文件。
example:

代码: $ cd project/
$ find . -name "*.[ch]" > gtags.files

$ gtags

 

 

 

After you set  (load "/usr/share/emacs/site-lisp/global/gtags.el")   in .emacs, 

M+x gtag 之后键入 Tab 后,就会提示下面的命令;

Possible completions are:

gtags-display-browser                gtags-find-file

gtags-find-pattern                       gtags-find-rtag

gtags-find-symbol                       gtags-find-tag

gtags-find-tag-by-event              gtags-find-tag-from-here

gtags-find-with-grep                   gtags-find-with-idutils

gtags-make-complete-list           gtags-mode

gtags-parse-file                           gtags-pop-stack

gtags-select-mode                      gtags-select-tag

gtags-select-tag-by-event           gtags-visit-rootdir

 

 

 

 

 

 

 

 

让Emacs功能强于Source Insight -- Step 2. gtags  

基本用法:
①下载安装gtags后,在源文件的目录中,键入"gtags -v"命令,就会生成相应文件。

[xx@localhost sys]$ gtags -v

例:source code(/usr/src/sys)       123MB

    GPATH                             1MB`GPATH'  path name database
    GTAGS                            26MB `GTAGS'  definition database
    GRTAGS                           22MB `GRTAGS' reference database
    GSYMS                            23MB`GSYMS'  symbol database
    -------------------------------------
    total of tag files               72MB

gtags的其他options的含义,请参考man手册。
(辅助: http://blog.chinaunix.net/u3/98822/showart_2129660.html


②下载安装gtags后,会有名为gtags.el的文件,注意看安装时make install的list,即可找到gtags.el的安装位置(默认目录是:/usr/local/share/gtags/)。
将gtags.el的路径设置为Emacs的<load-path>。
例:在`$HOME/.emacs'文件中加入下记代码例。

(setq load-path (cons "/home/owner/global" load-path));gtags.el load-path
(autoload 'gtags-mode "gtags" "" t);gtags-mode is true

从此启动Emacs后,及在<load-path>中load了gtags.el文件,并将gtags-mode设置为真(等同于每次启动后,都在Emacs中的M-x,手动键入gtags-mode)。

个人.emacs文件中的内容:

;##global(GNU GLOBAL source code tag system);;;;;;;;;;;;;;;;;;;;;
;to useglobalfromEmacs, you need to load the `gtags.el' and execute gtags-mode function in it.
;you need to add it to load-path. for `gtags.el'file.
;(add-to-list 'load-path "<path to gtags.el>");已经在之前的代码中load完了
(autoload 'gtags-mode "gtags" "" t);;start Emacs and execute gtags-mode function.  
(setq c-mode-hook
      '(lambda()
     (gtags-mode 1)));getinto gtags-mode whenever you getinto c-mode
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


 

③当源程序的源文件的内容变化了(导致行号变化),或追加删除了源文件等等。只要有改变,就要更新gtags生成的那4个文件。
例:source code(/usr/src/sys)

[xx@localhost sys]$ gtags-vi 
or
[xx@localhost sys]$ global-u (推荐)


 

 

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值