It works. Thanks.

Dmitry Gutov <dmitry@gutov.dev> 于2024年12月3日周二 10:15写道:
On 02/12/2024 07:15, Chu Maeda wrote:
>
> Of course, I created such a project on github, you could clone it by
> command:
>
> git clone --recurse-submodules https://github.com/chu-mirror/A.git
> <https://github.com/chu-mirror/A.git>
>
> The problem is clear when you open the file A/B/C/README.md, and run
> command project-find-file(C-x p f by default)

Thanks!

It seems we should switch from checking for modules once to doing it in
a loop. Try this out:

diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index cf1c94a6d20..3cc063a5d99 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -591,7 +591,7 @@ project-try-vc--search
                       last-matches))
             vc-handled-backends))
           project)
-    (when (and
+    (while (and
             (eq backend 'Git)
             (project--vc-merge-submodules-p root)
             (project--submodule-p root))

Note you might need to restart Emacs after applying the patch, because
the directory->project relation is currently cached until restart.