Emacs 24.3 หรือต่ำกว่า
ไม่มีวิธีการป้องกันไม่ให้โหลดไฟล์เก่าในตัว แต่มีวิธีง่าย ๆ ในการกำจัดไฟล์เหล่านั้น
- คุณสามารถคอมไพล์ไดเรกทอรี elpa ใหม่ทั้งหมดโดยโทร:
M-x byte-recompile-directory RET ~/.emacs.d/elpa/
.
สิ่งนี้ควรกำจัดไฟล์ที่ล้าสมัย
- คุณสามารถใช้
แพ็คเกจรวบรวมอัตโนมัติและเปิดใช้งาน
auto-compile-on-load-mode
ไฟล์ที่สามารถรวบรวมได้ก่อนที่จะถูกโหลด
Emacs 24.4
ใช่และกลายเป็นว่าค่อนข้างง่าย load-prefer-newer
ตัวแปรทำหน้าที่ได้อย่างแม่นยำเพื่อการนี้
(setq load-prefer-newer t)
แต่น่าเสียดายที่มันจะไม่ทำงานเมื่อโค้ดบางส่วนโดยเฉพาะเป้าหมาย
ไฟล์เช่น.elc
(load "server.elc")
แต่ควรเพียงพอตราบเท่าที่คุณใช้require
หรือโทรload
โดยไม่มีคำต่อท้ายซึ่งคุณควร
จากเอกสาร:
load-prefer-newer เป็นตัวแปรที่กำหนดไว้ใน lread.c
ค่าของมันคือศูนย์
เอกสารประกอบ:
Non-nil หมายถึงการโหลดที่ต้องการไฟล์เวอร์ชันใหม่ล่าสุด
สิ่งนี้ใช้เมื่อไม่ได้ระบุส่วนต่อท้ายของชื่อไฟล์อย่างชัดเจนและโหลดกำลังพยายามใช้คำต่อท้ายที่เป็นไปได้ต่างๆ (ดูที่ส่วนต่อท้ายของโหลดและโหลดของไฟล์ - ตัวแทนต่อท้าย) โดยปกติจะหยุดที่ไฟล์แรกที่มีอยู่เว้นแต่คุณจะระบุอย่างใดอย่างหนึ่งหรืออื่น ๆ หากตัวเลือกนี้ไม่ใช่ศูนย์จะตรวจสอบคำต่อท้ายทั้งหมดและใช้ไฟล์ใดก็ตามที่ใหม่ที่สุด
โปรดทราบว่าหากคุณกำหนดค่านี้จะไม่ส่งผลกระทบต่อไฟล์ที่โหลดก่อนการปรับแต่งของคุณ
auto-compile
ห้องสมุด(ยอดเยี่ยม!) ใน Emacs 24.4+ รวมถึงด้านล่าง มันเป็นโซลูชันการกำหนดค่าและลืมที่แท้จริงload-prefer-newer
ให้แน่ใจว่าคุณจะเรียกใช้รหัสที่ไม่ได้คอมไพล์ช้าหลังจากที่คอมไพล์โค้ดของคุณล้าสมัย