diff options
| -rw-r--r-- | scheme/racket/geiser/user.rkt | 12 | 
1 files changed, 8 insertions, 4 deletions
| diff --git a/scheme/racket/geiser/user.rkt b/scheme/racket/geiser/user.rkt index 96b6431..5ce003d 100644 --- a/scheme/racket/geiser/user.rkt +++ b/scheme/racket/geiser/user.rkt @@ -32,12 +32,19 @@    (current-namespace (module->namespace mod))    (last-entered name)) +(define (file-mod? mod) +  (and (list? mod) +       (= 2 (length mod)) +       (eq? 'file (car mod)) +       (path-string? (cadr mod)))) +  (define (submod-path mod)    (and (list? mod)         (eq? 'submod (car mod))         (> (length mod) 1)         (let ([parent (cadr mod)])           (cond [(path-string? parent) `(submod (file ,parent) ,@(cddr mod))] +               [(file-mod? parent) mod]                 [(symbol? parent) mod]                 [else #f])))) @@ -47,10 +54,7 @@           (last-entered "")]          [(symbol? mod) (do-enter mod (symbol->string mod))]          [(path-string? mod) (do-enter `(file ,mod) mod)] -        [(and (list? mod) -              (= 2 (length mod)) -              (eq? 'file (car mod)) -              (path-string? (cadr mod))) (do-enter mod (cadr mod))] +        [(file-mod? mod) (do-enter mod (cadr mod))]          [(submod-path mod) => (lambda (m) (do-enter m m))]          [else (raise-syntax-error #f "Invalid module path" stx mod)])) | 
