You need to enable line/character counting with `port-count-lines!`:

#lang racket
(require syntax/to-string)

(define in (open-input-string "(comment\n  \"hello world\"\n  line)"))
(port-count-lines! in)
(syntax->string (read-syntax "mystring" in))

; -> "comment\n \"hello world\"\n line"

On Fri, Apr 9, 2021 at 2:10 AM Jeff Henrikson <[email protected]> wrote:

> Racket users,
>
> I’m trying to read a scheme file, decorate a bit of window dressing around
> the edges, and write the expressions to a new file.  I’ve got the basic
> mechanism working with (read . . .) and (pretty-write . . .), but of course
> that doesn’t preserve linebreaks.  So now I’m trying to improve it to
> preserve linebreaks.  It would be nice to preserve all whitespace, but I'll
> settle for linebreaks.  The racket docs seem to suggest it is possible:
>
> 2.6 Rendering Syntax Objects with Formatting
>  (require syntax/to-string)     package: base
>         procedure
>         (syntax->string stx-list) → string?
>       stx-list : (and/c syntax? stx-list?)
> Builds a string with newlines and indenting according to the source
> locations in stx-list; the outer pair of parens are not rendered from
> stx-list.
>
> However, when I evaluate:
>
> (syntax->string (read-syntax "mystring" (open-input-string "(comment\n
> \"hello world\"\n  line)")))
>
> I get:
>
> "comment\"hello world\"line"
>
> which has no whitespace at all, not even the whitespace that is necessary
> to separate the original tokens.
>
> I get a similar behavior if I read-syntax from a file and apply
> syntax->string to those values.
>
> Does anyone know how to get syntax->string to recover the original
> whitespace?
>
> I'm using Racket 8.0 cs on Ubuntu 20.
>
>
> Thanks in advance,
>
>
> Jeff Henrikson
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/racket-users/95dd99f5-2d04-a607-ed11-bc235095eeb7%40gmail.com
> <https://groups.google.com/d/msgid/racket-users/95dd99f5-2d04-a607-ed11-bc235095eeb7%40gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CABNTSaHGKHh%2B7JHEf3Zrdba4t-N65CVJ1ZTud0w3kBiUUoBsuw%40mail.gmail.com.

Reply via email to