This appears to be intentional behavior of project's caching implemented via (vc-file-getprop dir 'project-vc) and (vc-file-setprop dir 'project-vc project) in project-try-vc. There is no facility, public API or private, to clear the cache en-masse. One could reset the cache via clearing the vector vc-file-prop-obarray (setq vc-file-prop-obarray (make-vector 17 0)) in the absence of an API. You can observe what's in your vc-file-prop-obarray for yourself before taking this action. Hope that helps, -Stephane On Sun, Aug 4, 2024 at 4:16 AM Eli Zaretskii wrote: > > Date: Thu, 25 Jul 2024 21:54:24 +0200 > > From: Federico Tedin via "Bug reports for GNU Emacs, > > the Swiss army knife of text editors" > > > > In Emacs master e56e4b345a2, `emacs -q`: > > > > I'm having problems trying to make project.el detect a new project that > > is contained in the directory of another project. > > > > I have a directory called 'scratch' which contains a '.git' directory, a > > file 'test.py' and a directory 'foo'. The 'foo' directory contains a > > file called 'foo.py'. > > > > > > ~/scratch/ > > .git/ > > main.py > > foo/ > > foo.py > > > > > > If I open 'main.py', `(project-current)' evals to the expected: `(vc Git > > "~/scratch")'. > > > > If I open 'foo.py', `(project-current)' also evals to `(vc Git > > "~/scratch")', which is expected. > > > > However if now I cd into 'foo/' and run `git init`, then I would expect > > project.el to now consider 'foo.py' to be in another project - `(vc Git > > "~/scratch/foo")'. However, if I evaluate `(project-current)' when > > visiting 'foo.py', I still get `(vc Git "~/scratch")'. > > > > If I kill the buffer visiting 'foo.py' and open the file again, I get > > the same result. > > > > Interestingly, if I run 'M-x project-remember-projects-under' with > > '~/scratch/foo' as path, it does inform me that the new project has been > > found. However visiting 'foo.py` still results in `(vc Git "~/scratch")' > > as the current project. > > > > If I restart Emacs then the problem is solved; 'foo.py' is correctly > > filed under project `(vc Git "~/scratch/foo")'. > > > > The fact that this works correctly after restarting makes me think > > that there must be some runtime state set up that is preventing the > > desired behaviour to happen. > > Dmitry, any comments or suggestions? > > > >