From: Stefan Monnier Date: Tue, 21 Nov 2000 22:07:43 +0000 (+0000) Subject: (find-lisp-find-files-internal): X-Git-Tag: emacs-pretest-21.0.92~214 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=43adc2135610742bd9d2888dd25f0a290289183b;p=emacs.git (find-lisp-find-files-internal): Use dolist, when and file-name-as-directory. --- diff --git a/lisp/find-lisp.el b/lisp/find-lisp.el index e865d29ca67..c1132243963 100644 --- a/lisp/find-lisp.el +++ b/lisp/find-lisp.el @@ -119,8 +119,7 @@ Argument DIR is the directory containing FILE." "Find files in DIRECTORY which match REGEXP." (let ((file-predicate 'find-lisp-default-file-predicate) (directory-predicate 'find-lisp-default-directory-predicate) - (find-lisp-regexp regexp) - ) + (find-lisp-regexp regexp)) (find-lisp-find-files-internal directory file-predicate @@ -135,34 +134,28 @@ directory. DIRECTORY-PREDICATE is used to decide whether to descend into directories. It is a function which takes two arguments, the directory and its parent." - (or (string-match "/$" directory) - (setq directory (concat directory "/"))) + (setq directory (file-name-as-directory directory)) (let (results sub-results) - (mapcar - (function - (lambda(file) - (let ((fullname (expand-file-name file directory))) - (and (file-readable-p (expand-file-name file directory)) + (dolist (file (directory-files directory nil nil t)) + (let ((fullname (expand-file-name file directory))) + (when (file-readable-p (expand-file-name file directory)) + ;; If a directory, check it we should descend into it + (and (file-directory-p fullname) + (funcall directory-predicate file directory) (progn - ;; If a directory, check it we should descend into it - (and (file-directory-p fullname) - (funcall directory-predicate file directory) - (progn - (setq sub-results - (find-lisp-find-files-internal - fullname - file-predicate - directory-predicate)) - (if results - (nconc results sub-results) - (setq results sub-results)))) - ;; For all files and directories, call the file predicate - (and (funcall file-predicate file directory) - (if results - (nconc results (list fullname)) - (setq results (list fullname)))) - ))))) - (directory-files directory nil nil t)) + (setq sub-results + (find-lisp-find-files-internal + fullname + file-predicate + directory-predicate)) + (if results + (nconc results sub-results) + (setq results sub-results)))) + ;; For all files and directories, call the file predicate + (and (funcall file-predicate file directory) + (if results + (nconc results (list fullname)) + (setq results (list fullname))))))) results)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;