我有一个html-mode
启用的 HTML 页面。我调用函数sgml-validate
来检查任何标记错误。它基于compilation-mode
. 我想从编译输出中删除一些警告,所以我编写了一个函数并将其挂钩compilation-filter-hook
(此变量未记录,但compilation-filter
会调用它)。一切正常。我的问题是,如何确保仅在 HTML 页面(通过sgml-validate
)上开始编译过程时才调用我的过滤器函数?
我看到了两种方法,但都没有奏效:
- 首先,我可以检查 的值
major-mode
。但它总是返回compilation-mode
,因为在*compilation*
缓冲区上启用了它。(我在 的源代码中grep+
找到了一个过滤器函数,他们确实检查了 的值major-mode
。我不知道它是如何正常工作的。) - 另一个想法是仅将我的过滤器函数挂钩到 HTML 文件的缓冲区,但由于类似的原因,它无法工作,因为编译过程的输出进入单独的缓冲区。