Eu gosto da ideia de .dir-locals.el
. Eu tenho meu próprio .dir-locals.el
arquivo 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.el
mais 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.c
a variável indent-tabs-mode
é definida como t
e c-basic-offset
é 8
.
(describe-variable 'c-basic-offset)
nesse arquivo diz que está definido para 8
from ~/.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-variable
acrescentou:
(("dev/school"
(indent-tabs-mode)
(c-basic-offset . 4)))
Infelizmente, nenhum deles funciona.