【问题标题】:How to make emacs Semantic use the TAG file generated by GTAGS如何让emacs Semantic使用GTAGS生成的TAG文件
【发布时间】:2011-04-17 00:55:11
【问题描述】:

我的 emacs 版本是 23.2.1 尽管我使用以下内容将后端更改为使用 GTAGS。 (需要'语义/数据库全局) (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 的标准包含路径。但是 Semantics 没有使用它。

【问题讨论】:

    标签: emacs cedet emacs-semantic gnu-global


    【解决方案1】:

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

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

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

    可以使用ebrowse来做你想做的事,但是我发现对于C++来说,解析器在细微的地方是不够的,并且导致了一些问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      相关资源
      最近更新 更多