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

从emacs编译缓冲区中删除误报,emacs,compilation,elisp,Emacs,Compilation,Elisp,在我从事的一些项目中,编译输出有一些行不是错误,但会混淆Emacs,因为它们是相似的 当我使用下一个错误时,这些误报非常不方便,而且由于它们被视为错误而分散视觉注意力 我可以生成一个正则表达式来过滤掉那些误报。我想避免的是弄乱compile.el中内置的regexp;它们非常复杂,更重要的是,它们可能会在Emacs升级中发生变化 所以我要寻找的是一种告诉compile.el什么regexp是误报的方法(可能使用编译过滤器钩子),这样它们就不会被标记为错误 想法?你可以尝试以下方法 (add-ho

在我从事的一些项目中,编译输出有一些行不是错误,但会混淆Emacs,因为它们是相似的

当我使用
下一个错误时,这些误报非常不方便,而且由于它们被视为错误而分散视觉注意力

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

所以我要寻找的是一种告诉compile.el什么regexp是误报的方法(可能使用
编译过滤器钩子
),这样它们就不会被标记为错误


想法?

你可以尝试以下方法

(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报告emacs bug
,并要求提供一个新特性,让您以更清晰的方式指定它

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

    然后使用
    刷新行
    保留行
    <代码>下一个错误
  • 等等。做你想做的事情:他们总是处理编辑好的点击列表

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

  • 如果使用,则可以在编译命中或grep命中的缓冲区中使用C-C`()(例如,
    *grep*
    )来浏览相应的代码。这样做的优点是很容易动态过滤点击,并且您可以按各种排序顺序在点击的任何子集之间循环

    将它与Emacs
    grep
    一起使用,可以提供两个级别的regexp搜索:1)
    grep
    regexp和2)当前输入regexp(使用C-C`)。您可以使用渐进式完成(
    S-SPC
    )来添加额外的regexp以进行匹配