Как автоматически загрузить режим для определенного набора расширений файлов?

18

Я хотел бы загрузить yaml-modeдля любых файлов с именем *.ymlили *.yaml.

b4hand
источник
7
Прочитайте Elisp вручную, узелAuto Major Mode , и вы сможете ответить на свой вопрос: auto-mode-alist. О, я вижу, вы сделали это через 10 секунд после того, как отправили вопрос. Может быть, это не очень хорошая идея, чтобы прокачать Q & A из руководства таким образом. Но я думаю, что это вопрос, который возникнет у людей, и ответ поможет им. Жаль, что они будут учить это таким образом, вместо того, чтобы учиться у самого Emacs. Лучше научить людей, как найти такие ответы, ИМО.
Дрю
1
Не стесняйтесь добавлять это как ответ. Я задал этот вопрос, потому что этот вопрос я решал в прошлом, и он был очень похож на предложенный вопрос в списке area51.
b4hand
1
Нет проблем. Извините, если я звучал отрицательно. Как я уже говорил, вопрос и ответ будет помогать людям.
Дрю
Что бы это ни стоило, это очень похоже на вопрос, который был задан на этапе предложения в области 51: area51.stackexchange.com/proposals/76571/emacs/76640#76640
b4hand
Нет ничего плохого в том, чтобы задавать такой вопрос. Мой комментарий изначально был только первым предложением. ИМО, для людей полезно иметь привычку сначала спрашивать сам Emacs, а потом - SE. Emacs немного помогает пользователям в этом - это не обычная тема SE. Но пользователям часто нужна помощь в изучении Emacs.
Дрю

Ответы:

16

Добавьте эти строки в ваш .emacsфайл:

(require 'yaml-mode)
(add-to-list 'auto-mode-alist '("\\.ya?ml\\'" . yaml-mode))

Это auto-mode-alistпеременная, с которой emacs обращается при открытии нового файла. Вы можете добавить сопоставления между шаблонами имен файлов и основными режимами.

Вы можете узнать больше о том, как Emacs определяет, какие режимы загружать для данного буфера, из руководства Emacs .

b4hand
источник
4
"\\. ya? ml \\ '" является предпочтительной формой, так как это действительно конец строки, а не перевод строки. Это на самом деле имеет значение для файла, в имени которого есть новая строка ... 'foo.yaml \ nc' должен быть действительно файлом C, а не файлом yaml (да, это маловероятно, что это когда-либо случится, но все же)
Сигма
2
Было бы полезно, если бы вы также связались с руководством по emacs, где приведена эта информация.
Тревок
Также нет (require 'yaml-mode)необходимости, если режим загружается автоматически (что почти всегда так). Библиотека будет автоматически загружена при открытии файла с правильным расширением файла.
Шости
Поскольку он yaml-modeбыл установлен как пакет, мне определенно нужна была (require 'yaml-mode)строка; в противном случае, я хотел бы видеть следующее сообщение об ошибке: File mode specification error: (void-function yaml-mode).
b4hand