From 2a17d5acfcf0b748aaad9d01ff341ed6da315a48 Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Sat, 28 Oct 2023 22:20:41 -0700 Subject: [PATCH] Exclude Git submodules from 'project-files' * lisp/progmodes/project.el (project--vc-list-files): Exclude Git submodules. (project-search, project-query-replace-regexp): Remove now-unneeded workaround. --- lisp/progmodes/project.el | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index fda1081eb62..a3fa1b320a8 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -647,6 +647,7 @@ project--vc-list-files (include-untracked (project--value-in-dir 'project-vc-include-untracked dir)) + (submodules (project--git-submodules)) files) (setq args (append args '("-c" "--exclude-standard") @@ -680,13 +681,14 @@ project--vc-list-files (setq files (mapcar (lambda (file) (concat default-directory file)) - (split-string - (apply #'vc-git--run-command-string nil "ls-files" args) - "\0" t))) + (seq-difference + (split-string + (apply #'vc-git--run-command-string nil "ls-files" args) + "\0" t) + submodules))) (when (project--vc-merge-submodules-p default-directory) ;; Unfortunately, 'ls-files --recurse-submodules' conflicts with '-o'. - (let* ((submodules (project--git-submodules)) - (sub-files + (let ((sub-files (mapcar (lambda (module) (when (file-directory-p module) @@ -1326,8 +1328,7 @@ project-search (interactive "sSearch (regexp): ") (fileloop-initialize-search regexp - ;; XXX: See the comment in project-query-replace-regexp. - (cl-delete-if-not #'file-regular-p (project-files (project-current t))) + (project-files (project-current t)) 'default) (fileloop-continue)) @@ -1348,10 +1349,7 @@ project-query-replace-regexp (list from to)))) (fileloop-initialize-replace from to - ;; XXX: Filter out Git submodules, which are not regular files. - ;; `project-files' can return those, which is arguably suboptimal, - ;; but removing them eagerly has performance cost. - (cl-delete-if-not #'file-regular-p (project-files (project-current t))) + (project-files (project-current t)) 'default) (fileloop-continue)) -- 2.25.1