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

Ada*_*erg 14 emacs

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

Dav*_*ebb 20

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

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

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

相反,你可以尝试一个钩子.手册说:

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

因此,您应该能够编写一个在需要时设置次要模式的函数.查看标准挂钩列表我认为你应该尝试temp-buffer-setup-hooktemp-buffer-show-hook.

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

(add-hook 'temp-buffer-setup-hook 'my-func-to-set-mode)
Run Code Online (Sandbox Code Playgroud)