หลังจากเพิ่งเรียนรู้เกี่ยวกับuse-package
ฉันตัดสินใจที่จะพอร์ตการกำหนดค่าของฉันไป แต่พบว่าตัวเองลังเลที่จะให้ความสะดวกในpackage.el
การติดตั้งแพ็กเกจและปรับปรุงให้ทันสมัยอยู่เสมอ ฉันได้พบมันเล็ก ๆ น้อย ๆ ที่ยุ่งยากในการรวมและuse-package
package.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 คำถามของฉัน