diff options
author | ookami <mail@ookami.one> | 2022-09-10 14:56:08 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2022-09-10 14:57:48 +0200 |
commit | 4cf9c92e27d20da9453f9abe89d84bee5d776329 (patch) | |
tree | c1c9b82ad65732e70e3b7fed868a3171c1dee753 | |
parent | b2956a3f094abba519ec5baaaa5e3c2236c61832 (diff) | |
download | emacs-4cf9c92e27d20da9453f9abe89d84bee5d776329.tar.gz |
Fix project-remember-projects-under when recursing
* lisp/progmodes/project.el (project-remember-projects-under):
Actually recurse into directories (bug#57714).
Copyright-paperwork-exempt: yes
-rw-r--r-- | lisp/progmodes/project.el | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 30f51704dca..ee94d0d85d8 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -1498,7 +1498,8 @@ the progress. The function returns the number of detected projects." (interactive "DDirectory: \nP") (project--ensure-read-project-list) - (let ((queue (directory-files dir t nil t)) (count 0) + (let ((queue (list dir)) + (count 0) (known (make-hash-table :size (* 2 (length project--list)) :test #'equal ))) @@ -1506,15 +1507,20 @@ projects." (puthash project t known)) (while queue (when-let ((subdir (pop queue)) - ((file-directory-p subdir)) - ((not (gethash subdir known)))) - (when-let (pr (project--find-in-directory subdir)) - (project-remember-project pr t) - (message "Found %s..." (project-root pr)) + ((file-directory-p subdir))) + (when-let ((project (project--find-in-directory subdir)) + (project-root (project-root project)) + ((not (gethash project-root known)))) + (project-remember-project project t) + (puthash project-root t known) + (message "Found %s..." project-root) (setq count (1+ count))) - (when (and recursive (file-symlink-p subdir)) - (setq queue (nconc (directory-files subdir t nil t) queue)) - (puthash subdir t known)))) + (when (and recursive (file-directory-p subdir)) + (setq queue + (nconc + (directory-files + subdir t directory-files-no-dot-files-regexp t) + queue))))) (unless (eq recursive 'in-progress) (if (zerop count) (message "No projects were found") |