.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-offset8
(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)))
น่าเสียดายที่ไม่มีงานเหล่านั้นเช่นกัน