branch: externals/truename-cache
commit 810a78e532c9743d1484a4e0a2a84b2f7d68e054
Author: Martin Edström <[email protected]>
Commit: Martin Edström <[email protected]>
Fix wrong type argument: stringp nil
Don't be too clever with cl-loop.
---
truename-cache.el | 58 +++++++++++++++++++++++++++++--------------------------
1 file changed, 31 insertions(+), 27 deletions(-)
diff --git a/truename-cache.el b/truename-cache.el
index 25419f8809..eefbe15990 100644
--- a/truename-cache.el
+++ b/truename-cache.el
@@ -388,6 +388,8 @@ of `file-name-handler-alist'."
(defvar truename-cache--visited (make-hash-table :test 'equal))
(defvar truename-cache--results nil)
+;; "If you have a procedure with ten parameters, you probably missed some."
+;; --- https://www.cs.yale.edu/homes/perlis-alan/quotes.html
(cl-defun truename-cache-collect-files-and-attributes
( &rest args &key
_side-effect
@@ -557,20 +559,22 @@ Otherwise, they are quietly skipped."
;; pass specific subdirs that would otherwise be blocked by a
;; deny-regexp or by :resolve-symlinks nil.
(filtered-true-recursive-roots
- (delete-dups
- (cl-loop
- for dir in (seq-uniq dirs-recursive)
- when (and (or (file-name-absolute-p dir)
- (error "Non-absolute name in DIRS-RECURSIVE: %s"
dir))
- (or (not FULL-DIR-DENY-RE)
- (not (string-match-p FULL-DIR-DENY-RE dir))))
- as true-dir = (file-name-as-directory (file-truename dir))
- when (and (or (file-readable-p true-dir)
- (when assert-readable
- (error "Directory not readable: %s" dir)))
- (or (not FULL-DIR-DENY-RE)
- (not (string-match-p FULL-DIR-DENY-RE true-dir))))
- collect true-dir)))
+ (seq-filter
+ (lambda (true-dir)
+ (when assert-readable
+ (cl-assert (file-readable-p true-dir) nil
+ "Directory not readable: %s" true-dir))
+ (not (and FULL-DIR-DENY-RE
+ (string-match-p FULL-DIR-DENY-RE true-dir))))
+ (delete-dups
+ (cl-loop
+ for dir in (seq-uniq dirs-recursive)
+ when (and (and assert-readable
+ (not (cl-assert (file-name-absolute-p dir) nil
+ "Non-absolute name in
DIRS-RECURSIVE: %s" dir)))
+ (not (and FULL-DIR-DENY-RE
+ (string-match-p FULL-DIR-DENY-RE dir))))
+ collect (file-name-as-directory (file-truename dir))))))
(test-roots (delete-dups (append filtered-true-recursive-roots
dirs-recursive)))
(inferred-dirs
@@ -600,19 +604,19 @@ Otherwise, they are quietly skipped."
(dolist (dir dirs-flat)
(unless (file-name-absolute-p dir)
(error "Non-absolute name in DIRS-FLAT: %s" dir)))
- (delete-dups
- (cl-loop
- for dir in (delete-dups (append dirs-flat inferred-dirs))
- when (or (not FULL-DIR-DENY-RE)
- (not (string-match-p FULL-DIR-DENY-RE dir)))
- as true-dir = (file-name-as-directory (file-truename dir))
- when (and (or (file-readable-p true-dir)
- (if assert-readable
- (error "Directory not readable: %s" dir)
- nil))
- (or (not FULL-DIR-DENY-RE)
- (not (string-match-p FULL-DIR-DENY-RE
true-dir))))
- collect true-dir)))))
+ (seq-filter
+ (lambda (true-dir)
+ (when assert-readable
+ (cl-assert (file-readable-p true-dir) nil
+ "Directory not readable: %s" true-dir))
+ (not (and FULL-DIR-DENY-RE
+ (string-match-p FULL-DIR-DENY-RE true-dir))))
+ (delete-dups
+ (cl-loop
+ for dir in (delete-dups (append dirs-flat inferred-dirs))
+ when (not (and FULL-DIR-DENY-RE
+ (string-match-p FULL-DIR-DENY-RE dir)))
+ collect (file-name-as-directory (file-truename dir))))))))
(clrhash truename-cache--visited)
(setq truename-cache--results nil)
(with-temp-buffer ; No buffer-env