diff options
Diffstat (limited to 'scheme')
| -rw-r--r-- | scheme/plt/geiser/modules.ss | 18 | 
1 files changed, 11 insertions, 7 deletions
| diff --git a/scheme/plt/geiser/modules.ss b/scheme/plt/geiser/modules.ss index a1094af..142cf1e 100644 --- a/scheme/plt/geiser/modules.ss +++ b/scheme/plt/geiser/modules.ss @@ -40,14 +40,18 @@          ((absolute-path? spec) `(file ,spec))          (else spec))) -(define (module-spec->namespace mod-spec) -  (letrec ((spec (ensure-module-spec mod-spec)) -           (handler (lambda (e) -                      (load-module spec) -                      (enter! #f) -                      (module->namespace spec)))) +(define (module-spec->namespace spec) +  (let* ((spec (ensure-module-spec spec)) +         (contract-handler (lambda (e) +                             (load-module spec) +                             (enter! #f) +                             (module->namespace spec))) +         (filesystem-handler (lambda (e) +                               (when (symbol? spec) +                                 (module->namespace `',spec)))))      (if spec -        (with-handlers ((exn:fail:contract? handler)) +        (with-handlers ((exn:fail:contract? contract-handler) +                        (exn:fail:filesystem? filesystem-handler))            (module->namespace spec))          (current-namespace)))) | 
