mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-04 22:40:25 +02:00
* 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'.
This commit is contained in:
parent
6dabf6a95c
commit
cf26610900
2 changed files with 23 additions and 8 deletions
|
@ -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>
|
1998-05-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
|
||||||
|
|
||||||
* Makefile.am (ice9_sources): Add emacs.scm.
|
* Makefile.am (ice9_sources): Add emacs.scm.
|
||||||
|
|
|
@ -1861,6 +1861,10 @@
|
||||||
|
|
||||||
(define %autoloader-developer-mode #t)
|
(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)
|
(define (process-define-module args)
|
||||||
(let* ((module-id (car args))
|
(let* ((module-id (car args))
|
||||||
(module (resolve-module module-id #f))
|
(module (resolve-module module-id #f))
|
||||||
|
@ -1893,11 +1897,9 @@
|
||||||
(if (not interface)
|
(if (not interface)
|
||||||
(error "missing interface for use-module" used-module))
|
(error "missing interface for use-module" used-module))
|
||||||
(if (eq? keyword 'use-syntax)
|
(if (eq? keyword 'use-syntax)
|
||||||
(let ((transformer (module-ref interface
|
(internal-use-syntax
|
||||||
(car (last-pair used-name))
|
(module-ref interface (car (last-pair used-name))
|
||||||
#f)))
|
#f)))
|
||||||
(set-module-transformer! module transformer)
|
|
||||||
(set! scm:eval-transformer transformer)))
|
|
||||||
(loop (cddr kws) (cons interface reversed-interfaces)))))
|
(loop (cddr kws) (cons interface reversed-interfaces)))))
|
||||||
(else
|
(else
|
||||||
(error "unrecognized defmodule argument" kws))))))
|
(error "unrecognized defmodule argument" kws))))))
|
||||||
|
@ -2717,9 +2719,12 @@
|
||||||
(defmacro use-modules modules
|
(defmacro use-modules modules
|
||||||
`(process-use-modules ',modules))
|
`(process-use-modules ',modules))
|
||||||
|
|
||||||
(define (use-syntax transformer)
|
(defmacro use-syntax (spec)
|
||||||
(set-module-transformer! (current-module) transformer)
|
(if (pair? spec)
|
||||||
(set! scm:eval-transformer transformer))
|
`(begin
|
||||||
|
(process-use-modules ',(list spec))
|
||||||
|
(internal-use-syntax ,(car (last-pair spec))))
|
||||||
|
`(internal-use-syntax ,spec)))
|
||||||
|
|
||||||
(define define-private define)
|
(define define-private define)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue