From 27b7eacc9c062328d189337e02c2229b4be3e3c7 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Wed, 31 Dec 2014 20:18:19 +0100 Subject: Racket: displaying graphics in structured objects By hooking the pretty-printer, as discovered by Greg in issue #49. To attain nirvana, we would still need (display (list graph)) to work... --- scheme/racket/geiser/images.rkt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'scheme/racket/geiser/images.rkt') diff --git a/scheme/racket/geiser/images.rkt b/scheme/racket/geiser/images.rkt index 2cdcadb..b97546f 100644 --- a/scheme/racket/geiser/images.rkt +++ b/scheme/racket/geiser/images.rkt @@ -17,7 +17,9 @@ (provide image-cache maybe-print-image maybe-write-image - make-port-print-handler) + make-port-print-handler + make-pretty-print-size-hook + make-pretty-print-print-hook) (define image-cache (let ([ensure-dir (lambda (dir) @@ -51,3 +53,14 @@ (define (make-port-print-handler ph) (lambda (value port . rest) (apply ph (or (maybe-save-image value) value) port rest))) + +(define (make-pretty-print-size-hook [orig (pretty-print-size-hook)]) + (lambda (value display? port) + (if (convertible? value) + (pretty-print-columns) + (orig value display? port)))) + +(define (make-pretty-print-print-hook [orig (pretty-print-print-hook)]) + (lambda (value display? port) + (let [(img (maybe-save-image value))] + (if img (print img port) (orig value display? port))))) -- cgit v1.2.3