Eu gosto da ideia de .dir-locals.el. Eu tenho meu próprio .dir-locals.elarquivo no meu diretório pessoal que deve definir todas as variáveis para os diretórios / arquivos que abro, a menos que exista .dir-locals.elmais perto do diretório em que abro o arquivo. No entanto, mesmo que o arquivo seja reconhecido, as variáveis de diretório para subdiretórios não são aplicado aos arquivos abertos.
Este é o meu ~/.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))))
Quando abro o arquivo, ~/dev/test/test.ca variável indent-tabs-modeé definida como te c-basic-offseté 8.
(describe-variable 'c-basic-offset)nesse arquivo diz que está definido para 8from ~/.dir-locals.el.
(describe-variable 'indent-tabs-mode)nesse arquivo diz que seu valor ( t) está no estado padrão.
Posso de alguma forma alcançar o comportamento desejado? O que estou fazendo de errado? Como os caminhos de arquivo são mapeados para os subdiretórios ~/.dir-locals.el?
Editar:
Como Jonathan sugeriu , eu também tentei:
(;; dev/school subdir
("dev/school" .
;; dev/school specification for all modes
(nil . ((indent-tabs-mode . nil)
(c-basic-offset . 4)))))
e até o que add-dir-local-variableacrescentou:
(("dev/school"
(indent-tabs-mode)
(c-basic-offset . 4)))
Infelizmente, nenhum deles funciona.