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