spacemacsの発射物ファイルのキャッシュをクリアする方法は?


33

私はプロジェクトでファイルを見つけるためにキーバインディングをspacemacs使用していSPC p fますprojectile。しかし、gitからファイルを削除した後でも、SPC p fその削除されたファイルが表示されます。

SPC p Iキャッシュを無効にするために使用しようとしましたが、うまくいきませんでした。

問題を解決する方法は?


4
バインディングが正しく行われていることを確認できますか?あなたは何をするのC-h k SPC p lですか?にバインドする必要がありますprojectile-invalidate-cache。また、M-x projectile-invalidate-cache動作するかどうかを確認します。
カウシャルモディ

私はspacemacsを使用しています、それはいくつかのキーマッピングを再定義しました。
ダニエルウー

2
キーマッピングを変更してもかまいません。キーをバインドする必要があると思われるコマンドにキーがバインドされているかどうかを確認するようお願いしています。それでも、Mxアプローチの使用は機能しましたか?
カウシャルモディ

1
Spacemacsがrecentfプロジェクトファイルのソートに使用するためです。古いProjectileバージョンでは、ファイルを削除した後でも、Projectileはから古いファイルリストを再利用しましたrecentf。後のProjectileバージョンでは、Projectileキャッシュをクリアすると、recentfファイルリストがクリーンアップされ、削除されたファイルが削除されました。最新のProjectileに更新して、もう一度試してください。
火ドゥ

回答:


30

入力するM-x projectile-invalidate-cacheと、その隣にバインドがリストされたコマンドが表示されます。私にとっては、バインディングM-m p Iは正しいと言っており、聖なるモード(spc p I邪悪なモード)の疑いがあるデフォルトのはずです。


これを自動的に行う方法があればいいのですが。
Loremのイプサム嘆き

1
@LiXinyangには、プロジェクトファイルをキャッシュしないように設定する設定があります。ただし、多くのファイルがあるプロジェクトでは、プロジェクトの動作が遅くなります。'(projectile-enable-caching nil)
ジミー・ホッファ

0

キャッシュ無効化プロセスの自動化に関する@Xinyang Liの質問に触発され、プロジェクトを切り替え、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.