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.