如何清除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可行。
Kaushal Modi 2015年

我正在使用spacemacs,它重新定义了一些键映射。
Daniel Wu

2
可以更改密钥映射。我要求您确认键是否已绑定到您认为应该绑定的命令。但是,使用Mx方法是否有效?
Kaushal Modi 2015年

1
这是因为Spacemacs recentf用于对项目文件进行排序。在较早的Projectile版本中,即使删除了文件,Projectile仍然会重用过时的文件列表recentf。在更高的Projectile版本中,清除Projectile缓存还会清理recentf文件列表并删除已删除的文件。您应该更新到最新的Projectile,然后重试。
2015年

Answers:


30

键入M-x projectile-invalidate-cache,您将看到命令及其旁边列出的绑定。对我来说,绑定说的M-m p I是正确的,应该是我怀疑为神圣模式(spc p I邪恶模式)的默认绑定。


我希望有一种自动执行此操作的方法。
Lorem Ipsum Dolor,2013年

1
@LiXinyang您可以在配置中添加一个设置,该设置表示从不缓存项目文件。但是,这会导致项目操作在具有大量文件的任何项目上放慢速度。'(projectile-enable-caching nil)
Jimmy Hoffa

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)))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.