3

在我从事的一些项目中,编译输出有一些不是错误的行,但由于它们相似,因此使 Emacs 感到困惑。

那些误报在我使用时非常不方便next-error,并且还会分散视觉注意力,因为它们被字体化为错误。

我可以制作一个正则表达式来过滤掉那些误报。我想避免的是弄乱 compile.el 中内置的正则表达式;它们非常复杂,更重要的是它们可能会在 Emacs 升级中发生变化。

所以我正在寻找一种方法来告诉 compile.el 什么正则表达式是误报(可能使用compilation-filter-hook),因此它们不会被标记为错误。

想法?

4

2 回答 2

2

你可以尝试类似的东西

(add-hook 'compilation-mode-hook
          (lambda ()
            (font-lock-add-keywords nil
               '(("my-regexp"
                  (0 '(face nil font-lock-face nil
                       compilation-message nil help-echo nil mouse-face nil) t)))
               'append)))

这是丑陋而脆弱的,因此您可能想要M-x report-emacs-bug并要求一个新功能,让您以更清晰的方式指定它。

于 2013-11-08T13:54:58.217 回答
1
  1. 除了@Stefan 提到的自动过滤之外,您还可以根据需要手动过滤。诸如*Compilation*和之*grep*类的缓冲区就是:缓冲区。因此,您可以编辑它们。(对于某些此类缓冲区,您需要先关闭只读。)

    然后使用flush-linesor keep-linesnext-error等做你想做的事:他们总是与编辑的点击列表一起工作。

    (事实上​​,诸如此类的缓冲区在*grep*默认情况下是可写的。)

  2. 如果您使用Iciclesicicle-compilation-search ,那么您可以在编译命中或 grep 命中(例如)的缓冲区中使用 Cc ` ( *grep*) 来浏览相应的代码。这样做的好处是很容易动态过滤命中,并且您可以在它们的任何子集之间以各种排序顺序循环。

    将此与 Emacs 一起使用grep可为您提供两个级别的正则表达式搜索:1)正则grep表达式和 2)您当前的输入正则表达式(使用 Cc `)。您可以使用渐进式完成 ( S-SPC) 添加额外的正则表达式来匹配。

于 2013-11-08T17:52:05.603 回答