Как очистить кеш файла снаряда в 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для злого режима).


Я хотел бы, чтобы был способ сделать это автоматически.
Лорем Ипсум Долор

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.