¿Cómo cargo automáticamente un modo para un conjunto específico de extensiones de archivo?

17

Me gustaría cargar el yaml-modepara cualquier archivo llamado *.ymlo *.yaml.

b4hand
fuente
77
Lea la Elisp manual, nodoAuto Major Mode , y usted será capaz de responder a su propia pregunta: auto-mode-alist. Oh, veo que hiciste eso, 10 segundos después de que publicaste la pregunta. Tal vez no sea una buena idea extraer preguntas y respuestas del manual de esta manera. Pero supongo que es una pregunta que se le ocurrirá a la gente, y la respuesta les ayudará. Lástima que lo aprendan de esta manera, en lugar de aprenderlo de Emacs. Es mejor enseñar a las personas cómo encontrar esas respuestas, en mi opinión.
Dibujó
1
Siéntase libre de agregar esto como respuesta. Hice esta pregunta porque fue una que resolví en el pasado, y era muy similar a una pregunta propuesta en la lista del área51.
b4hand
1
No hay problema. Lo siento si sonaba negativo. Como ya he dicho, la pregunta y la respuesta será ayudar a la gente.
Dibujó el
Por lo que vale, esto es muy similar a una pregunta que se hizo durante la fase de propuesta en area51: area51.stackexchange.com/proposals/76571/emacs/76640#76640
b4hand
No hay nada de malo en hacer esa pregunta. Mi comentario fue originalmente solo la primera oración. En mi opinión, es bueno que la gente se acostumbre a preguntar primero a Emacs y a SE en segundo lugar. Emacs es un poco especial para ayudar a los usuarios de esta manera, no es el tema promedio de SE. Pero los usuarios a menudo necesitan ayuda para aprender a preguntarle a Emacs.
Dibujó

Respuestas:

15

Agregue estas líneas a su .emacsarchivo:

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

La auto-mode-alistes una variable que emacs consulta cada vez que se abre un nuevo archivo. Puede agregar asignaciones entre patrones de nombre de archivo y modos principales.

Puede encontrar más información sobre cómo Emacs determina qué modos cargar para un búfer dado en el manual de Emacs .

b4hand
fuente
44
"\\. ya? ml \\ '" es la forma preferida, ya que es realmente el final de la cadena, no una nueva línea. Realmente hace una diferencia para los archivos que tienen una nueva línea en su nombre ... 'foo.yaml \ nc' realmente debería ser un archivo C, no un archivo yaml (sí, es poco probable que esto suceda, pero aún así)
Sigma
2
Sería útil si también se vinculara al manual de emacs donde se proporciona esta información.
Trevoke
Además, (require 'yaml-mode)es innecesario si el modo se carga automáticamente (que es casi siempre el caso). La biblioteca se cargará automáticamente cuando abra un archivo con la extensión de archivo correcta.
shosti
Como yaml-modese instaló como un paquete, definitivamente necesitaba la (require 'yaml-mode)línea; de lo contrario, me gustaría ver el siguiente error: File mode specification error: (void-function yaml-mode).
b4hand