我有一个HTML页面,启用了html-mode。我调用函数sgml-validate来检查任何标记错误。它是基于compilation-mode的。我想从编译输出中删除一些警告,所以我编写了一个函数并将其连接到compilation-filter-hook (这个变量没有文档化,但是compilation-filter调用它)。一切都正常。我的问题是,如何确保我的过滤器函数只有在我在HTML页面上(通过sgml-validate)开始编译过程时才会被调用?
我看到了两种方法,但没有一种奏效:
major-mode的值。但是它总是返回compilation-mode,因为这是在*compilation*缓冲区上启用的。(我在source code of grep+中找到了一个过滤器函数,他们确实检查了major-mode的值。我不知道它是如何工作的,correctly.)发布于 2009-05-13 11:10:41
同时,我发现compilation-start接受一个可选的参数mode,这将是编译缓冲区的主要模式。因此,我可以创建一个从compilation-mode派生的主要模式,并在那里定义我的过滤器函数,现在连接到适当的缓冲区。
唯一的问题是,现在sgml-validate不允许我在compilation-start上设置mode参数,但这是另一个问题。
(当然,我不认为这是最终的解决方案。)
https://stackoverflow.com/questions/857098
复制相似问题