Як очистити кеш файлу снарядів у 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 і спробувати ще раз.
Tu Do

Відповіді:


30

Введіть M-x projectile-invalidate-cacheі ви побачите команду із прив’язкою, переліченою поруч із нею. Для мене прив'язки сказали, M-m p Iщо це було правильно і має бути за замовчуванням, я підозрюю, що для святого режиму ( spc p Iдля злого режиму).


Мені б хотілося, щоб це було автоматично зробити.
Лорем Іпсум Долор

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)))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.