在我参与的一些项目中,编译输出有一些行不是错误,而是混淆了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
并要求一项新功能,让您以更简洁的方式指定它。
-
除了@Stefan提到的自动筛选之外,您还可以根据需要手动筛选。像
*Compilation*
和*grep*
这样的缓冲区就是:缓冲区。 因此,您可以编辑它们。(对于某些此类缓冲区,您需要先关闭只读。然后使用
flush-lines
或keep-lines
.next-error
等做你想做的事:它们总是使用编辑过的命中列表。(事实上,默认情况下,
*grep*
等缓冲区是可写的。 -
如果你使用冰柱,那么你可以在编译命中或grep命中的缓冲区中使用C-c'(
icicle-compilation-search
)(例如*grep*
) 浏览相应的代码。这样做的优点是可以轻松动态筛选命中,并且可以按各种排序顺序在命中的任何子集之间循环。在 Emacs
grep
中使用它会给你两个级别的正则表达式搜索:1) 正则表达式grep
和 2) 你当前的输入正则表达式(使用 C-c')。您可以使用渐进式完成 (S-SPC
) 来添加额外的正则表达式来匹配。