¿Cómo puedo tener un segundo .dir-locals?

7

Al colaborar en un proyecto, ciertas variables de edición se configuran para garantizar que todos produzcan un estilo de código similar. En Emacs, estos generalmente se implementan como variables locales de archivo o variables locales de directorio.

Las variables locales de archivo son mejores cuando desea mantener el valor de la variable adjunto al archivo en sí, pero se vuelven engorrosas cuando es la misma variable una y otra vez para cada archivo del proyecto.

Usar una variable local de directorio sería la opción obvia, pero personalmente lo estoy usando para configurar el correo electrónico que uso en el proyecto (a diferencia del correo electrónico de mi trabajo, etc.) para asegurarme de que nunca sea inconsistente con mi confirmación datos.

¿Hay alguna forma de evitar este problema? ¿Puedo tener dos archivos que contengan variables locales de directorio en el mismo directorio (un archivo personal y un archivo controlado por versión)?

Referir: sx.el@3a5afcc

Sean Allred
fuente

Respuestas:

4

A partir de la versión 26.1, creo que Emacs admite un segundo .dir-locals.elarchivo adicional (con el nombre adecuado .dir-locals-2.el).

Del manual de Emacs: "Variables locales por directorio":

También puede usar .dir-locals-2.el; si se encuentra, Emacs lo carga además de .dir-locals.el. Esto es útil cuando .dir-locals.el está bajo control de versión en un repositorio compartido y no puede usarse para personalizaciones personales.

ebpa
fuente
Cambiar la respuesta aceptada ya que esta debería ser la recomendación en el futuro. ¡Gracias por agregarlo aquí!
Sean Allred
Nota interesante: la documentación indica que Emacs se carga .dir-locals-2.elademás.dir-locals.el , pero parece que el comportamiento real es cargarlo en lugar de .dir-locals.el(al menos en Emacs 26.2).
0x5453
7

Esto 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
fuente
¿Esto aplica tanto .dir-locals.ely .alt-dir-locals.elen ese orden?
Sean Allred
Lo hace, de acuerdo con mis simples pruebas.
Sean
¡Dulce! Probaré esto mañana :)
Sean Allred