我必须使用C / C ++构建环境来删除整个地方的中间文件:
.i
包含C预处理器输出的文件(大致是原始C).s
包含C-assembler输入的文件 CEDET(我假设语义分析器)最终找到这些文件并尝试索引它们。这导致跳转到包含原始C的.i
文件以进行定义,并且通常会减慢.semanticdb的解析和加载速度。
我从不在emacs中打开这些文件,因此它们必须由后台分析器加载。
是否可以阻止分析仪加载这些文件?我找不到任何配置选项来定义后台分析器解析的文件类型。
答案 0 :(得分:2)
如果这些文件从不需要C模式,可以快速修复:
(add-to-list 'auto-mode-alist '("\\.i\\'" . fundamental-mode))
(add-to-list 'auto-mode-alist '("\\.s\\'" . fundamental-mode))
答案 1 :(得分:0)
abo-abo的答案给了我所需的线索。 grep
的{{1}}实现(由EDE使用)使用semantic-symref-perform-search
来查找给定语义模式的匹配文件(基于当前缓冲区的模式 - 例如`c-mode )当试图解决符号时。
我使用的最终修复是使用:
专门消除auto-mode-alist
中的默认条目
auto-mode-alist
按照abo-abo的建议添加
(delete '("\\.i\\'" . c-mode) auto-mode-alist)
(delete '("\\.ii\\'" . c++-mode) auto-mode-alist)
条目似乎也有效,但是我担心由于fundamental-mode
条目仍在列表中,因此实施中的更改可能会导致重新激活它们。