防止CEDET语义解析某些文件类型

时间:2014-12-05 04:54:40

标签: c emacs cedet

我必须使用C / C ++构建环境来删除整个地方的中间文件:

  • .i包含C预处理器输出的文件(大致是原始C)
  • .s包含C-assembler输入的文件

CEDET(我假设语义分析器)最终找到这些文件并尝试索引它们。这导致跳转到包含原始C的.i文件以进行定义,并且通常会减慢.semanticdb的解析和加载速度。

我从不在emacs中打开这些文件,因此它们必须由后台分析器加载。

是否可以阻止分析仪加载这些文件?我找不到任何配置选项来定义后台分析器解析的文件类型。

2 个答案:

答案 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条目仍在列表中,因此实施中的更改可能会导致重新激活它们。