Come cancellare la cache del file proiettile in spacemacs?


33

Sto usando spacemacse spesso uso l' SPC p fassociazione dei tasti per trovare i file in un projectileprogetto. Ma anche dopo aver rimosso un file da un git, SPC p fmi mostrerà quel file eliminato.

Ho provato a utilizzare SPC p Iper invalidare la cache, ma non ha funzionato.

Come risolvere il problema?


4
Puoi verificare che i collegamenti siano fatti correttamente? Cosa ottieni quando lo fai C-h k SPC p l? Dovrebbe essere vincolato a projectile-invalidate-cache. Controlla anche se M-x projectile-invalidate-cachefunziona.
— Kaushal Modi,

Sto usando spacemacs, ha ridefinito alcune mappature chiave.
— Daniel Wu,

2
Va bene cambiare la mappatura dei tasti. Ti sto chiedendo di confermare se le chiavi sono associate al comando che ritieni debba essere associato. Tuttavia, usando l'approccio Mx ha funzionato?
— Kaushal Modi,

1
È stato perché Spacemacs utilizza recentfper ordinare i file di progetto. Nella versione precedente di Projectile, anche dopo aver eliminato i file, Projectile ha ancora riutilizzato l'elenco dei file obsoleti recentf. Nella versione successiva di Projectile, la cancellazione della cache di Projectile pulisce anche l' recentfelenco dei file e rimuove i file eliminati. È necessario aggiornare all'ultimo proiettile e riprovare.
— Tu Do

Risposte:


30

Digita M-x projectile-invalidate-cachee vedrai il comando con i collegamenti elencati accanto. Per me i vincoli dicevano M-m p Iche era corretto e che dovrei essere il default che sospetto sia per la modalità sacra ( spc p Iper la modalità malvagia).


Vorrei che ci fosse un modo per farlo automaticamente.
— Lorem Ipsum Dolor,

1
@LiXinyang c'è un'impostazione che puoi inserire nella tua configurazione che dice di non memorizzare mai nella cache i file di progetto. Tuttavia, rallenta le operazioni del progetto su qualsiasi progetto con molti file. '(projectile-enable-caching nil)
— Jimmy Hoffa,

0

Ispirato alla domanda di @Xinyang Li sull'automazione del processo di invalidamento della cache, ho iniziato a utilizzare i frammenti di seguito per cancellare la cache dei proiettili per il progetto corrente dopo il passaggio da un progetto all'altro e cancellare la cache di tutti i progetti dopo l'inizializzazione di 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)))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.