Я нашел этот вопрос по этой теме, но есть ли способ [в emacs] установить второстепенный режим (или его список) на основе расширения? Например, довольно легко узнать, что основные режимы можно манипулировать так:
(setq auto-mode-alist
(cons '("\\.notes$" . text-mode)
auto-mode-alist))
и то, что я идеально хотел бы сделать, это
(setq auto-minor-mode-alist
(cons '("\\.notes$" . auto-fill-mode)
auto-minor-mode-alist))
В ответе на ответ связанного вопроса упоминаются перехватчики, в частности temp-buffer-setup-hook
. Чтобы использовать это, вам нужно добавить функцию на крючок, например:
(add-hook 'temp-buffer-setup-hook 'my-func-to-set-minor-mode)
Мой вопрос в два раза:
- Есть ли более простой способ сделать это, подобно основным режимам?
- Если нет, как бы написать функцию для крючка?
- Он должен проверить путь к файлу относительно регулярного выражения.
- Если он соответствует, активируйте нужный режим (например,
auto-fill-mode
).
Ошибка и ошибка при решении:
; Enables the given minor mode for the current buffer it it matches regex
; my-pair is a cons cell (regular-expression . minor-mode)
(defun enable-minor-mode (my-pair)
(if (buffer-file-name) ; If we are visiting a file,
; and the filename matches our regular expression,
(if (string-match (car my-pair) buffer-file-name)
(funcall (cdr my-pair))))) ; enable the minor mode
; used as
(add-hook 'temp-buffer-setup-hook
(lambda () (enable-minor-mode ("\\.notes$" . auto-fill-mode))))