我有一个启用了
我看到两种方法,但都没有成功:
首先,我可以检查
另一个想法是只将我的过滤器函数挂钩到HTML文件的缓冲区,但由于编译过程的输出会进入单独的缓冲区,所以无法起到作用。
html-mode
的HTML页面,我调用函数sgml-validate
检查是否存在标记错误。它基于compilation-mode
实现。我想从编译输出中删除一些警告,所以我编写了一个函数,并将其挂钩到compilation-filter-hook
(这个变量没有记录,但compilation-filter
会调用它)。一切正常。我的问题是如何确保我的过滤器函数仅在我通过sgml-validate
在HTML页面上启动编译过程时才被调用?我看到两种方法,但都没有成功:
首先,我可以检查
major-mode
的值。但它总是返回compilation-mode
,因为它在*compilation*
缓冲区上启用了该模式。(我在grep+源代码中找到了一个过滤器函数,并检查了major-mode
的值。我无法弄清楚它是如何正确工作的。)另一个想法是只将我的过滤器函数挂钩到HTML文件的缓冲区,但由于编译过程的输出会进入单独的缓冲区,所以无法起到作用。
sgml-validate
返回的编译缓冲区名称。 - viam0Zahafter-advise
后, 我能否获取sgml-validate
的返回值呢?它会告诉我编译缓冲区的名称,否则我就无法在输出上运行过滤函数。 - viam0Zahinhibit-read-only
设置为t
,因为编译过程完成后,编译缓冲区会变为只读状态。 - viam0Zah