A readable-snip<%> object is treated specially by the port generated by open-input-text-editor: When a readable-snip<%> object is encountered for the input stream, its read-special method is called to generate the read result for the snip, which is returned from the port as a “special” value in the sense of read-char-or-special.
Since read and read-syntax build on read-char-or-special, a snip can implement readable-snip<%> so that it produces a whole S-expression or some other kind of value when read is used on a stream containing the snip.
(send a-readable-snip read-special source line column position) → any/c source : any/c line : (or/c exact-nonnegative-integer? #f) column : (or/c exact-nonnegative-integer? #f) position : (or/c exact-nonnegative-integer? #f)
The arguments are the same as the arguments to a procedure returned by a custom input port’s read-in; see Custom Ports for details. The result is also the same as the result from a read-in-produced procedure.