[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/scanner 5f06a4a 21/56: implement correct cleanup and er
From: |
Stefan Monnier |
Subject: |
[elpa] externals/scanner 5f06a4a 21/56: implement correct cleanup and error handling (scanner-scan-document) |
Date: |
Fri, 10 Apr 2020 13:56:01 -0400 (EDT) |
branch: externals/scanner
commit 5f06a4a0fdf3bf186c511eb8fa47fe76ffd6e4db
Author: Raffael Stocker <address@hidden>
Commit: Raffael Stocker <address@hidden>
implement correct cleanup and error handling (scanner-scan-document)
---
scanner.el | 42 +++++++++++++++++++++++++-----------------
1 file changed, 25 insertions(+), 17 deletions(-)
diff --git a/scanner.el b/scanner.el
index b785df0..afc2e93 100644
--- a/scanner.el
+++ b/scanner.el
@@ -411,13 +411,17 @@ available, ask for a selection interactively."
(file-list '())
(fl-file nil))
(cl-labels ((cleanup
+ ()
+ (and file-list (dolist (file file-list)
+ (delete-file file)))
+ (and fl-file (delete-file fl-file)))
+ (finish
(process event)
- (let ((ev (string-trim event)))
- (unless (string= "finished" ev)
- (message "%s: %s" process ev))
- (dolist (file file-list)
- (delete-file file))
- (delete-file fl-file)))
+ (unwind-protect
+ (let ((ev (string-trim event)))
+ (unless (string= "finished" ev)
+ (error "%s: %s" process ev)))
+ (cleanup)))
(tesseract
()
(setq file-list (nreverse file-list))
@@ -429,19 +433,23 @@ available, ask for a selection interactively."
(make-process :name "Scanner (tesseract)"
:command `(,scanner-tesseract-program
,@tesseract-args)
- :sentinel #'cleanup)))
+ :sentinel #'finish)))
(scan-or-finish
(process event)
- (let ((ev (string-trim event)))
- (unless (string= "finished" ev)
- (error "%s: %s" process ev))
- (cond ((consp npages) (if (y-or-n-p "Scan another page? ")
- (scanimage)
- (tesseract)))
- ((> num-pages 1)
- (cl-decf num-pages)
- (run-at-time scanner-scan-delay nil #'scanimage))
- (t (tesseract)))))
+ (condition-case err
+ (let ((ev (string-trim event)))
+ (unless (string= "finished" ev)
+ (error "%s: %s" process ev))
+ (cond ((consp npages) (if (y-or-n-p "Scan another page?
")
+ (scanimage)
+ (tesseract)))
+ ((> num-pages 1)
+ (cl-decf num-pages)
+ (run-at-time scanner-scan-delay nil #'scanimage))
+ (t (tesseract))))
+ (error
+ (cleanup)
+ (signal (car err) (cdr err)))))
(scanimage
()
(let* ((img-file (make-temp-file "scanner" nil (concat "."
fmt)))
- [elpa] externals/scanner 4596ed9 09/56: add autoloads, minor refactoring, (continued)
- [elpa] externals/scanner 4596ed9 09/56: add autoloads, minor refactoring, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 30b97d3 05/56: add implementation of image scanning and first test case, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 9665335 10/56: add a menu and configuration functions, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner d5be7b8 12/56: clean up resolution setters, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 1e60cd2 03/56: add test and check targets to Makefile, gitignore dep, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 5bc37ff 02/56: add more customizations and validations, arglist functions, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner c952d0d 15/56: rename -options to -switches, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner e5c74e6 11/56: implement multi-page scan modes, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner dbb0ee4 14/56: add commentary, correct docstrings, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 3e0398c 22/56: correct to eval-and-compile (scanner--device-specific-switches), Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 5f06a4a 21/56: implement correct cleanup and error handling (scanner-scan-document),
Stefan Monnier <=
- [elpa] externals/scanner 536e998 16/56: move commands were they belong, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 31c8a49 08/56: add document scanning command and test cases, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 2147abd 30/56: add tests for the configuration commands, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 6adbc64 28/56: correct argument handling in all the interactive specs, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner c63d2f9 31/56: update Readme.org, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 68b5c5f 18/56: update tests, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 15bc51d 25/56: correct the ‘run’ make target, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner bc9b16c 27/56: correct a comment and whitespace, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 930448a 24/56: improve docstrings, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 8219c0e 29/56: add ‘scanner-select-device’ to the menu, Stefan Monnier, 2020/04/10