Como posso ter um segundo .dir-locals?

7

Ao colaborar em um projeto, determinadas variáveis ​​de edição são definidas para garantir que todos estejam produzindo um estilo de código semelhante. No Emacs, eles geralmente são implementados como variáveis ​​locais do arquivo ou variáveis ​​locais do diretório.

As variáveis ​​locais do arquivo são melhores quando você deseja manter o valor da variável anexado ao próprio arquivo, mas ficam complicadas quando é a mesma variável repetidamente para cada arquivo no projeto.

Usar uma variável diretório-local seria a escolha óbvia, mas eu pessoalmente estou usando isso para definir o email que eu uso no projeto (em oposição ao meu email de trabalho etc.) para garantir que eu nunca seja inconsistente com meu commit dados.

Existe uma maneira de contornar este problema? Posso ter dois arquivos contendo variáveis ​​locais do diretório no mesmo diretório (um arquivo pessoal e um arquivo controlado por versão)?

Referir: sx.el@3a5afcc

Sean Allred
fonte

Respostas:

4

A partir da versão 26.1, o Emacs suporta um segundo .dir-locals.elarquivo adicional (apropriadamente chamado .dir-locals-2.el).

No Manual do Emacs: "Variáveis ​​locais por diretório":

Você também pode usar .dir-locals-2.el; se encontrado, o Emacs o carrega além do .dir-locals.el. Isso é útil quando .dir-locals.el está sob controle de versão em um repositório compartilhado e não pode ser usado para personalizações pessoais.

ebpa
fonte
Alterar a resposta aceita, pois essa deve ser a recomendação daqui para frente. Obrigado por adicioná-lo aqui!
Sean Allred
Nota interessante: A documentação afirma que o Emacs carrega .dir-locals-2.elalém de.dir-locals.el , mas parece que o comportamento real é carregá-lo em vez de .dir-locals.el(pelo menos no Emacs 26.2).
0x5453 01/07/19
7

Isso parece funcionar:

(defadvice hack-dir-local-variables (around second-dir-locals-file activate)
  ad-do-it
  (let ((dir-locals-file ".alt-dir-locals.el"))
    ad-do-it))
Sean
fonte
Isso se aplica a ambos .dir-locals.ele .alt-dir-locals.elnessa ordem?
Sean Allred
De acordo com meu teste simples.
10134 Sean
Doce! Amanhã vou tentar fazer isso :)
Sean Allred