Since https://github.com/emacs-mirror/emacs/commit/370b216f08699bdd85b910868642df441c06306c project-find-file will produce a list where files located in a git submodule is listed relative to the submodule instead of relative to the project root. The problem happens when recursing into submodules if project--vc-merge-submodules-p is true. I managed to fix it locally by concating the module name to the file in the recursive call: (let ((sub-files-maybe-relative (project--vc-list-files (concat default-directory module) backend extra-ignores))) (if project-files-relative-names ;; If project--vc-list-files returns relative names, then concat the submodule name (mapcar (lambda (file) (concat (file-name-as-directory module) file)) sub-files-maybe-relative) sub-files-maybe-relative)) I don't know if this is the correct approach though. In GNU Emacs 29.3 (build 1, aarch64-apple-darwin23.5.0, NS appkit-2487.60 Version 14.5 (Build 23F79)) of 2024-06-12 built on WRY7PK7266 Windowing system distributor 'Apple', version 10.3.2487 System Description: macOS 14.5 Configured using: 'configure --disable-dependency-tracking --disable-silent-rules --enable-locallisppath=/opt/homebrew/share/emacs/site-lisp --infodir=/opt/homebrew/Cellar/emacs-plus@29/29.3/share/info/emacs --prefix=/opt/homebrew/Cellar/emacs-plus@29/29.3 --with-xml2 --with-gnutls --without-compress-install --without-dbus --without-imagemagick --with-modules --with-rsvg --with-ns --disable-ns-self-contained 'CFLAGS=-Os -w -pipe -mmacosx-version-min=14 -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk -DFD_SETSIZE=10000 -DDARWIN_UNLIMITED_SELECT' 'CPPFLAGS=-I/opt/homebrew/opt/icu4c/include -I/opt/homebrew/opt/sqlite/include -I/opt/homebrew/opt/readline/include -isystem/opt/homebrew/include -F/opt/homebrew/Frameworks -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk' 'LDFLAGS=-L/opt/homebrew/opt/icu4c/lib -L/opt/homebrew/opt/sqlite/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/lib -F/opt/homebrew/Frameworks -Wl,-headerpad_max_install_names -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk'' Configured features: ACL GIF GLIB GMP GNUTLS JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: ELisp/l Minor modes in effect: tree-sitter-hl-mode: t global-tree-sitter-mode: t tree-sitter-mode: t marginalia-mode: t savehist-mode: t vertico-mode: t corfu-popupinfo-mode: t global-corfu-mode: t corfu-mode: t which-key-mode: t rainbow-delimiters-mode: t global-whitespace-mode: t doom-modeline-mode: t server-mode: t windmove-mode: t recentf-mode: t override-global-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /Users/bohrarper/.emacs.d/elpa/cmake-mode-20240412.1329/cmake-mode hides /opt/homebrew/share/emacs/site-lisp/cmake/cmake-mode /Users/bohrarper/.emacs.d/elpa/protobuf-mode-20240222.1652/protobuf-mode hides /opt/homebrew/share/emacs/site-lisp/protobuf/protobuf-mode /Users/bohrarper/.emacs.d/elpa/transient-20240609.2020/transient hides /opt/homebrew/Cellar/emacs-plus@29/29.3/share/emacs/29.3/lisp/transient /Users/bohrarper/.emacs.d/elpa/jsonrpc-1.0.25/jsonrpc hides /opt/homebrew/Cellar/emacs-plus@29/29.3/share/emacs/29.3/lisp/jsonrpc /Users/bohrarper/.emacs.d/elpa/use-package-20230426.2324/use-package-jump hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/use-package/use-package-jump /Users/bohrarper/.emacs.d/elpa/use-package-20230426.2324/use-package-diminish hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/use-package/use-package-diminish /Users/bohrarper/.emacs.d/elpa/use-package-20230426.2324/use-package hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/use-package/use-package /Users/bohrarper/.emacs.d/elpa/use-package-20230426.2324/use-package-delight hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/use-package/use-package-delight /Users/bohrarper/.emacs.d/elpa/use-package-20230426.2324/use-package-lint hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/use-package/use-package-lint /Users/bohrarper/.emacs.d/elpa/bind-key-20230203.2004/bind-key hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/use-package/bind-key /Users/bohrarper/.emacs.d/elpa/use-package-20230426.2324/use-package-core hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/use-package/use-package-core /Users/bohrarper/.emacs.d/elpa/use-package-20230426.2324/use-package-ensure hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/use-package/use-package-ensure /Users/bohrarper/.emacs.d/elpa/use-package-20230426.2324/use-package-bind-key hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/use-package/use-package-bind-key /Users/bohrarper/.emacs.d/elpa/flymake-1.3.7/flymake hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/progmodes/flymake /Users/bohrarper/.emacs.d/elpa/xref-1.7.0/xref hides /opt/homebrew/Cellar/emacs-plus@29/29.3/share/emacs/29.3/lisp/progmodes/xref /Users/bohrarper/.emacs.d/elpa/project-0.11.0/project hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/progmodes/project /Users/bohrarper/.emacs.d/elpa/eglot-1.17/eglot hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/progmodes/eglot /Users/bohrarper/.emacs.d/elpa/eldoc-1.15.0/eldoc hides /opt/homebrew/Cellar/emacs-plus@29 /29.3/share/emacs/29.3/lisp/emacs-lisp/eldoc Features: (shadow sort mail-extr emacsbug message puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util mailabbrev gmm-utils mailheader sendmail mail-utils misearch multi-isearch face-remap yank-media markdown-mode noutline outline vc-git vc-dispatcher eglot external-completion jsonrpc xref flymake thingatpt diff diff-mode ert ewoc debug backtrace advice find-func filenotify warnings icons imenu vertico-directory cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs orderless cursor-sensor vertico-repeat project consult bookmark pulse color persistent-soft list-utils pcache eieio-base cl font-utils parse-time iso8601 time-date tree-sitter-langs tree-sitter-langs-build tar-mode arc-mode archive-mode pp tree-sitter-hl tree-sitter tree-sitter-load tree-sitter-cli tsc tsc-dyn tsc-dyn-get compile text-property-search comint ansi-osc ansi-color dired-aux dired dired-loaddefs tsc-obsolete marginalia savehist vertico clang-format xml corfu-popupinfo corfu cus-load which-key two-column hydra ring lv edmacro kmacro rainbow-delimiters disp-table whitespace material-theme doom-modeline doom-modeline-segments doom-modeline-env doom-modeline-core shrink-path f s dash nerd-icons nerd-icons-faces nerd-icons-data nerd-icons-data-mdicon nerd-icons-data-flicon nerd-icons-data-codicon nerd-icons-data-devicon nerd-icons-data-sucicon nerd-icons-data-wicon nerd-icons-data-faicon nerd-icons-data-powerline nerd-icons-data-octicon nerd-icons-data-pomicon nerd-icons-data-ipsicon compat unicode-fonts exec-path-from-shell delight server windmove recentf tree-widget wid-edit quelpa-use-package quelpa mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr lisp-mnt help-fns radix-tree cl-extra help-mode use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode use-package-core finder-inf all-the-icons-completion-autoloads all-the-icons-autoloads async-autoloads auto-compile-autoloads bazel-autoloads rx blacken-autoloads cargo-autoloads clang-format-autoloads cmake-mode-autoloads consult-autoloads copilot-autoloads corfu-terminal-autoloads corfu-autoloads dart-mode-autoloads doom-modeline-autoloads editorconfig-autoloads eglot-java-autoloads eglot-autoloads exec-path-from-shell-autoloads expand-region-autoloads flutter-autoloads flymake-autoloads eldoc-autoloads jsonrpc-autoloads kind-icon-autoloads magit-autoloads pcase git-commit-autoloads magit-section-autoloads marginalia-autoloads markdown-mode-autoloads multiple-cursors-autoloads nerd-icons-autoloads orderless-autoloads org-page-autoloads htmlize-autoloads prescient-autoloads project-autoloads project-mode-line-tag-autoloads protobuf-mode-autoloads quelpa-use-package-autoloads quelpa-autoloads rust-mode-autoloads f-autoloads simple-httpd-autoloads svg-lib-autoloads transient-autoloads tree-sitter-langs-autoloads tree-sitter-autoloads treemacs-autoloads posframe-autoloads dash-autoloads tsc-autoloads typescript-mode-autoloads unicode-fonts-autoloads vertico-autoloads web-mode-autoloads which-key-autoloads with-editor-autoloads info compat-autoloads xref-autoloads yaml-autoloads yaml-mode-autoloads yasnippet-snippets-autoloads yasnippet-autoloads zig-mode-autoloads reformatter-autoloads package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads kqueue cocoa ns lcms2 multi-tty make-network-process emacs) Memory information: ((conses 16 495522 257431) (symbols 48 30607 3) (strings 32 172029 24046) (string-bytes 1 4360706) (vectors 16 48125) (vector-slots 8 670691 444580) (floats 8 359 1216) (intervals 56 3756 2278) (buffers 984 19))