diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-04-01 02:19:32 +0200 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-04-01 02:19:32 +0200 |
commit | d96fe6fc9dbad5d65abe271ceb692f732d53e2fe (patch) | |
tree | 3a4ffdb048ad7692c7c79fda5dbd320f05bf5fd8 /scheme/plt/geiser/modules.ss | |
parent | 8c47f6099fd05e2feb7cb51e15d39911ef48411d (diff) | |
download | geiser-guile-d96fe6fc9dbad5d65abe271ceb692f732d53e2fe.tar.gz geiser-guile-d96fe6fc9dbad5d65abe271ceb692f732d53e2fe.tar.bz2 |
PLT: Major module loading surgery.
This is a dangerous commit. If you use PLT and don't like to live on
the edge, just stick with tag 0.0.9 until 0.0.10 is out.
Diffstat (limited to 'scheme/plt/geiser/modules.ss')
-rw-r--r-- | scheme/plt/geiser/modules.ss | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/scheme/plt/geiser/modules.ss b/scheme/plt/geiser/modules.ss index 9842174..829cf77 100644 --- a/scheme/plt/geiser/modules.ss +++ b/scheme/plt/geiser/modules.ss @@ -20,7 +20,7 @@ module-list module-exports) -(require srfi/13 scheme/enter syntax/modresolve syntax/modcode) +(require srfi/13 syntax/modresolve syntax/modcode geiser/enter) (define (ensure-module-spec spec) (cond ((symbol? spec) spec) @@ -28,22 +28,22 @@ (else `(file ,spec)))) (define (module-spec->namespace spec (lang #f)) - (let ((spec (ensure-module-spec spec))) - (if spec - (with-handlers ((exn? - (lambda (_) - (with-handlers - ((exn? (const (current-namespace)))) + (let ((spec (ensure-module-spec spec)) + (try-lang (lambda (_) + (with-handlers ((exn? (const (current-namespace)))) + (and lang + (begin (load-module lang #f (current-namespace)) - (module->namespace lang))))) - (module->namespace spec)) + (module->namespace lang))))))) + (or (and spec + (with-handlers ((exn? try-lang)) (get-namespace spec))) (current-namespace)))) (define nowhere (open-output-nowhere)) (define (load-module spec (port #f) (ns #f)) (parameterize ((current-error-port (or port nowhere))) - (eval #`(enter! #,(ensure-module-spec spec))) + (enter-module (ensure-module-spec spec)) (when (namespace? ns) (current-namespace ns)))) @@ -79,7 +79,6 @@ ((symbol? path) (symbol->string path)) (else ""))) - (define (skippable-dir? path) (call-with-values (lambda () (split-path path)) (lambda (_ basename __) |