emacs

In Emacs, how to automatically enable a minor mode based on buffer name?


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?


Solution

  • 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)