我从事C++项目,我在StackOverflow中浏览了Alex Ott的CEDET指南和其他关于标签的线程,但我仍然对Emacs如何与这些不同的标签系统进行交互以促进自动完成,查找定义,源代码导航感到困惑.代码库或doc-strings的预览.
有什么区别(在功能方面如)之间 etags,ebrowse,exuberant ctags,cscope,GNU Global和GTags?在Emacs中使用它们需要做什么?
如果我想使用标签导航/自动完成符号,我是否需要语义/参议员(CEDET)?
语义在这些不同的标记实用程序之上带来了什么?它如何与这些工具接口?
我的emacs版本是23.2.1虽然我使用以下内容来更改后端以使用GTAGS.(需要'semantic/db-global)(semanticdb-enable-gnu-global-databases'c-mode)(semanticdb-enable-gnu-global-databases'c ++ - mode)我试着生成一个GTAGS文件用作语义的后端.但是,每次打开C文件时,Semantic仍然在不使用GTAGS文件的情况下解析文件.
是否可以使用GTAGS文件而不是内置的语义解析器?我发现内置的解析器不是很准确.
是否可以在不指定项目范围的情况下使用GTAGS文件?在我的情况下,我试图将GTAGS文件放在/ usr/include中,这应该是emacs的标准包含路径.但是语义学并没有使用它.
根据GNU Global 文档
# Installation of GLOBAL
# It assumed that ctags command is installed in '/usr/local/bin'.
$ ./configure --with-universal-ctags=/usr/local/bin/ctags
$ make
$ sudo make install
Run Code Online (Sandbox Code Playgroud)
我需要安装GNU Global标志--with-universal-ctags=/usr/local/bin/ctags以支持universal-ctags.
正常安装GNU Global使用(根据此来源)
# normal installation
brew install global
Run Code Online (Sandbox Code Playgroud)
因为酿造配方是形式的红宝石脚本(根据brew)
#Example with Wget
class Wget < Formula
homepage "https://www.gnu.org/software/wget/"
url "https://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz"
sha256 "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd"
def install
system "./configure", "--prefix=#{prefix}"
system "make", "install"
end
end
Run Code Online (Sandbox Code Playgroud)
我应该这么做
# It assumed that ctags command is installed in …Run Code Online (Sandbox Code Playgroud) 我的gtags verion是gtags - GNU GLOBAL 5.9.2
我在这里为Gnu Global下载了一个python插件
将globalrc.example复制到〜/ .globalrc
将脚本/ python_global_tags.py复制到我的$ PATH中的〜/ bin/python_global_tags.py
在python文件的目录中输入"gtags"
没有抱怨
键入:"global -f test.py"
没有输出
但是"global -g"有效,如果它只是grep的包装,我会徘徊
我的问题是:
非常感谢,
gnu全球正在崛起,但仍然支持如此少的语言
我最近开始在emacs中使用magit包,它非常实用且方便.我想做几个调整.
如何使magit pull始终具有rebase选项?目前它显示了交换机,我必须选择-r --rebase.在我的开发过程中,我们总是反思.
我使用gtags + global进行代码浏览.在magit pull,如果我能有一个钩子再次重建gtags那将是很好的.git拉成功后有钩子吗?
我在查找类/结构定义时遇到全局问题.我可以用丰富的ctags和cscope找到它们.所有标记文件都是从同一源文件列表构建的.我配置并构建了global,et.al.,只指定了--prefix.configure确实找到了exhuberant并正在使用它.多年来我一直在定期尝试全球化,而且总是遇到这个问题.有任何想法吗?
谢谢,戴维