วิธีล้างแคชไฟล์ projectile ใน spacemacs?


33

ฉันกำลังใช้spacemacsและมักจะใช้การSPC p fเชื่อมโยงคีย์เพื่อค้นหาไฟล์ในprojectileโครงการ แต่แม้หลังจากลบไฟล์ออกจากคอมไพล์แล้วSPC p fก็จะแสดงไฟล์ที่ถูกลบนั้นให้ฉันด้วย

ฉันพยายามใช้SPC p Iแคชที่ไม่ถูกต้อง แต่นั่นไม่ได้ผล

วิธีแก้ปัญหา


4
คุณสามารถตรวจสอบได้ว่าการผูกถูกต้องหรือไม่ คุณได้อะไรเมื่อคุณทำC-h k SPC p l? projectile-invalidate-cacheมันควรจะผูกพันกับ ตรวจสอบด้วยถ้าM-x projectile-invalidate-cacheทำงาน
Kaushal Modi

ฉันกำลังใช้ spacemac มันกำหนดการแมปกุญแจอีกครั้ง
Daniel Wu

2
ไม่เป็นไรที่จะเปลี่ยนการจับคู่คีย์ ฉันขอให้คุณยืนยันว่ากุญแจถูกผูกไว้กับคำสั่งที่คุณคิดว่าควรจะถูกผูกไว้ อย่างไรก็ตามการใช้วิธี Mx ทำงานอย่างไร
Kaushal Modi

1
เป็นเพราะ Spacemacs ใช้recentfสำหรับการจัดเรียงไฟล์โครงการ ในเวอร์ชัน Projectile ที่เก่ากว่าแม้หลังจากที่คุณลบไฟล์แล้ว Projectile ยังคงใช้รายการไฟล์ที่ล้าสมัยrecentfอีกครั้ง ในเวอร์ชัน Projectile ในภายหลังการล้าง Projectile cache จะล้างrecentfรายการไฟล์และลบไฟล์ที่ถูกลบ คุณควรอัปเดตเป็น Projectile ล่าสุดแล้วลองอีกครั้ง
Tu Do

คำตอบ:


30

พิมพ์M-x projectile-invalidate-cacheและคุณจะเห็นคำสั่งที่มีการผูกไว้ข้างรายการ สำหรับฉันแล้วการเชื่อมโยงM-m p Iที่ถูกต้องและควรจะเป็นค่าเริ่มต้นฉันสงสัยว่าเป็นโหมดศักดิ์สิทธิ์ ( spc p Iสำหรับโหมดชั่วร้าย)


ฉันหวังว่าจะมีวิธีในการทำสิ่งนี้โดยอัตโนมัติ
Lorem Ipsum Dolor

1
@LiXinyang มีการตั้งค่าที่คุณสามารถใส่ในการกำหนดค่าของคุณที่บอกว่าจะไม่แคชไฟล์โครงการ อย่างไรก็ตามมันทำให้การดำเนินการโครงการช้าลงในโครงการใด ๆ ที่มีไฟล์จำนวนมาก '(projectile-enable-caching nil)
Jimmy Hoffa

0

แรงบันดาลใจจาก @Xinyang Li คำถามเกี่ยวกับกระบวนการทำให้แคชใช้ไม่ได้อัตโนมัติฉันเริ่มใช้ตัวอย่างด้านล่างเพื่อล้างแคช projectile สำหรับโครงการปัจจุบันหลังจากที่ฉันสลับระหว่างโครงการและล้างแคชของโครงการทั้งหมดหลังจากการเริ่มต้น emacs

(add-hook 'projectile-after-switch-project-hook (lambda ()
      (projectile-invalidate-cache nil)))


(add-hook 'after-init-hook (lambda ()
    (mapc (lambda (project-root)
        (remhash project-root projectile-project-type-cache)
        (remhash project-root projectile-projects-cache)
        (remhash project-root projectile-projects-cache-time)
        (when projectile-verbose
            (message "Invalidated Projectile cache for %s."
                (propertize project-root 'face 'font-lock-keyword-face)))
        (when (fboundp 'recentf-cleanup)
            (recentf-cleanup)))
        (projectile-hash-keys projectile-projects-cache))
    (projectile-serialize-cache)))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.