我有一个新的Linux主机上重新安装emacs的50年2月24日,开始基于新dotEmacs配置magnars emacs的配置。 既然我已经在我以前的工作流程中使用CEDET一些成功,我开始配置它。 但是,每当我打开一个C ++源文件中的一些奇怪的行为。
[这部分是解决]
正如预期的那样,语义分析所有包含的文件(与初始安装过程中进行解析指定的所有文件的语义附加系统包括变量),但它打印出是这样这样的错误信息:
WARNING: semantic-find-file-noselect called for /usr/include/c++/4.7/vector while in set-auto-mode for /usr/include/c++/4.7/vector. You should call the responsible function into 'mode-local-init-hook'.
在上面的例子被印刷在误差为STL矢量但打印用于由所述一个我探和任何后续包括包含的每个文件相应的错误消息。 因此,它需要相当长的时间来完成,不幸的是过程重复任何类型的我打开一个新的缓冲区。
[这个问题过于解决]
此外,它看起来像解析并没有真正当我把上述非-C基本类型的工作点(即不是int,双,浮法,等等),而不是在模式行的错误信息,例如打印类型的定义
Idle Service Error semantic-idle-local-symbol-highlight-idle-function: "#<buffer DEPFETResolutionAnalysis.cc> - Wrong type argument: stringp, (((0) \"IndexMap\"))" Idle Service Error semantic-idle-summary-idle-function: "#<buffer DEPFETResolutionAnalysis.cc> - Wrong type argument: stringp, ((\"fXBetween\" 0 nil nil))"
其中DEPFETResolutionAnalysis.cc是文件和缓冲区我目前正在编辑和IndexMap和fXBetween在由我编辑的文件/文件由我编辑的文件中包含一些文件包含的文件中定义的类型。
因为这个问题是非常恼人我没有测试过CEDET /语义的任何进一步的功能。 我CEDET配置,可以发现在这里 。
编辑:亚历克斯奥特的帮助下,我还挺解决了第一个问题。 这是因为我的可怕CEDET初始化。 见他的第一个答案来配置CEDET的正确方法!
仍然存在与问题Idle Service Error
(其中,使当global-semantic-idle-local-symbol-highlight-mode
,检查点的类型的定义不仅当发生永久)。
还有就是如何禁用该网站明智的init文件(S)的新的问题。
EDIT2:我已执行semantic-debug-idle-function
在问题出现时的缓冲液和它产生〜700KB [原文如此!]输出。 这看起来是一个数据容器,由它的外观,包含在解析该文件中定义的所有符号信息进行一些操作。 正如我已经解析了一个相当大包(大约20MB的源文件)此表是相当大的。 可以语义处理数据库,大型或这是不可能的,我的问题的原因是什么?
EDIT3:删除的内容~/.semanticdb
和重新分析所有包含的伎俩。 我还需要禁用该网站明智的初始化文件,但是因为这是不相关的CEDET我将关闭这个问题(相关站点明智的init文件的问题,可以发现在这里 )。