Me gusta la idea de .dir-locals.el
. Tengo mi propio .dir-locals.el
archivo en mi directorio de inicio que debe establecer todas las variables para los directorios / archivos que abro a menos que esté .dir-locals.el
más cerca del directorio en el que abro el archivo. Sin embargo, a pesar de que el archivo es reconocido, las variables de directorio para subdirectorios no son aplicado a los archivos abiertos.
Este es mi ~/.dir-locals.el
:
(("dev/school" .
((indent-tabs-mode . nil)
(c-basic-offset . 4)))
("dev/test" .
((indent-tabs-mode . nil)
(c-basic-offset . 4)))
(c-mode .
((c-file-style . "linux")
(c-basic-offset . 8))))
Cuando abro el archivo, ~/dev/test/test.c
la variable indent-tabs-mode
se establece en t
y c-basic-offset
es 8
.
(describe-variable 'c-basic-offset)
en ese archivo me dice que está configurado 8
desde ~/.dir-locals.el
.
(describe-variable 'indent-tabs-mode)
en ese archivo dice que su valor ( t
) está en su estado predeterminado.
¿Puedo de alguna manera lograr el comportamiento deseado? ¿Qué estoy haciendo mal? ¿Cómo se asignan las rutas de archivo a subdirectorios ~/.dir-locals.el
?
Editar:
Como Jonathan sugirió , también probé:
(;; dev/school subdir
("dev/school" .
;; dev/school specification for all modes
(nil . ((indent-tabs-mode . nil)
(c-basic-offset . 4)))))
e incluso lo que add-dir-local-variable
agregó:
(("dev/school"
(indent-tabs-mode)
(c-basic-offset . 4)))
Desafortunadamente, ninguno de esos funciona tampoco.
add-dir-local-variable
y se añadió a~/.dir-locals.el
la sintaxis aún más corto de lo que solía en la pregunta:("dev/test" (indent-tabs-mode))
. Sin embargo, todavía no funciona.("dev/test" . ((spec1 ...) (spec2 ...) ...))
((org-mode . ((org-indent-mode . t))) ("subdir" . ((nil . ((org-indent-mode . nil))))
y funcionó correctamente (se le solicitó establecer var local a cero). Tal vez intente colocar las raíz por encima de las especificaciones del subdirectorio dentro de la lista, es posible que lo establezca en el último valor encontrado.