我有一个Emacs扩展,可以创建一个名为*erl-output*
的缓冲区。默认情况下,此缓冲区仅使用fundamental-mode
创建。有没有办法在该缓冲区上自动启用compilation-minor-mode
?
答案 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*
如果你真的设置了次要模式的想法)。您可以编辑模式的来源,或使用创建例程的建议......