diff options
author | Ludovic Court`es | 2006-07-31 16:29:34 +0000 |
---|---|---|
committer | Ludovic Court`es | 2006-07-31 16:29:34 +0000 |
commit | 7f3b61347a8170344fffea8335945baa24ebc543 (patch) | |
tree | bd4207b39efb0391ca9da58839c1dcf916f9d976 /src/guile/skribilo/module.scm | |
parent | 74b346c6c80c45db842143ccbbc41c055853ec4e (diff) | |
download | skribilo-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.scm | 56 |
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 |