emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/scanner 6adbc64 28/56: correct argument handling in all


From: Stefan Monnier
Subject: [elpa] externals/scanner 6adbc64 28/56: correct argument handling in all the interactive specs
Date: Fri, 10 Apr 2020 13:56:03 -0400 (EDT)

branch: externals/scanner
commit 6adbc64dd08d3df9b6fb06453ae5a95d5d10dc19
Author: Raffael Stocker <address@hidden>
Commit: Raffael Stocker <address@hidden>

    correct argument handling in all the interactive specs
---
 scanner.el | 77 +++++++++++++++++++++++++++++++++++---------------------------
 1 file changed, 43 insertions(+), 34 deletions(-)

diff --git a/scanner.el b/scanner.el
index d57f1e1..c40a6f4 100644
--- a/scanner.el
+++ b/scanner.el
@@ -350,57 +350,66 @@ availability of required options."
               (user-error "No scanning device was found"))
              ((eql 1 num-devices)
               (setq scanner-device-name (caar scanner--detected-devices)))
-             (t (scanner-select-device)))))
+             (t (call-interactively #'scanner-select-device)))))
     (scanner--check-device-switches)))
 
 
-(defun scanner-select-papersize ()
-  "Select the papersize for document scanning."
-  (interactive)
-  (let ((choices (delq nil (mapcar (lambda (x) (and (keywordp x)
-                                              (substring (symbol-name x) 1)))
-                                  scanner-paper-sizes))))
-    (setq scanner-doc-papersize
-         (intern (concat ":" (completing-read "Papersize: " choices nil t))))))
-
-(defun scanner-select-languages ()
-  "Select languages for optical character recognition."
-  (interactive)
-  (let ((langs (cdr (process-lines scanner-tesseract-program
-                                  "--list-langs"))))
-    (setq scanner-tesseract-languages
-         (completing-read-multiple "Languages: " langs nil t))))
+(defun scanner-select-papersize (size)
+  "Select the papersize SIZE for document scanning."
+  (interactive
+   (let ((choices (delq nil (mapcar (lambda (x) (and (keywordp x)
+                                          (substring (symbol-name x) 1)))
+                                   scanner-paper-sizes))))
+     (list (intern (concat ":"
+                          (completing-read "Papersize: " choices nil t))))))
+  (unless (plist-member scanner-paper-sizes size)
+    (signal 'args-out-of-range `(,size)))
+  (setq scanner-doc-papersize size))
+
+(defun scanner-select-languages (languages)
+  "Select LANGUAGES for optical character recognition."
+  (interactive
+   (let ((langs (cdr (process-lines scanner-tesseract-program
+                                   "--list-langs"))))
+     (list (completing-read-multiple "Languages: " langs nil t))))
+  (unless (consp languages)
+    (signal 'wrong-type-argument `(consp ,languages)))
+  (setq scanner-tesseract-languages languages))
 
 (defun scanner-set-image-resolution (resolution)
   "Set the RESOLUTION for scanning images."
   (interactive "NImage scan resolution: ")
+  (unless (numberp resolution)
+    (signal 'wrong-type-argument `(numberp ,resolution)))
   (plist-put scanner-resolution :image resolution))
 
 (defun scanner-set-document-resolution (resolution)
   "Set the RESOLUTION for scanning documents."
   (interactive "NDocument scan resolution: ")
+  (unless (numberp resolution)
+    (signal 'wrong-type-argument `(numberp ,resolution)))
   (plist-put scanner-resolution :doc resolution))
 
-(defun scanner-select-device (&optional detect)
-  "Select a scanning device, maybe running auto-detection.
-If DETECT is non-nil or a prefix argument is supplied, force
-auto-detection.  Without an argument, auto-detect only if
-no devices have been detected yet.
+(defun scanner-select-device (device)
+  "Select a scanning DEVICE.
+If a prefix argument is supplied, force auto-detection.
+Otherwise, auto-detect only if no devices have been detected
+previously.
 
 The selected device will be used for any future scan until a new
 selection is made."
-  (interactive "P")
-  (let* ((devices (if detect
-                     (scanner--detect-devices)
-                   (or scanner--detected-devices
-                       (scanner--detect-devices))))
-        (choices (mapcar (lambda (dev)
-                           (concat (caddr dev) " (" (car dev) ")"))
-                         devices)))
-    (setq scanner-device-name
-         (cadr (split-string
-                (completing-read "Select scanning device: " choices nil t)
-                "(" t ")")))))
+  (interactive
+   (let* ((devices (if current-prefix-arg
+                      (scanner--detect-devices)
+                    (or scanner--detected-devices
+                        (scanner--detect-devices))))
+         (choices (mapcar (lambda (dev)
+                            (concat (caddr dev) " (" (car dev) ")"))
+                          devices)))
+     (list (cadr (split-string
+                 (completing-read "Select scanning device: " choices nil t)
+                 "(" t ")")))))
+  (setq scanner-device-name device))
 
 ;;;###autoload
 (defun scanner-scan-document (npages filename)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]