diff --git a/pkgs/racket-pkgs/at-exp-lib/at-exp/lang/language-info.rkt b/pkgs/racket-pkgs/at-exp-lib/at-exp/lang/language-info.rkt new file mode 100644 index 0000000000..bf8c1f628d --- /dev/null +++ b/pkgs/racket-pkgs/at-exp-lib/at-exp/lang/language-info.rkt @@ -0,0 +1,10 @@ +#lang racket/base + +(provide get-language-info) + +(define (get-language-info data) + (lambda (key default) + (case key + [(configure-runtime) + '(#[at-exp/lang/runtime-config configure #f])] + [else default]))) diff --git a/pkgs/racket-pkgs/at-exp-lib/at-exp/lang/reader.rkt b/pkgs/racket-pkgs/at-exp-lib/at-exp/lang/reader.rkt index 8e102e5b6e..7fbd16ac4b 100644 --- a/pkgs/racket-pkgs/at-exp-lib/at-exp/lang/reader.rkt +++ b/pkgs/racket-pkgs/at-exp-lib/at-exp/lang/reader.rkt @@ -26,7 +26,12 @@ ;; fall back to /lang/reader: (string->symbol (string-append str "/lang/reader")))))) wrap-reader - wrap-reader + (lambda (orig-read-syntax) + (define read-syntax (wrap-reader orig-read-syntax)) + (lambda args + (syntax-property (apply read-syntax args) + 'module-language + '#(at-exp/lang/language-info get-language-info #f)))) (lambda (proc) (lambda (key defval) (define (fallback) (if proc (proc key defval) defval)) diff --git a/pkgs/racket-pkgs/at-exp-lib/at-exp/lang/runtime-config.rkt b/pkgs/racket-pkgs/at-exp-lib/at-exp/lang/runtime-config.rkt new file mode 100644 index 0000000000..a0ddb46c5f --- /dev/null +++ b/pkgs/racket-pkgs/at-exp-lib/at-exp/lang/runtime-config.rkt @@ -0,0 +1,12 @@ +#lang racket/base + +(provide configure) + +(require (only-in scribble/reader make-at-readtable)) + +(define (configure data) + (define old-read (current-read-interaction)) + (define (new-read src in) + (parameterize ([current-readtable (make-at-readtable #:readtable (current-readtable))]) + (old-read src in))) + (current-read-interaction new-read))