ยกเลิกการโหลดทั้งแพ็กเกจหรือแผนผังไลบรารี


9

บางครั้งฉันต้องการโทรunload-featureเพื่อยกเลิกการโหลดห้องสมุด ... และมันขึ้นอยู่กับห้องสมุด ... และอีกห้องสมุดหนึ่งขึ้นอยู่กับห้องสมุดนั้น

ฉันจะยกเลิกการโหลดไลบรารีและไลบรารีทั้งหมดที่ขึ้นอยู่กับมันได้อย่างไรโดยไม่ต้องผ่านแผนผังการพึ่งพาด้วยตนเอง

กรณีการใช้งานทั่วไปคือการยกเลิกการโหลดไลบรารีทั้งหมดของแพ็คเกจ (เช่นเมื่ออัปเกรดหรือถอนการติดตั้ง) ดังนั้นหากมีวิธีการทำเช่นนั้นมันจะดีพอ

คำตอบ:


2

ไม่มีวิธีในการทำเช่นนี้ - ดูการยกเลิกการโหลดในคู่มือ Elisp

unload-featureรับforceอาร์กิวเมนต์ที่อนุญาตให้ยกเลิกการโหลดโดยบังคับPแม้ว่าแพ็กเกจอื่นจะขึ้นอยู่กับP; เพียงพอสำหรับความต้องการของคุณหรือไม่

หากไม่เป็นเช่นนั้นคุณสามารถลองสร้างรุ่นเรียกซ้ำunload-featureที่มี:

(let* ((file (feature-file feature))
       (dependents (delete file (copy-sequence (file-dependents file))))) 
  (when dependents
    (mapc #'unload-feature-recursive (mapcan #'file-provides dependents))))

ขอบคุณฉันแก้ไขข้อผิดพลาดในคำถาม การเขียนเวอร์ชันแบบเรียกซ้ำunload-featureเป็นประเด็นของคำถาม
Gilles 'ดังนั้นหยุดความชั่วร้าย'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.