Подтвердить что ты не робот

В Emacs, как автоматически включить второстепенный режим на основе имени буфера?

У меня есть расширение Emacs, которое создает буфер с именем *erl-output*. Этот буфер создается по умолчанию только с помощью fundamental-mode. Есть ли способ автоматически включить compilation-minor-mode в этом буфере?

4b9b3361

Ответ 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*. Вы можете отредактировать источник для этого режима или использовать совет вокруг процедуры создания...