How can I pretty print a quoted list in clojure?

clojure

Solution

Use `clojure.pprint/write` with `clojure.pprint/code-dispatch`:

(clojure.pprint/write '(do (println "Hello") (println "Goodbye"))
                      :dispatch clojure.pprint/code-dispatch)

For that small amount of code you won't get new-lines. But a call like this

(clojure.pprint/write '(do (println "Hello") (println "Goodbye") (println "Hey, you left me out!"))
                      :dispatch clojure.pprint/code-dispatch)

Returns

=> (do
     (println "Hello")
     (println "Goodbye")
     (println "Hey, you left me out!"))

To catch that as a string wrap the call in `(with-out-str ...)`

Problem

Given a list like: ``` (quote (do (println "Hello") (println "Goodbye"))) ``` : how can I turn this into a nicely formatted string which will output something like: ``` (do (println "Hello") (println "Goodbye") ) ```

Original source