From 6c9dbea31fe84e0bb0426fad6ed2e8104628e056 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 29 Jan 2017 19:27:23 -0700 Subject: [PATCH] make `pretty-print-newline` work on any output port The documentation says that it should work on any output port, although there's special treatment of ports that originate from `pretty-print` itself. Closes #1579. --- pkgs/racket-test-core/tests/racket/pretty.rktl | 7 +++++++ racket/collects/racket/pretty.rkt | 10 ++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/pretty.rktl b/pkgs/racket-test-core/tests/racket/pretty.rktl index e991e47b65..35cbfb644f 100644 --- a/pkgs/racket-test-core/tests/racket/pretty.rktl +++ b/pkgs/racket-test-core/tests/racket/pretty.rktl @@ -525,6 +525,13 @@ (pp v)) (test "(a 1)\n" get-output-string o)) +;; ---------------------------------------- +;; check that `pretty-print-newline` works on any output port + +(let ([o (open-output-bytes)]) + (pretty-print-newline o 17) + (test "\n" get-output-string o)) + ;; ---------------------------------------- (report-errs) diff --git a/racket/collects/racket/pretty.rkt b/racket/collects/racket/pretty.rkt index 850f509453..6b8bcc3756 100644 --- a/racket/collects/racket/pretty.rkt +++ b/racket/collects/racket/pretty.rkt @@ -373,8 +373,14 @@ (define orig-write (port-write-handler (open-output-string))) (define (pretty-print-newline pport width) - (let-values ([(l col p) (port-next-location pport)]) - ((printing-port-print-line pport) #t (or col 0) width))) + (cond + [(printing-port? pport) + (let-values ([(l col p) (port-next-location pport)]) + ((printing-port-print-line pport) #t (or col 0) width))] + [(output-port? pport) + (newline pport)] + [else + (raise-argument-error 'pretty-print-newline "output-port?" pport)])) (define (tentative-pretty-print-port-transfer a-pport pport) (let ([content ((get a-pport print-port-info-get-content))])