In Emacs, how to automatically enable a minor mode

2020-06-03 01:13发布

I have a Emacs extension that creates a buffer named *erl-output*. This buffer gets created with only fundamental-mode by default. Is there any way to automatically enable compilation-minor-mode on that buffer?

标签: emacs
2条回答
倾城 Initia
2楼-- · 2020-06-03 01:16

Since your extension is creating the buffer, why not just add:

(compilation-mode)

(or (compilation-minor-mode) if you're really set on the minor mode idea) in the code that's creating the *erl-output* buffer. You can edit the source for the mode, or use advice around the creation routine...

查看更多
走好不送
3楼-- · 2020-06-03 01:31

To automatically change major modes you can add the following to your .emacs file:

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

This won't work for you; it's for major mode selection and you're after minor mode selection.

Instead you could try a Hook. The manual says:

A hook is a Lisp variable which holds a list of functions, to be called on some well-defined occasion.

So you should be able to write a function which sets the minor mode when required. Looking at the List of Standard Hooks I think you should be trying temp-buffer-setup-hook or temp-buffer-show-hook.

You'll have to write a function which checks the buffer name and sets the mode if required, and add it to the hook using something like the following in your .emacs:

(add-hook 'temp-buffer-setup-hook 'my-func-to-set-mode)
查看更多
登录 后发表回答