用了一下 emacs 自带的 tags,发现不是很方便,经常会找不到符号,可能我没有掌握要领吧,所以又在网上搜罗了另外一种类似 source insight 的 GNU GLOBAL system,初试了一下感觉还不错,下面记录一下使用过程吧。
安装:
然后配置 emacs:
用法:
安装:
直接解压源码,然后 ./configure; make; make install---------》ok
然后配置 emacs:
随便创建一个目录, 如 ~/lisp, 将 gtags.el 放入该目录,然后编辑 ~/.emacs 文件
(setq load-path (cons "~/lisp" load-path));;意思是将 ~/lisp 加入 load-path
(setq load-path (cons "~/lisp" load-path));;意思是将 ~/lisp 加入 load-path
load-path 是 emacs 查找命令的目录列表,就像 linux 中的 PATH 环境变量
(autoload 'gtags-mode "gtags" "" t)
自动装载 gtags-mode 模式
运行 emacs 后直接 m-x gtags-mode就可以用 GLOBAL 了
如果想以开启 C-mode 就装载 gtags-mode 可以加入以下代码:
(setq c-mode-hook
'(lambda ()
(gtags-mode 1)))
(autoload 'gtags-mode "gtags" "" t)
自动装载 gtags-mode 模式
运行 emacs 后直接 m-x gtags-mode就可以用 GLOBAL 了
如果想以开启 C-mode 就装载 gtags-mode 可以加入以下代码:
(setq c-mode-hook
'(lambda ()
(gtags-mode 1)))
用法:
首先要建立几个文件,用作 global 的索引,进入所在代码的根目录,在命令行敲入
[xxx]$ etags
则 global 会递归代码中所有目录,生成 GPATH, GRTAGS, GSYMS, GTAGS
[xxx]$ etags
则 global 会递归代码中所有目录,生成 GPATH, GRTAGS, GSYMS, GTAGS
- gtags-find-tag (已经与 m-. 进行了绑定), 用来搜索函数或宏定义,不能搜索变量
- gtags-find-rtag 用来查找 tag 以及 tag reference(引用),同时给出一个列表,像 source insight 一样
- gtags-select-mode 用来指定上面 rtag 的行数
- gtags-find-tag-from-here 最全面了,好像只要是 symbol 它都给你标出来,像 rtag 一样列出来,这个也不用手动去输入字符,光标指向那个字符串就查找哪个字符串
- gtags-find-with-grep 用正则表达式查找字符串
- 其实 gtags-find-tag 也支持 POSIX 正则表达式。。。