Jak automatycznie załadować tryb dla określonego zestawu rozszerzeń plików?

19

Chciałbym załadować yaml-modedla wszystkich plików o nazwie *.ymllub *.yaml.

b4hand
źródło
7
Przeczytać Elisp ręczny, węzełAuto Major Mode , i będzie w stanie odpowiedzieć na własne pytanie: auto-mode-alist. Och, widzę, że to zrobiłeś, 10 sekund po opublikowaniu pytania. Może nie jest to dobry pomysł, aby w ten sposób pompować pytania i odpowiedzi z instrukcji. Ale wydaje mi się, że to pytanie przydarzy się ludziom, a odpowiedź im pomoże. Szkoda, że ​​nauczą się tego w ten sposób, zamiast uczyć się od samego Emacsa. Lepiej uczyć ludzi, jak znaleźć takie odpowiedzi, IMO.
Drew
1
Dodaj to jako odpowiedź. Zadałem to pytanie, ponieważ rozwiązałem je w przeszłości i było bardzo podobne do proponowanego pytania z listy area51.
b4hand
1
Nie ma problemu. Przepraszam, jeśli zabrzmiało to negatywnie. Jak powiedziałem, pytanie i odpowiedź będzie pomagać ludziom.
Drew
Jeśli chodzi o to, co jest warte, jest to bardzo podobne do pytania zadanego podczas fazy składania wniosku w sprawie area51: area51.stackexchange.com/propozycje/76571/emacs/76640#76640
b4hand
Nie ma nic złego w zadaniu takiego pytania. Mój komentarz był pierwotnie tylko pierwszym zdaniem. IMO dobrze jest, aby ludzie przyzwyczaili się najpierw pytać samego Emacsa, a drugiego SE. Emacs jest trochę wyjątkowy w pomaganiu użytkownikom w ten sposób - to nie jest twój średni temat SE. Ale użytkownicy często potrzebują pomocy w nauce, jak zapytać Emacsa.
Drew

Odpowiedzi:

16

Dodaj następujące wiersze do .emacspliku:

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

auto-mode-alistJest zmienną, która emacs konsultuje gdy nowy plik zostanie otwarty. Możesz dodać odwzorowania między wzorcami nazw plików i trybami głównymi.

Możesz dowiedzieć się więcej o tym, jak Emacs określa, które tryby załadować dla danego bufora, z podręcznika Emacsa .

b4hand
źródło
4
„\\. ya? ml \\” ”jest preferowaną formą, ponieważ tak naprawdę jest to koniec ciągu, a nie nowa linia. To naprawdę robi różnicę dla pliku, który ma nową linię w nazwie ... 'foo.yaml \ nc' powinien naprawdę być plikiem C, a nie plikiem yaml (tak, to raczej mało prawdopodobne, że to się kiedykolwiek zdarzy, ale nadal)
Sigma
2
Przydałoby się również link do podręcznika emacs, w którym podano te informacje.
Trevoke,
Również nie (require 'yaml-mode)jest konieczne, jeśli tryb jest ładowany automatycznie (co prawie zawsze ma miejsce). Biblioteka zostanie automatycznie załadowana po otwarciu pliku z poprawnym rozszerzeniem.
shosti
Ponieważ yaml-modezostał zainstalowany jako pakiet, zdecydowanie potrzebowałem (require 'yaml-mode)linii; w przeciwnym razie, chciałbym zobaczyć następujący błąd: File mode specification error: (void-function yaml-mode).
b4hand