Мне нравится идея .dir-locals.el. У меня есть собственный .dir-locals.elфайл в моем домашнем каталоге, в котором должны быть установлены все переменные для каталогов / файлов, которые я открываю, если только нет места .dir-locals.elближе к каталогу, в котором я открываю файл. Однако, даже если файл распознан, переменные каталога для подкаталогов не являются применяется к открытым файлам.
Это мое ~/.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))))
Когда я открываю файл, ~/dev/test/test.cпеременная indent-tabs-modeустанавливается на tи c-basic-offsetесть 8.
(describe-variable 'c-basic-offset)в этом файле говорит мне, что он установлен 8с ~/.dir-locals.el.
(describe-variable 'indent-tabs-mode)в этом файле говорится, что значение ( t) просто в состоянии по умолчанию.
Можно ли как-то добиться желаемого поведения? Что я делаю неправильно? Как пути файлов отображаются в подкаталогах в ~/.dir-locals.el?
Редактировать:
Как предположил Джонатан , я также попробовал:
(;; dev/school subdir
("dev/school" .
;; dev/school specification for all modes
(nil . ((indent-tabs-mode . nil)
(c-basic-offset . 4)))))
и даже что add-dir-local-variableдобавил:
(("dev/school"
(indent-tabs-mode)
(c-basic-offset . 4)))
К сожалению, ничего из этого тоже не работает.