Tôi thích ý tưởng của .dir-locals.el. Tôi có .dir-locals.eltệp riêng trong thư mục chính của mình nên đặt tất cả các biến cho thư mục / tệp mà tôi mở trừ khi có .dir-locals.elgần thư mục tôi mở tệp hơn. Tuy nhiên, mặc dù tệp được nhận dạng, các biến thư mục cho thư mục con không áp dụng cho các tập tin đã mở.
Đây là của tôi ~/.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))))
Khi tôi mở tập tin ~/dev/test/test.c, biến indent-tabs-modeđược đặt thành tvà c-basic-offsetlà 8.
(describe-variable 'c-basic-offset)trong tập tin đó cho tôi biết nó được đặt thành 8từ ~/.dir-locals.el.
(describe-variable 'indent-tabs-mode)trong tệp đó cho biết giá trị của nó ( t) chỉ ở trạng thái mặc định.
Tôi có thể bằng cách nào đó đạt được hành vi mong muốn? Tôi đang làm gì sai? Đường dẫn tệp được ánh xạ tới các thư mục con trong ~/.dir-locals.elnhư thế nào?
Biên tập:
Như Jonathan đề nghị , tôi cũng đã thử:
(;; dev/school subdir
("dev/school" .
;; dev/school specification for all modes
(nil . ((indent-tabs-mode . nil)
(c-basic-offset . 4)))))
và thậm chí những gì add-dir-local-variableđã thêm:
(("dev/school"
(indent-tabs-mode)
(c-basic-offset . 4)))
Thật không may, không ai trong số họ làm việc cả.