gui/gui-doc/mrlib/scribblings/interactive-value-port.scrbl
Robby Findler c3f4b5dedd generalize set-interactive-write-handler & use it in text:ports-mixin
to avoid duplicate code between the drracket support for printing and
for write/display; also add a special case for 2htdp/image images
because they can be trusted across the boundary between DrRacket's
implementation and the user's program (as there is no way to embed
arbitrary code into a 2htdp/image image)
2016-05-28 18:34:52 -05:00

59 lines
1.8 KiB
Racket

#lang scribble/doc
@(require "common.rkt" (for-label mrlib/interactive-value-port scheme/pretty))
@title{Interactive Value Port}
@defmodule[mrlib/interactive-value-port]
@defproc[(set-interactive-display-handler
[port output-port?]
[#:snip-handler snip-handler
(or/c #f (-> (is-a?/c snip%) output-port? any))
#f])
void?]{
Sets @racket[port]'s display handler (via
@racket[port-display-handler]) so that when it encounters
these values:
@itemize[@item{syntax objects}
@item{snips}]
it uses @racket[write-special] to send snips to the port
and uses @racketmodname[mrlib/syntax-browser] to turn
syntax object into snips and then uses
@racket[write-special] with the result to send it to the
port. Otherwise, it behaves like the default handler.
If @racket[snip-handler] is not @racket[#f], then
@racket[set-interactive-display-handler] passes any snips
to it (not those it creates by
@racketmodname[mrlib/syntax-browser]) instead of calling
@racket[write-special].
To show values embedded in lists and other compound object,
it uses @racket[pretty-display].
}
@defproc[(set-interactive-write-handler
[port output-port?]
[#:snip-handler snip-handler
(or/c #f (-> (is-a?/c snip%) output-port? any))
#f])
void?]{
Like @racket[set-interactive-display-handler], but sets the
@racket[port-write-handler] and uses @racket[pretty-write].}
@defproc[(set-interactive-print-handler
[port output-port?]
[#:snip-handler snip-handler
(or/c #f (-> (is-a?/c snip%) output-port? any))
#f])
void?]{
Like @racket[set-interactive-display-handler], but sets the
@racket[port-print-handler] and uses @racket[pretty-print].}