diff --git a/pollen/private/dialect.rkt b/pollen/private/dialect.rkt index 3231c85..1446c63 100644 --- a/pollen/private/dialect.rkt +++ b/pollen/private/dialect.rkt @@ -3,10 +3,12 @@ (provide (except-out (all-from-out racket/base pollen/setup) #%module-begin) (rename-out [mb #%module-begin]) #%top-interaction) -(define-syntax-rule (mb mode . args) +(define-syntax-rule (mb MODE . ARGS) (#%module-begin - (require (prefix-in p: "private/main-base.rkt")) - (provide (rename-out [mb #%module-begin])) - (define-syntax-rule (mb . other-args) - (p:#%module-begin mode . other-args)) - . args)) \ No newline at end of file + (require (except-in "private/main-base.rkt" #%module-begin) + (prefix-in p: (only-in "private/main-base.rkt" #%module-begin))) + (provide (all-from-out "private/main-base.rkt") + (rename-out [mb #%module-begin])) + (define-syntax-rule (mb . OTHER-ARGS) + (p:#%module-begin MODE . OTHER-ARGS)) + . ARGS)) \ No newline at end of file diff --git a/pollen/private/main-base.rkt b/pollen/private/main-base.rkt index ba34524..7ad0b0d 100644 --- a/pollen/private/main-base.rkt +++ b/pollen/private/main-base.rkt @@ -1,4 +1,4 @@ -#lang racket/base +#lang debug racket/base (require (for-syntax racket/base syntax/strip-context "../setup.rkt" @@ -12,7 +12,8 @@ "../core.rkt" (prefix-in doclang: "external/doclang-raw.rkt")) (provide (except-out (all-from-out racket/base) #%module-begin) - (rename-out [pollen-module-begin #%module-begin])) + (rename-out [pollen-module-begin #%module-begin]) + (all-from-out "../core.rkt")) (define ((make-parse-proc parser-mode root-proc) xs) (define (stringify xs) (apply string-append (map to-string xs))) @@ -35,9 +36,9 @@ (define-syntax (pollen-module-begin stx) (syntax-case stx () [(_ PARSER-MODE . EXPRS) - (with-syntax ([EXPRS (replace-context #'here #'EXPRS)] - [META-HASH (split-metas #'EXPRS (setup:define-meta-name))] - [METAS-ID (setup:meta-export)] + (with-syntax ([META-HASH (split-metas #'EXPRS (setup:define-meta-name))] + [METAS-ID-HERE (setup:meta-export)] + [METAS-ID (datum->syntax #'EXPRS (setup:meta-export))] [META-MOD-ID (setup:meta-export)] [ROOT-ID (setup:main-root-node)] [DOC-ID (setup:main-export)]) @@ -55,6 +56,7 @@ (require pollen/top pollen/core pollen/setup (submod "." META-MOD-ID)) (provide (all-defined-out) METAS-ID DOC-ID) (define prev-metas (current-metas)) + (define METAS-ID METAS-ID-HERE) (and (current-metas METAS-ID) "") ; because empty strings get stripped, voids don't (begin . EXPRS) (and (current-metas prev-metas) "")))])) ; leave behind empty string, not void