我已经使用 CEDET 1.0 和 ECB 2.40 设置了 emacs 23.1.50.1(很大程度上受到 Alex Otts 设置的启发)http://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-cedet.el以及他对 Cedet 的温柔介绍(http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html),谢谢亚历克斯)。它工作得很好,但我需要更多地了解在处理多个项目时如何处理代码完成和符号引用。
我创建了一个简单的 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不会抛出任何错误,但我不知道semantic是否使用我的数据库。我是否可以在项目定义中添加对 cscope.out 的引用,以便更好地控制在当前上下文中搜索引用的文件?
有几个奇怪的地方:
当我尝试打开新的源文件时,出现错误“应用:搜索程序:没有这样的文件或目录,全局”并且没有任何反应。如果我尝试再次打开它,一切都会很好。
当我尝试通过指向锚文件来加载项目时,出现此错误:“if:错误的类型参数:class-p,ede-cpp-root”
当您的配置出现错误时,最好的做法是:
M-x toggle-debug-on-error RET
并获取指向问题区域的堆栈跟踪。通常这有助于识别配置问题。
CEDET 将尝试将每个文件与单个项目相关联,并且在该缓冲区中操作的所有命令都将限制在该项目的范围内。对于 CScope 支持,它也将使用 EDE 来识别根目录,这将有助于查找 cscope.out 文件,这与完成和参考工具相关。
当然,例外的是系统包含路径,通常是 /usr/include 或其他路径。这是对默认系统包含路径的增强,该路径是通过 GCC 支持计算的。在您的 C 文件之一中,您可以执行以下操作:
M-x semantic-c-describe-environment RET
这应该显示 Semantic 将尝试使用什么。
要仔细检查 CScope 是否用于代码完成,您可以使用以下命令进行检查:
M-x semanticdb-find-test-translate-path RET
并检查列表末尾是否有一些 CScope 内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)