Мне нравится идея .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)))
К сожалению, ничего из этого тоже не работает.
add-dir-local-variable
и он был добавлен~/.dir-locals.el
с еще более коротким , чем синтаксисом я в этом вопросе:("dev/test" (indent-tabs-mode))
. Тем не менее, не работает, хотя.("dev/test" . ((spec1 ...) (spec2 ...) ...))
((org-mode . ((org-indent-mode . t))) ("subdir" . ((nil . ((org-indent-mode . nil))))
и он работал правильно (предложено установить локальную переменную в ноль). Может быть, попытаться поместить корневые над спецификациями sub-dir в списке, возможно, он установит для него последнее найденное значение.