summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.dir-locals.el1
-rw-r--r--email/utils.scm8
2 files changed, 9 insertions, 0 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
index fe85f10..16b44ef 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -5,6 +5,7 @@
   (indent-tabs-mode))
  (scheme-mode
   (eval put 'call-with-port 'scheme-indent-function 1)
+  (eval put 'not-end-let 'scheme-indent-function 1)
   (eval put 'test-email= 'scheme-indent-function 1)
   (eval put 'test-alist= 'scheme-indent-function 1)))
 
diff --git a/email/utils.scm b/email/utils.scm
index 984f07e..97c1b5a 100644
--- a/email/utils.scm
+++ b/email/utils.scm
@@ -35,6 +35,14 @@
             acons*
 	    alist-combine))
 
+(define-syntax-rule (not-end-let (var expr) body ...)
+  "Bind result of EXPR to VAR. If VAR is an end-of-file object, return
+it. Else, execute BODY."
+  (let ((var expr))
+    (if (eof-object? var)
+        var
+        (begin body ...))))
+
 (define (read-objects read-proc port)
   "Read all objects using READ-PROC from PORT and return them as a
 list."