# HG changeset patch # User Stefan Monnier # Date 974844463 0 # Node ID bec245584796d4b863bfbd79c6c5c1ca179a35dc # Parent bfee926318b15bc62ead6dca3b163d916b7a277e (find-lisp-find-files-internal): Use dolist, when and file-name-as-directory. diff -r bfee926318b1 -r bec245584796 lisp/find-lisp.el --- a/lisp/find-lisp.el Tue Nov 21 21:47:25 2000 +0000 +++ b/lisp/find-lisp.el Tue Nov 21 22:07:43 2000 +0000 @@ -119,8 +119,7 @@ "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-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)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;