หลังจากเพิ่งเรียนรู้เกี่ยวกับuse-packageฉันตัดสินใจที่จะพอร์ตการกำหนดค่าของฉันไป แต่พบว่าตัวเองลังเลที่จะให้ความสะดวกในpackage.elการติดตั้งแพ็กเกจและปรับปรุงให้ทันสมัยอยู่เสมอ ฉันได้พบมันเล็ก ๆ น้อย ๆ ที่ยุ่งยากในการรวมและuse-packagepackage.el
โดยทั่วไปฉันสนใจที่จะเรียนรู้ว่าผู้คนรวมเข้าuse-packageกับpackage.elระบบได้อย่างไร แต่สำหรับคำถามที่เฉพาะเจาะจงกว่านี้ให้อ่านต่อไป
นี่คือสิ่งที่ฉันต้องการ:
list-packagesจะมีแพคเกจติดตั้งโดยผู้จัดการแพคเกจเพื่อให้สามารถเรียกดูได้อย่างง่ายดายสำหรับแพคเกจและให้พวกเขาปรับปรุงผ่าน- ในการกำหนดค่าและโหลดแพคเกจโดยเฉพาะ
use-packageดังนั้นฉันสามารถเห็นได้ง่ายในไฟล์ init ของฉันสิ่งที่ฉันกำลังโหลดและวิธีการกำหนดค่า - เลือกฉันต้องการที่จะยังสามารถติดตั้งแพคเกจผ่าน
use-package's:ensureคำหลัก
ถ้าฉันทำความเข้าใจอย่างถูกต้องผมต้องการที่น้อยมากของสิ่งที่package-initializeไม่เพียง load-pathแต่โดยทั่วไปวิธีการที่จะกำหนดขึ้น ขณะนี้ฉันมีสิ่งนี้ในการกำหนดค่าของฉัน:
;(package-initialize)
(setq package-enable-at-startup nil)
(let ((default-directory "~/.emacs.d/elpa"))
(normal-top-level-add-subdirs-to-load-path))
(require 'use-package)
บรรทัดแรกที่ถูกคอมเม้นท์ดังนั้น Emacs 25 จะไม่เพิ่ม(package-initialize)ไฟล์ลงในไฟล์ init ของฉันอย่างมีประโยชน์ บิตที่มีnormal-top-level-add-subdirs-to-load-pathคือการประมาณสิ่งที่package-initializeจะทำให้load-pathการประมาณนั้นดูดีพอ
ดูเหมือนว่าจะบรรลุความต้องการของฉันที่ 1 และ 2 แต่ไม่ใช่ 3 ถ้าฉันพยายามใช้:ensureฉันได้รับข้อความแสดงข้อผิดพลาดpackage.elว่าไม่ได้เริ่มต้น การโทรpackage-initializeจะแก้ไขปัญหานั้น แต่ฉันต้องการหลีกเลี่ยงสิ่งนั้นนับตั้งแต่) ฉันไม่ต้องการให้โหลดโหลดอัตโนมัติจำนวนมาก (ฉันชอบที่จะใช้use-packageสร้าง autoloads ที่ฉันต้องการได้อย่างแม่นยำ) และ b) ฉันต้องการได้อย่างง่ายดาย หลีกเลี่ยงการโหลดแพ็คเกจที่ติดตั้งไว้เมื่อใดก็ตามที่ฉันต้องการ (ซึ่งทำได้ง่ายuse-package)
ใครบ้างมีคำแนะนำสำหรับวิธีการทำเช่นนี้?
package-initializeที่ทำให้ moot คำถามของฉัน