diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2014-12-29 02:46:12 +0100 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2014-12-29 02:46:12 +0100 |
commit | 0dbd605e631beea9b46f526deda2a7d05928c49f (patch) | |
tree | 7dea18a9634381e94c36bcd574911ec9b9299417 /scheme/racket/geiser/images.rkt | |
parent | a1c1f48872801ed47ec056fffc585011a068907b (diff) | |
download | geiser-guile-0dbd605e631beea9b46f526deda2a7d05928c49f.tar.gz geiser-guile-0dbd605e631beea9b46f526deda2a7d05928c49f.tar.bz2 |
Racket: show images with print, write and display
Up to now, we were only displaying images when printed as values by the
REPL, but not when image values were explicitly print-ed, write-d or
display-ed. This patch solves that problem by installing (semi)
appropriate port-{print,write,display}-handler. This is still and
incomplete solution in that those handlers (as well as the already
installed current-print-handler) don't recurse over a value's structure
and won't produce images embedded in other data structures, as discussed
in issue #49.
Diffstat (limited to 'scheme/racket/geiser/images.rkt')
-rw-r--r-- | scheme/racket/geiser/images.rkt | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/scheme/racket/geiser/images.rkt b/scheme/racket/geiser/images.rkt index ddc0286..2cdcadb 100644 --- a/scheme/racket/geiser/images.rkt +++ b/scheme/racket/geiser/images.rkt @@ -1,6 +1,6 @@ ;;; images.rkt -- support for image handline -;; Copyright (C) 2012 Jose Antonio Ortega Ruiz +;; Copyright (C) 2012, 2014 Jose Antonio Ortega Ruiz ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the Modified BSD License. You should @@ -14,7 +14,10 @@ #lang racket/base (require racket/file file/convertible racket/pretty) -(provide image-cache maybe-print-image maybe-write-image) +(provide image-cache + maybe-print-image + maybe-write-image + make-port-print-handler) (define image-cache (let ([ensure-dir (lambda (dir) @@ -44,3 +47,7 @@ (define (maybe-write-image value) (write (or (maybe-save-image value) value))) + +(define (make-port-print-handler ph) + (lambda (value port . rest) + (apply ph (or (maybe-save-image value) value) port rest))) |