[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/racket-mode ee67d2d4f7: Handle htdp/bsl number-markup outp
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/racket-mode ee67d2d4f7: Handle htdp/bsl number-markup output; fixes #732 |
Date: |
Sat, 7 Dec 2024 13:00:30 -0500 (EST) |
branch: elpa/racket-mode
commit ee67d2d4f78a6edfe43ad781830d8cc65fb03982
Author: Greg Hendershott <git@greghendershott.com>
Commit: Greg Hendershott <git@greghendershott.com>
Handle htdp/bsl number-markup output; fixes #732
Although it's wrong for htdp/bsl to assume it's running under DrRacket
only because the output port supports port-writes-special?,
accommodate this behavior by intercepting number-markup structs in
elisp.rkt.
Note: These still end up being written as "specials", so also adjust
the Emacs front end to handle values other than images.
Note: Similar considerations as with file/convertible due to Racket
structs being generative.
Note: Must handle simple-tree-text-markup/data missing in older
Rackets
---
racket-repl.el | 7 +++++--
racket/elisp.rkt | 20 +++++++++++++++++---
racket/gui.rkt | 5 +++++
3 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/racket-repl.el b/racket-repl.el
index 80b5825936..e569423994 100644
--- a/racket-repl.el
+++ b/racket-repl.el
@@ -280,8 +280,11 @@ live prompt this marker will be at `point-max'.")
('value
(insert-faced value 'racket-repl-value t))
('value-special
- (pcase-let ((`(image . ,file) value))
- (racket--repl-insert-image file)))
+ (pcase value
+ (`(image . ,file)
+ (racket--repl-insert-image file))
+ (value
+ (insert-faced (format "%s" value) 'racket-repl-value t))))
('error
(pcase value
(`(,msg ,srclocs (,context-kind . ,context-names-and-locs))
diff --git a/racket/elisp.rkt b/racket/elisp.rkt
index fcc872c53d..92fdcefde2 100644
--- a/racket/elisp.rkt
+++ b/racket/elisp.rkt
@@ -7,7 +7,16 @@
racket/match
racket/port
racket/set
- syntax/parse/define)
+ syntax/parse/define
+ "safe-dynamic-require.rkt")
+
+(define number-markup?
+ (safe-dynamic-require 'simple-tree-text-markup/data 'number-markup?
+ (λ () (λ _ #f))))
+
+(define number-markup-number
+ (safe-dynamic-require 'simple-tree-text-markup/data 'number-markup-number
+ (λ () (λ _ 0))))
(provide elisp-read
elisp-bool/c
@@ -77,8 +86,13 @@
(? symbol? v)
(? string? v)) (write v)]
[(? bytes? bstr) (write (bytes->string/utf-8 bstr))] ; ???
- [v (eprintf "elisp-write can't write Racket value ~s\n" v)
- (void)]))
+ ;; #731: htdp/bsl assumes port-writes-special? means it can write
+ ;; number-markup structs. It ought not to, but accomodate here.
+ ;; Note: See gui.rkt for namespace-attach-module of
+ ;; simple-tree-text-markup/data, necessary because generative
+ ;; structs.
+ [(? number-markup? m) (write (number-markup-number m))]
+ [v (write (format "~s" v))]))
(module+ test
(require rackunit)
diff --git a/racket/gui.rkt b/racket/gui.rkt
index a63096b892..0b6bfa2e9f 100644
--- a/racket/gui.rkt
+++ b/racket/gui.rkt
@@ -68,6 +68,11 @@
;; image.rkt.
(namespace-attach-module our-ns 'file/convertible new-ns)
+ ;; Likewise for number-markup struct used in elisp.rkt to accomodate
+ ;; htdp/bsl; issue #732.
+ (with-handlers ([exn:fail? void])
+ (namespace-attach-module our-ns 'simple-tree-text-markup/data new-ns))
+
new-ns)
;; Like mz/mr from racket/sandbox.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/racket-mode ee67d2d4f7: Handle htdp/bsl number-markup output; fixes #732,
ELPA Syncer <=