summaryrefslogtreecommitdiff
path: root/scheme/racket/geiser/images.rkt
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2014-12-29 02:46:12 +0100
committerJose Antonio Ortega Ruiz <jao@gnu.org>2014-12-29 02:46:12 +0100
commit0dbd605e631beea9b46f526deda2a7d05928c49f (patch)
tree7dea18a9634381e94c36bcd574911ec9b9299417 /scheme/racket/geiser/images.rkt
parenta1c1f48872801ed47ec056fffc585011a068907b (diff)
downloadgeiser-chez-0dbd605e631beea9b46f526deda2a7d05928c49f.tar.gz
geiser-chez-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.rkt11
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)))