Bagaimana cara memuat mode secara otomatis untuk satu set ekstensi file tertentu?

17

Saya ingin memuat yaml-modefile yang bernama *.ymlatau *.yaml.

B4hand
sumber
7
Baca Elisp manual, simpulAuto Major Mode , dan Anda akan dapat menjawab pertanyaan Anda sendiri: auto-mode-alist. Oh, saya melihat Anda melakukannya, 10 detik setelah Anda memposting pertanyaan. Mungkin bukan ide yang baik untuk memompa Tanya Jawab dari manual dengan cara ini. Tapi saya kira itu adalah pertanyaan yang akan terjadi pada orang-orang, dan jawabannya akan membantu mereka. Sayang sekali mereka akan mempelajarinya dengan cara ini, bukannya belajar dari Emacs sendiri. Lebih baik mengajari orang bagaimana menemukan jawaban seperti itu, IMO.
Drew
1
Jangan ragu untuk menambahkan ini sebagai jawaban. Saya mengajukan pertanyaan ini karena itu adalah salah satu yang saya pecahkan di masa lalu, dan itu sangat mirip dengan pertanyaan yang diajukan dalam daftar area51.
tangani
1
Tidak masalah. Maaf jika saya terdengar negatif. Seperti yang saya katakan, pertanyaan dan jawabannya akan membantu orang.
Drew
Untuk apa nilainya, ini sangat mirip dengan pertanyaan yang diajukan selama fase proposal pada area51: area51.stackexchange.com/proposals/76571/emacs/76640#76640
b4hand
Tidak ada yang salah dengan mengajukan pertanyaan seperti itu. Komentar saya awalnya hanya kalimat pertama. IMO, itu baik bagi orang-orang untuk terbiasa bertanya pada Emacs sendiri terlebih dahulu, dan meminta SE kedua. Emacs sedikit istimewa dalam membantu pengguna dengan cara ini - ini bukan topik SE rata-rata Anda. Tetapi pengguna sering membutuhkan bantuan belajar bagaimana cara menanyakan Emacs.
Drew

Jawaban:

15

Tambahkan baris ini ke .emacsfile Anda :

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

Ini auto-mode-alistadalah variabel yang dikonsultasikan emacs setiap kali file baru dibuka. Anda dapat menambahkan pemetaan antara pola nama file dan mode-utama.

Anda dapat mengetahui lebih lanjut tentang bagaimana Emacs menentukan mode mana yang akan dimuat untuk buffer yang diberikan dari manual Emacs .

B4hand
sumber
4
"\\. ya? ml \\ '" adalah bentuk yang disukai, karena ini benar-benar akhir dari string, bukan baris baru. Ini sebenarnya membuat perbedaan untuk file yang memiliki baris baru dalam namanya ... 'foo.yaml \ nc' harus benar-benar menjadi file C, bukan file yaml (ya, sangat kecil kemungkinan ini akan terjadi, tetapi tetap saja)
Sigma
2
Akan sangat membantu jika Anda juga menautkan ke manual emacs di mana informasi ini diberikan.
Trevoke
Juga (require 'yaml-mode)tidak perlu jika mode diisi otomatis (yang hampir selalu terjadi). Perpustakaan akan dimuat secara otomatis ketika Anda membuka file dengan ekstensi file yang benar.
shosti
Karena yaml-modediinstal sebagai paket, saya pasti membutuhkan (require 'yaml-mode)saluran; jika tidak, saya akan melihat kesalahan berikut: File mode specification error: (void-function yaml-mode).
tangani