Bagaimana cara menghapus cache dari file proyektil dalam spacemacs?

33

Saya menggunakan spacemacsdan sering menggunakan SPC p fkunci yang mengikat untuk menemukan file dalam suatu projectileproyek. Tetapi bahkan setelah menghapus file dari git, SPC p fakan menunjukkan kepada saya file yang dihapus itu.

Saya mencoba menggunakan SPC p Iuntuk membatalkan cache, tetapi itu tidak berhasil.

Bagaimana cara mengatasi masalah tersebut?

Daniel Wu
sumber
4
Bisakah Anda memverifikasi bahwa binding dibuat dengan benar? Apa yang Anda dapatkan saat melakukannya C-h k SPC p l? Itu harus terikat projectile-invalidate-cache. Periksa juga apakah M-x projectile-invalidate-cacheberfungsi.
Kaushal Modi
Saya menggunakan spacemacs, itu mendefinisikan kembali beberapa pemetaan kunci.
Daniel Wu
2
Tidak apa-apa untuk mengubah pemetaan kunci. Saya meminta Anda untuk mengkonfirmasi jika kunci terikat pada perintah yang Anda pikir harus diikat. Namun demikian, apakah menggunakan pendekatan MX bekerja?
Kaushal Modi
1
Itu karena Spacemacs digunakan recentfuntuk menyortir file proyek. Dalam versi proyektil yang lebih lama, bahkan setelah Anda menghapus file, proyektil masih menggunakan kembali daftar file yang sudah usang recentf. Dalam versi Proyektil kemudian, membersihkan cache Proyektil juga membersihkan recentfdaftar file dan menghapus file yang dihapus. Anda harus memperbarui ke Proyektil terbaru dan coba lagi.
Tu Do

Jawaban:

30

Ketik M-x projectile-invalidate-cachedan Anda akan melihat perintah dengan binding terdaftar di sebelahnya. Bagi saya bindings mengatakan M-m p Imana yang benar, dan harus menjadi default saya curiga untuk mode suci ( spc p Iuntuk mode jahat).

Jimmy Hoffa
sumber
Saya berharap ada cara untuk melakukan ini secara otomatis.
Lorem Ipsum Dolor
1
@LiXinyang ada pengaturan yang dapat Anda masukkan dalam konfigurasi Anda yang mengatakan untuk tidak pernah menembolok file proyek. Namun itu menyebabkan operasi proyek melambat pada proyek apa pun dengan banyak file. '(projectile-enable-caching nil)
Jimmy Hoffa
0

Terinspirasi oleh pertanyaan Xinyang Li tentang proses mengotomatiskan cache cache, saya mulai menggunakan snippet di bawah ini untuk menghapus cache proyektil untuk proyek saat ini setelah saya beralih di antara proyek dan menghapus cache semua proyek setelah inisialisasi 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)))
Adam Faryna
sumber