branch: elpa/hyperdrive
commit 6d23e595b5d58e5c71d0098127b2ead4e89eda7f
Author: Jonas Bernoulli <jo...@bernoul.li>
Commit: Jonas Bernoulli <jo...@bernoul.li>

    Add/Change: (-mirror-read-prediate) New function
    
    Created from existing code, previously in `hyperdrive-mirror'.
---
 hyperdrive-mirror.el | 33 ++++++++++++++++++---------------
 1 file changed, 18 insertions(+), 15 deletions(-)

diff --git a/hyperdrive-mirror.el b/hyperdrive-mirror.el
index 9146edd90b..5ce73f5a31 100644
--- a/hyperdrive-mirror.el
+++ b/hyperdrive-mirror.el
@@ -113,21 +113,7 @@ predicate and set NO-CONFIRM to t."
            :target-dir (hyperdrive-read-path :hyperdrive hyperdrive :prompt 
"Target directory in «%s»" :default "/")
            :no-confirm (equal '(16) current-prefix-arg)
            :predicate (if current-prefix-arg
-                          (let* ((collection
-                                  '(("Mirror all files" . (lambda ()
-                                                            #'always))
-                                    ("`rx' form" . (lambda ()
-                                                     (eval (read--expression 
"`rx' form: " "(rx )"))))
-                                    ("Regexp string" . (lambda ()
-                                                         (read-regexp "Regular 
expression: ")))
-                                    ("Lambda function" . (lambda ()
-                                                           (read--expression 
"Lambda: " "(lambda (filename) )")))
-                                    ("Named function" .
-                                     (lambda ()
-                                       (completing-read "Named function: " 
obarray #'functionp t)))))
-                                 (choice (completing-read "Predicate type: " 
collection))
-                                 (result (funcall (alist-get choice collection 
nil nil #'equal))))
-                            result)
+                          (hyperdrive-mirror-read-predicate)
                         #'always))))
   (cl-callf expand-file-name source)
   (setf target-dir (hyperdrive--format-path target-dir :directoryp t))
@@ -205,6 +191,23 @@ predicate and set NO-CONFIRM to t."
                                                  (hyperdrive-entry-url entry) 
plz-error))))))))
             (pop-to-buffer (current-buffer))))))))
 
+(defun hyperdrive-mirror-read-predicate ()
+  "Read a function for filtering source files for mirroring."
+  (let* ((collection
+          '(("Mirror all files" .
+             (lambda () #'always))
+            ("`rx' form" .
+             (lambda () (eval (read--expression "`rx' form: " "(rx )"))))
+            ("Regexp string" .
+             (lambda () (read-regexp "Regular expression: ")))
+            ("Lambda function" .
+             (lambda () (read--expression "Lambda: " "(lambda (filename) )")))
+            ("Named function"   .
+             (lambda () (completing-read "Named function: " obarray 
#'functionp t)))))
+         (choice (completing-read "Predicate type: " collection))
+         (result (funcall (alist-get choice collection nil nil #'equal))))
+    result))
+
 (defun hyperdrive-mirror-do-upload ()
   "Upload files in current \"*hyperdrive-mirror*\" buffer."
   (declare (modes hyperdrive-mirror-mode))

Reply via email to