如何制作emacs语义使用GTAGS生成的TAG文件

时间:2010-09-24 23:05:32

标签: emacs cedet emacs-semantic gnu-global

我的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文件的情况下解析文件。

  1. 是否可以使用GTAGS文件而不是内置的语义解析器?我发现内置的解析器不是很准确。

  2. 是否可以在不指定项目范围的情况下使用GTAGS文件?在我的情况下,我试图将GTAGS文件放在/ usr / include中,这应该是emacs的标准包含路径。但是语义学没有使用它。

1 个答案:

答案 0 :(得分:7)

Semantic不使用GTAGS文件生成标记,它将直接用于跳转或智能完成等功能。 GNU Global后端到语义数据库将使用GTAGS作为巨型名称表。因此,如果您需要按名称查找符号,GTAGS将告诉语义它在哪里,然后Semantic将更直接地解析这些文件以获取详细信息。

GTAGS没有直接用作替换解析器的原因是因为GTAGS中的信息不足以满足语义需要的各种操作,因为它不包括数据类型信息,参数解析和本地上下文解析。

在/ usr / include中使用gtags是一个有趣的想法,但可能不会得到太多使用。 Semantic仅搜索代码中实际使用的头文件,而不是搜索所有包含文件。 GNU Global后端专门用于扫描整个项目的符号或符号引用。如果你想搜索符号的所有包含,那么它会很有用,但目前Semantic中没有这样的功能。

可以使用ebrowse来做你想做的事情,但我发现对于C ++来说,解析器不够巧妙,并且引起了一些问题。

如果您认为语义解析器不准确,那么您应该将其作为cedet-devel邮件列表中的错误发布。