У меня есть расширение Emacs, которое создает буфер с именем *erl-output*
. Этот буфер создается по умолчанию только с помощью fundamental-mode
. Есть ли способ автоматически включить compilation-minor-mode
в этом буфере?
В Emacs, как автоматически включить второстепенный режим на основе имени буфера?
Ответ 1
Для автоматического изменения основных режимов вы можете добавить следующее в ваш файл .emacs:
(add-to-list 'auto-mode-alist '("^\\*erl-output\\*$" . my-major-mode))
Это не сработает для вас; это для выбора основного режима, и после выбора второстепенного режима.
Вместо этого вы можете попробовать Hook. В руководстве написано:
Крюк - это переменная Lisp, которая содержит список функций, которые должны быть вызваны в определенном случае.
Таким образом, вы должны иметь возможность написать функцию, которая при необходимости устанавливает малый режим. Глядя на Список стандартных крючков Я думаю, вы должны попробовать temp-buffer-setup-hook
или temp-buffer-show-hook
.
Вам нужно будет написать функцию, которая проверяет имя буфера и задает режим, если это необходимо, и добавьте его на крючок, используя в вашем .emacs
:
(add-hook 'temp-buffer-setup-hook 'my-func-to-set-mode)
Ответ 2
Поскольку ваше расширение создает буфер, почему бы просто не добавить:
(compilation-mode)
(или (compilation-minor-mode)
, если вы действительно настроены на идею второстепенного режима) в коде, создающем буфер *erl-output*
. Вы можете отредактировать источник для этого режима или использовать совет вокруг процедуры создания...