Me gusta la idea de .dir-locals.el. Tengo mi propio .dir-locals.elarchivo en mi directorio de inicio que debe establecer todas las variables para los directorios / archivos que abro a menos que esté .dir-locals.elmá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.cla variable indent-tabs-modese establece en ty c-basic-offsetes 8.
(describe-variable 'c-basic-offset)en ese archivo me dice que está configurado 8desde ~/.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-variableagregó:
(("dev/school"
(indent-tabs-mode)
(c-basic-offset . 4)))
Desafortunadamente, ninguno de esos funciona tampoco.

add-dir-local-variabley se añadió a~/.dir-locals.ella 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.