8

我已经使用 CEDET 1.0 和 ECB 2.40 设置了 emacs 23.1.50.1(很大程度上受到了http://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-cedet.el上的 Alex Otts 设置的启发和他对 Cedet 的温和介绍(http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html),感谢 Alex)。它工作得很好,但我需要更多地了解在处理多个项目时如何处理代码完成和符号引用。

我创建了一个简单的 ede 项目,如下所示:

(ede-cpp-root-project "test"
                      :file "~/src/sw/anchor"
                      :include-path '("/Common")
                      :system-include-path '("~/include"))

加载此项目时,Semantic 是否只会在项目配置中指定的各个目录中查找完成?

我按照http://mmmyddd.freeshell.net/blog/Computer/Emacs/usecscopesemanticdbbackend使用 cscope 作为语义数据库的后端。我可以运行 semanticdb-enable-cscope-in​​-buffer 而没有 emacs 抛出任何错误,但我不知道语义是否使用我的数据库。我是否也可以在我的项目定义中添加对 cscope.out 的引用,以便更好地控制在当前上下文中搜索引用的文件?

几个奇怪的地方:

当我尝试打开一个新的源文件时,我收到错误“应用:搜索程序:没有这样的文件或目录,全局”并且没有任何反应。如果我尝试再次打开它,一切都很好。

当我尝试通过指向锚文件来加载项目时,出现此错误:“if: Wrong type argument: class-p, ede-cpp-root”

4

1 回答 1

5

当您在配置中遇到错误时,最好的办法是:

M-x toggle-debug-on-error RET

并获取指向问题区域的堆栈跟踪。通常这有助于识别配置问题。

CEDET 将尝试将每个文件与单个项目相关联,并且在该缓冲区中操作的所有命令都将限制在该项目的范围内。对于 CScope 支持,它也将使用 EDE 来识别根目录,这将有助于找到 cscope.out 文件,这与完成工具和参考工具有关。

当然,例外情况是系统包含路径,通常是 /usr/include 或其他。这是对使用 GCC 支持计算的默认系统包含路径的扩充。在您的 C 文件之一中,您可以执行以下操作:

M-x semantic-c-describe-environment RET

这应该显示语义将尝试使用什么。

要仔细检查 CScope 是否用于代码完成,您可以检查:

M-x semanticdb-find-test-translate-path RET

并检查列表末尾的某些 CScope 事物。

于 2010-10-21T01:37:29.733 回答