ฉันมีการปรับแต่งบางอย่างสำหรับ emacs ที่ฉันต้องการใช้สำหรับโครงการเดียว แต่ไม่ส่งผลกระทบต่อ emacs ทั่วโลก มีวิธีใดบ้างที่ฉันสามารถให้ emacs โหลดไฟล์ init เฉพาะเมื่อเรียกใช้จากไดเรกทอรีหนึ่งหรือโหลดไฟล์ init ทั้งหมดโดยอัตโนมัติในไดเรกทอรีที่เปิดตัว
ฉันมีการปรับแต่งบางอย่างสำหรับ emacs ที่ฉันต้องการใช้สำหรับโครงการเดียว แต่ไม่ส่งผลกระทบต่อ emacs ทั่วโลก มีวิธีใดบ้างที่ฉันสามารถให้ emacs โหลดไฟล์ init เฉพาะเมื่อเรียกใช้จากไดเรกทอรีหนึ่งหรือโหลดไฟล์ init ทั้งหมดโดยอัตโนมัติในไดเรกทอรีที่เปิดตัว
คำตอบ:
คุณอาจต้องการที่จะดูที่ตัวแปรสารบบ โดยทั่วไปคุณจะต้องสร้าง.dir-locals.elไฟล์ในโปรเจ็กต์รูทด้วยการตั้งค่าเฉพาะโปรเจ็กต์ในไฟล์ ตอนนี้เมื่อใดก็ตามที่คุณเปิดไฟล์ในไดเรกทอรีหรือไดเรกทอรีย่อยใด ๆ จะใช้การตั้งค่าใน.dir-locals.elไฟล์
ตัวอย่างเช่นสมมติว่าคุณต้องการใช้make package installคำสั่งคอมไพล์ในโครงการ A เท่านั้นคุณจะต้องสร้างไฟล์ชื่อ. dir-locals.el ในไดเรกทอรีรากของโครงการและเพิ่มสิ่งต่อไปนี้
((nil . ((compile-command . "make package install"))))
ต่อจากนี้ไปเมื่อใดก็ตามที่คุณเรียกใช้compileคำสั่งจากไฟล์ใด ๆ ภายใต้ไดเรกทอรี A ค่าเริ่มต้นcompile-commandจะเป็นหนึ่งที่ระบุไว้ข้างต้นอย่างไรก็ตามcompile commandสำหรับไฟล์ที่อยู่นอกไดเรกทอรี A จะไม่ถูกแตะต้อง
ทางเลือกที่น้อยกว่าที่โดดเด่นในการ.dir-locals.elเป็นEditorConfigมาตรฐานซึ่งมีemacs แพคเกจ ไม่รองรับตัวเลือกเกือบทั้งหมด แต่มันช่วยให้ทีมงานได้มาตรฐานในการตั้งค่าบางอย่างและใช้พวกมันข้ามบรรณาธิการต่าง ๆ
มันทำงานในลักษณะเดียวกันมากโดยมี.editorconfigไฟล์เฉพาะโครงการที่ระดับบนสุด