Como carregar automaticamente um modo para um conjunto específico de extensões de arquivo?

17

Eu gostaria de carregar os yaml-modearquivos nomeados *.ymlou *.yaml.

b4hand
fonte
7
Leia o Elisp manual, o nóAuto Major Mode , e você será capaz de responder a sua própria pergunta: auto-mode-alist. Ah, vejo que você fez isso 10 segundos depois de postar a pergunta. Talvez não seja uma boa ideia enviar perguntas e respostas do manual dessa maneira. Mas acho que é uma pergunta que ocorrerá às pessoas, e a resposta as ajudará. Pena que eles vão aprender dessa maneira, em vez de aprender com o próprio Emacs. Melhor ensinar as pessoas a encontrar essas respostas, IMO.
Tirou
11
Sinta-se à vontade para adicionar isso como resposta. Fiz essa pergunta porque foi uma que resolvi no passado e era muito semelhante a uma pergunta proposta na lista da área51.
b4hand
11
Sem problemas. Desculpe se soei negativo. Como eu disse, a pergunta ea resposta vai ajudar as pessoas.
Tirou
Por que vale a pena, isso é muito semelhante a uma pergunta que foi feita durante a fase de proposta sobre area51: area51.stackexchange.com/proposals/76571/emacs/76640#76640
b4hand
Não há nada errado em fazer essa pergunta. Meu comentário foi originalmente apenas a primeira frase. Na IMO, é bom que as pessoas adquiram o hábito de perguntar primeiro ao Emacs e depois ao SE. O Emacs é um pouco especial em ajudar os usuários dessa maneira - não é o seu tópico médio de SE. Mas os usuários geralmente precisam de ajuda para aprender a pedir ao Emacs.
Tirou

Respostas:

15

Adicione estas linhas ao seu .emacsarquivo:

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

O auto-mode-alisté uma variável que o emacs consulta sempre que um novo arquivo é aberto. Você pode adicionar mapeamentos entre os padrões de nome de arquivo e os modos principais.

Você pode descobrir mais sobre como o Emacs determina quais modos carregar para um determinado buffer no manual do Emacs .

b4hand
fonte
4
"\\. ya? ml \\ '" é a forma preferida, pois é realmente o fim da string, não uma nova linha. Na verdade, faz diferença para o arquivo que tem uma nova linha em seu nome ... 'foo.yaml \ nc' deve ser realmente um arquivo C, não um arquivo yaml (sim, é pouco provável que isso aconteça, mas ainda assim)
Sigma
2
Seria útil se você também estivesse vinculado ao manual do emacs, onde essas informações são fornecidas.
Trevoke
Também não (require 'yaml-mode)é necessário se o modo for carregado automaticamente (o que é quase sempre o caso). A biblioteca será carregada automaticamente quando você abrir um arquivo com a extensão correta.
21414 shosti
Desde que yaml-modefoi instalado como um pacote, eu definitivamente precisava da (require 'yaml-mode)linha; caso contrário, gostaria de ver o seguinte erro: File mode specification error: (void-function yaml-mode).
b4hand