Eu estou usando Aquamacs, uma distro do GNU Emacs 23.3.50.1.
Eu estou olhando para alguns arquivos de origem escritos com alguns comentários em grego, e eles são codificados em CP1253.
E eu posso reverter com a codificação correta ou posso adicionar uma variável local de arquivo:
/* -*- mode: c-mode; tab-width: 4; coding: cp1253-unix; -*- */
Então eu posso fazer com que eles abram corretamente, e eu certamente poderia adicionar variáveis de arquivo em cada arquivo.
Mas eu gostaria de definir a codificação para o diretório inteiro. Em vez de editar manualmente o .dir-locals.el, pensei em simplesmente:
M-x copy-file-locals-to-dir-locals
Do arquivo que abriu corretamente. E isso gera:
;;; Directory Local Variables
;;; See Info node `(emacs) Directory Variables' for more information.
((c-mode
(tab-width . 4)
(coding . cp1253-unix)))
Sem dados. No entanto, reconhece claramente a nova largura de tabulação, por isso está lendo o arquivo.
Alguma idéia por quê? E existe algum log como o emacs está processando a lista-a?
coding
em .dir-locals.el, recebo um aviso ao abrir um novo arquivo:Warning (:warning): Coding cannot be specified by dir-locals
Respostas:
Infelizmente, parece que o cabeçalho de codificação, por design, não se propaga dos dir-locals do Emacs; Eu lutei com sua configuração e repliquei o problema também.
Mais tarde me deparei com essa fonte que parece verificar o que você encontrou: http://www.emacsmirror.org/package/dir-locals.html
Não tenho certeza se existe um log para processar a lista, mas caso você não esteja familiarizado com essa variável, você pode verificar sua codificação depois de visitar um arquivo com:
ou
Pessoalmente, acho que sua melhor aposta seria o que você já tem trabalhando - arquivar variáveis locais.
Alternativas que eu posso pensar (primeiro não testado) seria dar uma olhada em algumas das funções elisp:
OU segundo: (supondo que sua estrutura de diretórios seja /something/blah/greekcode/file.c)
Isso tem precedência até mesmo sobre variáveis locais de arquivos. Modifique o regexp conforme necessário e experimente avaliando:
retorna:
Espero que isso ajude! Adoraria ouvir o que outros usuários do emacs propõem como soluções.
fonte