summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ice-9/ChangeLog10
-rw-r--r--ice-9/boot-9.scm21
2 files changed, 23 insertions, 8 deletions
diff --git a/ice-9/ChangeLog b/ice-9/ChangeLog
index e40d8a185..903447194 100644
--- a/ice-9/ChangeLog
+++ b/ice-9/ChangeLog
@@ -1,3 +1,13 @@
+1998-06-07 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * boot-9.scm (use-syntax): Turned into a macro inorder to be
+ similar in use to `use-modules'.
+ Example: (use-syntax (ice-9 syncase)) will 1. load the module
+ (ice-9 syncase), and, 2. install the procedure `syncase' as eval
+ transformer.
+ (internal-use-syntax): New procedure.
+ (process-define-module): Use `internal-use-syntax'.
+
1998-05-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
* Makefile.am (ice9_sources): Add emacs.scm.
diff --git a/ice-9/boot-9.scm b/ice-9/boot-9.scm
index 6e38717e9..7e768899b 100644
--- a/ice-9/boot-9.scm
+++ b/ice-9/boot-9.scm
@@ -1861,6 +1861,10 @@
(define %autoloader-developer-mode #t)
+(define (internal-use-syntax transformer)
+ (set-module-transformer! (current-module) transformer)
+ (set! scm:eval-transformer transformer))
+
(define (process-define-module args)
(let* ((module-id (car args))
(module (resolve-module module-id #f))
@@ -1893,11 +1897,9 @@
(if (not interface)
(error "missing interface for use-module" used-module))
(if (eq? keyword 'use-syntax)
- (let ((transformer (module-ref interface
- (car (last-pair used-name))
- #f)))
- (set-module-transformer! module transformer)
- (set! scm:eval-transformer transformer)))
+ (internal-use-syntax
+ (module-ref interface (car (last-pair used-name))
+ #f)))
(loop (cddr kws) (cons interface reversed-interfaces)))))
(else
(error "unrecognized defmodule argument" kws))))))
@@ -2717,9 +2719,12 @@
(defmacro use-modules modules
`(process-use-modules ',modules))
-(define (use-syntax transformer)
- (set-module-transformer! (current-module) transformer)
- (set! scm:eval-transformer transformer))
+(defmacro use-syntax (spec)
+ (if (pair? spec)
+ `(begin
+ (process-use-modules ',(list spec))
+ (internal-use-syntax ,(car (last-pair spec))))
+ `(internal-use-syntax ,spec)))
(define define-private define)