在Emacs中,如何根据缓冲区名称自动启用次模式?

时间:2009-08-19 11:05:50

标签: emacs

我有一个Emacs扩展,可以创建一个名为*erl-output*的缓冲区。默认情况下,此缓冲区仅使用fundamental-mode创建。有没有办法在该缓冲区上自动启用compilation-minor-mode

2 个答案:

答案 0 :(得分:20)

要自动更改主要模式,您可以将以下内容添加到.emacs文件中:

(add-to-list 'auto-mode-alist '("^\\*erl-output\\*$" . my-major-mode))

这对你不起作用;这是主要模式选择,你是在次要模式选择之后。

相反,您可以尝试Hook。手册说:

  

一个钩子是一个Lisp变量,它包含一个函数列表,可以在一些明确定义的场合调用。

因此,您应该能够编写一个在需要时设置次要模式的函数。查看List of Standard Hooks我认为您应该尝试temp-buffer-setup-hook or temp-buffer-show-hook

您必须编写一个函数来检查缓冲区名称并根据需要设置模式,并使用.emacs中的以下内容将其添加到钩子中:

(add-hook 'temp-buffer-setup-hook 'my-func-to-set-mode)

答案 1 :(得分:4)

由于您的扩展程序正在创建缓冲区,为什么不添加:

(compilation-mode)
在创建(compilation-minor-mode)缓冲区的代码中,

(或*erl-output*如果你真的设置了次要模式的想法)。您可以编辑模式的来源,或使用创建例程的建议......