#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:
$ 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
(辅助: 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文件中的内容:
;##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:
$ 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
(辅助: 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文件中的内容:
;##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 (推荐)