tags:

views:

498

answers:

2

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?

+8  A: 

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)
Dave Webb
Yes, that is exactly the problem I have. :-)
Adam Lindberg
@Adam - I've updated my answer to cover Hooks as well as auto-mode-alist; hopefully they'll work for you.
Dave Webb
I tried enabling the major mode with no success. In .emacs I put:`(add-to-list 'auto-mode-alist '("^\\*erl-output\\*$" . compilation-mode))`It is not created with `compilation-mode`. If I manually create a buffer with `(get-buffer-create "*erl-output*") the mode still doesn't get set
Adam Lindberg
Any luck with with hooks?
Dave Webb
Did get it to work finally, but I have to maintain patches against the original package. I've notified the authors as to include them. Thanks for your help!
Adam Lindberg
+4  A: 

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...

Trey Jackson
`compilation-mode` seems to make the buffer read only. The extension writes to the buffer occasionally.
Adam Lindberg
Ah, that'd be a good reason, thanks.
Trey Jackson