diff --git a/collects/redex/private/bmps/language.png b/collects/redex/private/bmps/language.png index 4a4ea9c091..bd786cb6c7 100644 Binary files a/collects/redex/private/bmps/language.png and b/collects/redex/private/bmps/language.png differ diff --git a/collects/redex/private/bmps/metafunction-multi-arg.png b/collects/redex/private/bmps/metafunction-multi-arg.png index 5626c64618..f4f2aa2c40 100644 Binary files a/collects/redex/private/bmps/metafunction-multi-arg.png and b/collects/redex/private/bmps/metafunction-multi-arg.png differ diff --git a/collects/redex/private/core-layout.ss b/collects/redex/private/core-layout.ss index 4236afc557..005e345b8f 100644 --- a/collects/redex/private/core-layout.ss +++ b/collects/redex/private/core-layout.ss @@ -188,15 +188,6 @@ (define (ar/e e line line-span col col-span) (cond - [(and (symbol? e) (assoc e (atomic-rewrite-table))) - => - (λ (m) - (when (eq? (cadr m) e) - (error 'apply-rewrites "rewritten version of ~s is still ~s" e e)) - (let ([p (cadr m)]) - (if (procedure? p) - (p) - p)))] [(symbol? e) e] [(string? e) e] [(pict? e) e] @@ -704,23 +695,38 @@ [second-part (caddr m)] [first-span (- span (string-length first-part))]) (list - (make-string-token col - first-span - first-part - (non-terminal-style)) + (non-terminal->token col first-span first-part) (make-string-token (+ col first-span) (- span first-span) second-part (non-terminal-subscript-style)))))] [(or (memq atom all-nts) (memq atom '(number variable variable-except variable-not-otherwise-mentioned))) - (list (make-string-token col span (format "~s" atom) (non-terminal-style)))] + (list (non-terminal->token col span (format "~s" atom)))] [(symbol? atom) (list (make-string-token col span (symbol->string atom) (literal-style)))] [(string? atom) (list (make-string-token col span atom (default-style)))] [else (error 'atom->tokens "unk ~s" atom)])) + (define (non-terminal->token col span str) + (let ([e (string->symbol str)]) + (cond + [(assoc e (atomic-rewrite-table)) + => + (λ (m) + (when (eq? (cadr m) e) + (error 'apply-rewrites "rewritten version of ~s is still ~s" e e)) + (let ([p (cadr m)]) + (if (procedure? p) + (make-pict-token col span (p)) + (make-string-token col span p (non-terminal-style)))))] + [else + (make-string-token col + span + str + (non-terminal-style))]))) + (define (pick-font lst fallback) (let ([fl (get-face-list 'all)]) (let loop ([lst lst])