从emacs编译缓冲区中删除误报

3
在我所工作的一些项目中,编译输出会有一些不是错误但却让Emacs感到困惑的行。
这些误报的信息在我使用“next-error”时非常不方便,并且由于它们被标记为错误而分散了视觉注意力。
我可以制作一个正则表达式来过滤掉这些误报的信息。但我想要避免深入处理compile.el内置的正则表达式,因为它们相当复杂,更重要的是它们可能会在Emacs升级时发生变化。
所以我希望有一种方法可以告诉compile.el哪些正则表达式是误报的信息(也许可以使用“compilation-filter-hook”),以便它们不会被标记为错误。
您有什么建议吗?
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 命令并请求添加一个新特性,让你可以以更简洁的方式指定它。


1
  1. 除了@Stefan提到的自动过滤外,您还可以根据需要手动进行过滤。像* Compilation ** grep *这样的缓冲区只是缓冲区。因此,您可以编辑它们。(对于某些这样的缓冲区,您需要先关闭只读模式。)

    然后使用flush-lineskeep-linesnext-error等始终使用已编辑的命中列表。

    (实际上,默认情况下,像* grep *这样的缓冲区是可写的。)

  2. 如果您使用Icicles,则可以在编译命中或grep命中的缓冲区(例如* grep *)中使用C-c `(icicle-compilation-search)浏览相应的代码。这有一个优点,即易于动态过滤命中,并且可以在各种排序顺序中循环遍历任何子集。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接