在我工作的一些项目中,编译输出有一些不是错误的行,但是因为它们很相似而混淆了Emacs。
当我使用next-error
时,这些误报非常不方便,并且因为它们被误认为是错误而在视觉上分散注意力。
我可以制作一个过滤掉这些误报的正则表达式。我想避免的是搞乱compile.el内置的regexp;它们非常复杂,更重要的是它们可能会在Emacs升级中发生变化。
所以我正在寻找的方法是告诉compile.el什么正则表达式是误报(可能使用compilation-filter-hook
)所以它们不会被标记为错误。
想法?
答案 0 :(得分: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-lines
或keep-lines
。 next-error
等完成您想要的任务:它们始终使用经过编辑的命中列表。
(事实上,*grep*
等缓冲区默认是可写的。)
如果使用Icicles,则可以在编译命中或grep命中(例如*grep*
)的缓冲区中使用C-c`(icicle-compilation-search
)来浏览相应的代码。这样做的优点是可以轻松地动态过滤命中,并且可以按各种排序顺序在它们的任何子集之间循环。
在Emacs grep
中使用它可以为您提供两个级别的正则表达式搜索:1)grep
正则表达式和2)您当前的输入正则表达式(使用C-c`)。您可以使用渐进式完成(S-SPC
)添加其他正则表达式来匹配。