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



在我参与的一些项目中,编译输出有一些行不是错误,而是混淆了Emacs,因为它们是相似的。

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

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

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

想法?

你可以尝试类似的东西

(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. 除了@Stefan提到的自动筛选之外,您还可以根据需要手动筛选。像*Compilation**grep*这样的缓冲区就是:缓冲区。 因此,您可以编辑它们。(对于某些此类缓冲区,您需要先关闭只读。

    然后使用flush-lineskeep-lines. next-error等做你想做的事:它们总是使用编辑过的命中列表。

    (事实上,默认情况下,*grep*等缓冲区是可写的。

  2. 如果你使用冰柱,那么你可以在编译命中或grep命中的缓冲区中使用C-c'(icicle-compilation-search)(例如 *grep* ) 浏览相应的代码。这样做的优点是可以轻松动态筛选命中,并且可以按各种排序顺序在命中的任何子集之间循环。

    在 Emacs grep 中使用它会给你两个级别的正则表达式搜索:1) 正则表达式grep和 2) 你当前的输入正则表达式(使用 C-c')。您可以使用渐进式完成 ( S-SPC ) 来添加额外的正则表达式来匹配。

最新更新