[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-racket 5e2184b 103/191: racket: displaying images a
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-racket 5e2184b 103/191: racket: displaying images also during evaluations |
Date: |
Sun, 1 Aug 2021 18:32:09 -0400 (EDT) |
branch: elpa/geiser-racket
commit 5e2184b4e67563d22a2361e46519123001e19c5e
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>
racket: displaying images also during evaluations
---
geiser/eval.rkt | 8 ++++----
geiser/images.rkt | 46 ++++++++++++++++++++++++++++++++++++++++++++++
geiser/user.rkt | 35 +++--------------------------------
3 files changed, 53 insertions(+), 36 deletions(-)
diff --git a/geiser/eval.rkt b/geiser/eval.rkt
index 26ad959..9b510cf 100644
--- a/geiser/eval.rkt
+++ b/geiser/eval.rkt
@@ -1,6 +1,6 @@
;;; eval.rkt -- evaluation
-;; Copyright (C) 2009, 2010, 2011 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2011, 2012 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
@@ -18,7 +18,7 @@
make-repl-reader)
-(require geiser/enter geiser/modules)
+(require geiser/enter geiser/modules geiser/images)
(require errortrace/errortrace-lib)
(define last-result (void))
@@ -37,10 +37,10 @@
(define (write-value v)
(with-output-to-string
- (lambda () (write v))))
+ (lambda () (maybe-write-image v))))
(define (set-last-result . vs)
- (set! last-result `((result ,@(map write-value vs)))))
+ (set! last-result `((result ,@(map write-value vs)))))
(define (call-with-result thunk)
(set-last-result (void))
diff --git a/geiser/images.rkt b/geiser/images.rkt
new file mode 100644
index 0000000..ddc0286
--- /dev/null
+++ b/geiser/images.rkt
@@ -0,0 +1,46 @@
+;;; images.rkt -- support for image handline
+
+;; Copyright (C) 2012 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
+;; have received a copy of the license along with this program. If
+;; not, see <http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5>.
+
+;; Authors: Michael Wilber, Jose Antonio Ortega Ruiz <jao@gnu.org>
+;; Start date: Sun Sep 2, 2012 18:54
+
+
+#lang racket/base
+
+(require racket/file file/convertible racket/pretty)
+(provide image-cache maybe-print-image maybe-write-image)
+
+(define image-cache
+ (let ([ensure-dir (lambda (dir)
+ (if (path-string? dir)
+ (begin (make-directory* dir)
+ (if (path? dir) (path->string dir) dir))
+ (path->string (find-system-path 'temp-dir))))])
+ (make-parameter (ensure-dir #f) ensure-dir)))
+
+(define (save-tmpimage imgbytes)
+ ;; Save imgbytes to a new temporary file and return the filename
+ (define filename (make-temporary-file "geiser-img-~a.png" #f (image-cache)))
+ (with-output-to-file filename #:exists 'truncate
+ (lambda () (display imgbytes)))
+ (format "#<Image: ~a>" filename))
+
+(define (maybe-save-image value)
+ (and (convertible? value)
+ ;; (The above could be problematic if a future version of racket
+ ;; suddenly decides it can "convert" strings to picts)
+ (save-tmpimage (convert value 'png-bytes))))
+
+(define (maybe-print-image value)
+ (cond [(maybe-save-image value) => (lambda (s) (printf "~a\n" s))]
+ [else (unless (void? value)
+ (pretty-print value))]))
+
+(define (maybe-write-image value)
+ (write (or (maybe-save-image value) value)))
diff --git a/geiser/user.rkt b/geiser/user.rkt
index 2eb0cb5..e9540b0 100644
--- a/geiser/user.rkt
+++ b/geiser/user.rkt
@@ -14,12 +14,10 @@
(provide init-geiser-repl run-geiser-server start-geiser)
(require (for-syntax racket/base)
- file/convertible
mzlib/thread
- racket/file
- racket/pretty
racket/tcp
geiser
+ geiser/images
geiser/enter
geiser/eval
geiser/modules)
@@ -91,41 +89,14 @@
(printf "racket@~a> "
(namespace->module-name (current-namespace) (last-entered)))))
-(define image-cache
- (let ([ensure-dir (lambda (dir)
- (if (path-string? dir)
- (begin (make-directory* dir)
- (if (path? dir) (path->string dir) dir))
- (path->string (find-system-path 'temp-dir))))])
- (make-parameter (ensure-dir #f) ensure-dir)))
-
(define (geiser-prompt-read prompt)
(make-repl-reader (geiser-read prompt)))
-(define (geiser-save-tmpimage imgbytes)
- ;; Save imgbytes to a new temporary file and return the filename
- (define filename (make-temporary-file "geiser-img-~a.png" #f (image-cache)))
- (with-output-to-file filename #:exists 'truncate
- (lambda () (display imgbytes)))
- filename)
-
-(define (geiser-maybe-print-image value)
- (cond
- [(and (convertible? value)
- (convert value 'png-bytes))
- => (lambda (pngbytes)
- ;; (The above could be problematic if a future version of racket
- ;; suddenly decides it can "convert" strings to picts)
- (printf "#<Image: ~a>\n" (geiser-save-tmpimage pngbytes)))]
- [else
- (unless (void? value)
- (pretty-print value))]))
-
(define (init-geiser-repl)
(compile-enforce-module-constants #f)
(current-load/use-compiled geiser-loader)
(current-prompt-read (geiser-prompt-read geiser-prompt))
- (current-print geiser-maybe-print-image))
+ (current-print maybe-print-image))
(define (run-geiser-repl in out enforce-module-constants)
(parameterize [(compile-enforce-module-constants enforce-module-constants)
@@ -134,7 +105,7 @@
(current-error-port out)
(current-load/use-compiled geiser-loader)
(current-prompt-read (geiser-prompt-read geiser-prompt))
- (current-print geiser-maybe-print-image)]
+ (current-print maybe-print-image)]
(read-eval-print-loop)))
(define server-channel (make-channel))
- [nongnu] elpa/geiser-racket 1f2bc48 070/191: Racket: more information in symbol documentation, (continued)
- [nongnu] elpa/geiser-racket 1f2bc48 070/191: Racket: more information in symbol documentation, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket cd7378b 089/191: Racket: indentation for all 'for' forms, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 41f65a1 076/191: Fixes for locals scanning, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket d0d80d8 079/191: Racket: no errors , entering an R5RS module, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket dc63508 081/191: Racket: use the proper interaction port for input (#32844), Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 12dc25e 077/191: Racket: ', enter "foo"' as a synonym of ', enter (file "foo")', Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 13dfcf3 075/191: Racket: #lang, require and provide as keywords, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket c5e7ea8 100/191: Little cleanups, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 7cefe7f 074/191: No more interning in the scheme reader, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket f9fc642 102/191: Racket: fix for enter!, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 5e2184b 103/191: racket: displaying images also during evaluations,
Philip Kaludercic <=
- [nongnu] elpa/geiser-racket 81ecf42 118/191: More Racket for/* forms indentation from Diogo, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket b924983 108/191: Autoload cookies in geiser.el, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket a22f8e2 117/191: Indentation rule for match/values (Diogo F.S. Ramos), Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 3e306cf 112/191: Racket: indentation for `local'., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket b86cf1f 116/191: Configurable keyword case sensitivity, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket e4707d2 105/191: racket: autodoc for PLAI's define-type, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 90c38d6 121/191: A better solution to the funky filename problem, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket cc2b8a3 126/191: Racket: fixing help when REPL is in a module, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket c897d9e 130/191: Racket: fixing error backtrace cleansing, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 3d41f16 133/191: Racket: correct font-lock for define/match, again, Philip Kaludercic, 2021/08/01