aboutsummaryrefslogtreecommitdiff
path: root/src/guile/skribilo/module.scm
diff options
context:
space:
mode:
authorLudovic Court`es2006-07-31 16:29:34 +0000
committerLudovic Court`es2006-07-31 16:29:34 +0000
commit7f3b61347a8170344fffea8335945baa24ebc543 (patch)
treebd4207b39efb0391ca9da58839c1dcf916f9d976 /src/guile/skribilo/module.scm
parent74b346c6c80c45db842143ccbbc41c055853ec4e (diff)
downloadskribilo-7f3b61347a8170344fffea8335945baa24ebc543.tar.gz
skribilo-7f3b61347a8170344fffea8335945baa24ebc543.tar.lz
skribilo-7f3b61347a8170344fffea8335945baa24ebc543.zip
Moved the `sui' module; removed the `skribe' subdirectory.
* configure.ac: Don't produce `src/guile/skribilo/skribe/Makefile'. * src/guile/skribilo/Makefile.am (SUBDIRS): Removed `skribe'. * src/guile/skribilo/sui.scm: No longer use `define-skribe-module'. Rewrote the use the native hash-table API, `(ice-9 match)', and `format' instead of `fprint'. * src/guile/skribilo.scm (doskribe): Use `*skribilo-user-module*'. * src/guile/skribilo/evaluator.scm: Autoload `(skribilo module)'. (%evaluate): Evaluate EXPR in `*skribilo-user-module*'. * src/guile/skribilo/module.scm (%skribilo-user-autoloads): Added `(skribilo sui)'. (%skribe-core-modules): Removed. (define-skribe-module): Don't refer to it. (make-run-time-module): Use `the-root-module'. Properly build it using `make-autoload-interface' and `module-use-interfaces!' so that duplicates are correctly handled. (*skribilo-user-module*): New parameter. git-archimport-id: lcourtes@laas.fr--2005-libre/skribilo--devo--1.2--patch-40
Diffstat (limited to 'src/guile/skribilo/module.scm')
-rw-r--r--src/guile/skribilo/module.scm56
1 files changed, 22 insertions, 34 deletions
diff --git a/src/guile/skribilo/module.scm b/src/guile/skribilo/module.scm
index d8885b6..ac8eee0 100644
--- a/src/guile/skribilo/module.scm
+++ b/src/guile/skribilo/module.scm
@@ -23,7 +23,9 @@
:use-module (skribilo debug)
:use-module (srfi srfi-1)
:use-module (ice-9 optargs)
- :use-module (skribilo utils syntax))
+ :use-module (srfi srfi-39)
+ :use-module (skribilo utils syntax)
+ :export (make-run-time-module *skribilo-user-module*))
(fluid-set! current-reader %skribilo-module-reader)
@@ -85,13 +87,11 @@
((skribilo prog) . (make-prog-body resolve-line))
((skribilo color) .
(skribe-color->rgb skribe-get-used-colors skribe-use-color!))
+ ((skribilo sui) . (load-sui))
((ice-9 and-let-star) . (and-let*))
((ice-9 receive) . (receive))))
-(define %skribe-core-modules
- '("sui"))
-
;; The very macro to turn a legacy Skribe file (which uses Skribe's syntax)
@@ -110,14 +110,7 @@
;; Pull all the bindings that Skribe code may expect, plus those needed
;; to actually create and read the module.
;; TODO: These should be auto-loaded.
- ,(cons 'use-modules
- (append %skribilo-user-imports
- (filter-map (lambda (mod)
- (let ((m `(skribilo skribe
- ,(string->symbol
- mod))))
- (and (not (equal? m name)) m)))
- %skribe-core-modules)))
+ ,(cons 'use-modules %skribilo-user-imports)
;; Change the current reader to a Skribe-compatible reader. If this
;; primitive is not provided by Guile (i.e., version <= 1.7.2), then it
@@ -133,33 +126,28 @@
-(define %skribilo-user-module #f)
-
;;;
;;; MAKE-RUN-TIME-MODULE
;;;
-(define-public (make-run-time-module)
+(define (make-run-time-module)
"Return a new module that imports all the necessary bindings required for
execution of Skribilo/Skribe code."
- (let ((the-module (make-module)))
- (for-each (lambda (iface)
- (module-use! the-module (resolve-module iface)))
- (append %skribilo-user-imports
- (map (lambda (mod)
- `(skribilo skribe
- ,(string->symbol mod)))
- %skribe-core-modules)))
- (set-module-name! the-module '(skribilo-user))
- the-module))
-
-;;;
-;;; RUN-TIME-MODULE
-;;;
-(define-public (run-time-module)
- "Return the default instance of a Skribilo/Skribe run-time module."
- (if (not %skribilo-user-module)
- (set! %skribilo-user-module (make-run-time-module)))
- %skribilo-user-module)
+ (let* ((the-module (make-module))
+ (autoloads (map (lambda (name+bindings)
+ (make-autoload-interface the-module
+ (car name+bindings)
+ (cdr name+bindings)))
+ %skribilo-user-autoloads)))
+ (set-module-name! the-module '(skribilo-user))
+ (module-use-interfaces! the-module
+ (cons the-root-module
+ (append (map resolve-interface
+ %skribilo-user-imports)
+ autoloads)))
+ the-module))
+
+;; The current module in which the document is evaluated.
+(define *skribilo-user-module* (make-parameter (make-run-time-module)))
;;; module.scm ends here