这不会加快文件缓存的速度,但是节省了使无效缓存(不包含新文件)无效的手动步骤。
如果/your/projectile/project/root/.projectile
文件比项目缓存文件新,则Projectile自动使缓存无效。
每当您尝试使用Projectile在项目中查找任何文件时,都会执行此检查。projectile-find-file
或C-c p f
执行此操作的命令之一是否先检查。
(defun projectile-maybe-invalidate-cache (force)
"Invalidate if FORCE or project's dirconfig newer than cache."
(when (or force (file-newer-than-file-p (projectile-dirconfig-file)
projectile-cache-file))
(projectile-invalidate-cache nil)))
-从projectile.el
源头开始 -575-579行
因此解决方案是在更新项目时touch
使用.projectile
文件。例如,你可以alias
在git commit
,git pull
等做
touch /your/projectile/project/root/.projectile`
使用git
命令执行完所有操作后。
因此,如果您团队中的某人向项目中添加了一个新文件,并且(假设您正在使用git进行版本控制)您使用了特殊的别名git pull,projectile-find-file
则下次执行该操作时,缓存将自动失效。
M-x
projectile-cache-current-file
。如果您不想这样做,那么Emacs 必须遍历整个树以查找文件,因此无法进行优化。