Jak wyczyścić pamięć podręczną pliku pocisku w znakach kosmicznych?

33

Używam spacemacsi często używam SPC p fpowiązania klawiszy, aby znaleźć pliki w projectileprojekcie. Ale nawet po usunięciu pliku z git, SPC p fpokaże mi ten usunięty plik.

Próbowałem użyć SPC p Ido unieważnienia pamięci podręcznej, ale to nie zadziałało.

Jak rozwiązać problem?

Daniel Wu
źródło
4
Czy możesz sprawdzić, czy powiązania są wykonane poprawnie? Co dostajesz, kiedy to robisz C-h k SPC p l? Powinien być związany projectile-invalidate-cache. Sprawdź także, czy M-x projectile-invalidate-cachedziała.
Kaushal Modi
Używam spacemacs, to ponownie zdefiniowało niektóre mapowanie klawiszy.
Daniel Wu
2
Można zmienić mapowanie klawiszy. Proszę cię o potwierdzenie, czy klucze są powiązane z poleceniem, które Twoim zdaniem powinno być związane. Niemniej jednak, czy zastosowanie podejścia Mx działało?
Kaushal Modi
1
Stało się tak, ponieważ Spacemacs używa recentfdo sortowania plików projektu. W starszej wersji Projectile, nawet po usunięciu plików, Projectile nadal używał przestarzałej listy plików recentf. W późniejszej wersji pocisku wyczyszczenie pamięci podręcznej pocisku powoduje również wyczyszczenie recentflisty plików i usunięcie usuniętych plików. Powinieneś zaktualizować do najnowszego pocisku i spróbować ponownie.
Tu Do

Odpowiedzi:

30

Wpisz, M-x projectile-invalidate-cachea zobaczysz polecenie z powiązaniami wymienionymi obok niego. Dla mnie powiązania powiedziały, M-m p Ico było poprawne i powinno być domyślnym, co podejrzewam dla trybu świętego ( spc p Idla trybu zła).

Jimmy Hoffa
źródło
Chciałbym, aby istniał sposób na automatyczne wykonanie tego.
Lorem Ipsum Dolor
1
@LiXinyang istnieje ustawienie, które można ustawić w konfiguracji, które mówi, aby nigdy nie buforować plików projektu. Powoduje to jednak spowolnienie operacji na projektach z dużą ilością plików. '(projectile-enable-caching nil)
Jimmy Hoffa,
0

Zainspirowany pytaniem @Xinyang Li na temat automatyzacji procesu unieważniania pamięci podręcznej, zacząłem używać fragmentów poniżej, aby wyczyścić pamięć podręczną pocisków dla bieżącego projektu po przełączeniu się między projektami i wyczyścić pamięć podręczną wszystkich projektów po zainicjowaniu emacsa.

(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
źródło