การจัดการแพ็คเกจรุ่นต่อไปด้วย straight.el
หลังจากการต่อสู้ที่ยาวนานและน่าผิดหวังกับการใช้งานpackage.el
+ Quelpa การจัดการแพคเกจของฉันฉันกัด bullet และเขียนผู้จัดการแพคเกจของตัวเอง มีวัตถุประสงค์เพื่อทดแทนอย่างสมบูรณ์package.el
โดยมอบประสบการณ์การจัดการบรรจุภัณฑ์ที่เหนือกว่าในเกือบทุกด้าน
คุณสามารถอ่านเอกสารที่กว้างขวางมากที่จะเรียนรู้เกี่ยวกับคุณสมบัติทั้งหมดของมัน แต่คนที่เกี่ยวข้องมากที่สุดกับคำถามนี้คือการที่straight.el
มุ่งเน้นการทำสำเนาที่สมบูรณ์แบบ ซึ่งหมายความว่าไม่สำคัญว่าคุณจะเริ่มใช้งาน Emacs ตามปกติหรือเริ่มใช้งานบนเครื่องใหม่และการเปลี่ยนแปลงใด ๆ ในท้องถิ่นนั้นควบคุมโดยรุ่นและสามารถเปลี่ยนกลับสู่สถานะที่ยอมรับได้ ในทางปฏิบัติแล้วสิ่งนี้สามารถทำได้โดย (1) การทำสำเนาแพคเกจเป็นที่เก็บ Git และจัดหาเครื่องมืออัตโนมัติสำหรับจัดการสถานะของพวกเขา (2) ใช้ไฟล์ init เป็นแหล่งความจริงเพียงอย่างเดียวสำหรับสถานะการจัดการบรรจุภัณฑ์โดยไม่มีข้อมูลที่ไม่แน่นอนที่เก็บไว้ที่อื่น และ (3) ใช้ lockfiles เวอร์ชันเผื่อเลือกเพื่อระบุการแก้ไข Git ที่แน่นอนของทุกแพ็คเกจรวมถึงที่เก็บสูตรและstraight.el
ตัวเอง
ในการเริ่มต้นแทรกข้อมูลโค้ดบูตstraight.el
ซึ่งจะติดตั้งและเปิดใช้งาน จากนั้นเพื่อให้แน่ใจว่ามีการติดตั้งแพคเกจเพียงโทรไปที่straight-use-package
ไฟล์ init ของคุณ:
(straight-use-package 'projectile)
ใช่มันง่ายมาก ไม่มีการจัดการpackage-refresh-contents
หรือขยะใด ๆ หากคุณลบแบบฟอร์มนี้ออกจากไฟล์เริ่มต้นและเริ่มต้น Emacs ใหม่ Projectile จะไม่ถูกโหลดอีกต่อไป (ไม่เหมือนในpackage.el
) ซึ่งหมายความว่าคุณไม่ต้องกังวลเกี่ยวกับการกำหนดค่าของคุณอย่างใดไม่ทำงานบนเครื่องใหม่เพราะคุณขึ้นอยู่กับแพคเกจที่ไม่ได้ประกาศ
คุณสามารถติดตั้งแพ็คเกจได้ทุกที่และทุกเวลาที่คุณต้องการตลอดทั้งไฟล์ init ของคุณ (ไม่จำเป็นต้องประกาศรายการไฟล์เหล่านั้นในจุดเดียว) แน่นอนคุณสามารถทำได้
(dolist (package '(ace-jump-mode ... zzz-to-char)) (straight-use-package package))
ถ้าคุณชอบรายการ อย่างไรก็ตามฉันขอแนะนำให้คุณใช้use-package
จัดการการกำหนดค่าแพ็คเกจของคุณ ก่อนอื่นคุณต้องติดตั้ง:
(straight-use-package 'use-package)
จากนั้นเนื่องจากstraight.el
มีการรวมระบบในตัวด้วยuse-package
เหตุนี้ "เพิ่งได้ผล":
(use-package projectile
:straight t
:init (projectile-mode 1))
เมื่อคุณเขียนไฟล์เริ่มต้นเพื่อติดตั้งแพ็คเกจที่จำเป็นแล้วให้เรียกใช้M-x straight-freeze-versions
เพื่อบันทึกเวอร์ชัน lockfile ~/.emacs.d/straight/versions/default.el
ไว้ คุณควรเก็บไฟล์นี้ไว้ภายใต้การควบคุมเวอร์ชันเนื่องจากจะอนุญาตให้straight.el
ตรวจสอบเวอร์ชั่นที่ถูกต้องของแพ็คเกจทั้งหมดของคุณเมื่อคุณเปิดใช้งาน Emacs ครั้งแรกบนเครื่องใหม่ (คุณสามารถเปลี่ยนกลับเป็นเวอร์ชันที่ระบุใน lockfile ด้วยM-x straight-thaw-versions
ตนเองได้โดยใช้)
เพื่อสนับสนุนความคิดของ dotfiles เครื่องท้องถิ่นที่ผมกล่าวถึงในคำตอบอื่น ๆ ของฉัน , straight.el
ข้อเสนอรายละเอียดระบบ ฉันยังคงแนะนำให้ใช้ symlink สำหรับ dotfiles ของคุณ (ในกรณีนี้init.el
ไฟล์ init-local ของคุณหากทำได้และ version lockfile หากคุณต้องการใช้)
หากคุณกำลังสงสัยว่าstraight.el
เปรียบเทียบกับผู้จัดการแพคเกจอื่น ๆ ให้ตรวจสอบส่วนรถที่กว้างขวาง แต่มีเอกสารอื่นอีกมากมายในทุกสิ่งอีกด้วย
init.el
ไปมา (โดยใช้ตัวอย่างเช่น git) วิธีนี้ใช้งานได้ (ตามuse-package
): lunaryorn.com/posts/…