【问题标题】:Removing false positives from emacs compilation buffer从 emacs 编译缓冲区中删除误报
【发布时间】:2013-11-08 11:12:25
【问题描述】:

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

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

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

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

想法?

【问题讨论】:

    标签: emacs compilation elisp


    【解决方案1】:

    你可以试试

    (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 并要求一个新功能,让你以更简洁的方式指定它。

    【讨论】:

      【解决方案2】:
      1. 除了@Stefan 提到的自动过滤之外,您还可以根据需要手动过滤。 *Compilation**grep* 这样的缓冲区就是:buffers。因此,您可以编辑它们。 (对于某些此类缓冲区,您需要先关闭只读。)

        然后使用flush-lineskeep-linesnext-error 等做你想做的事:他们总是使用编辑的命中列表。

        (其实*grep*这样的缓冲区过去默认是可写的。)

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

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

      【讨论】:

        猜你喜欢
        • 2012-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-31
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        相关资源
        最近更新 更多