Мені подобається ідея .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)))
На жаль, жоден із них також не працює.