summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Faulhaber <git_com@infolace.com>2010-11-04 21:21:12 -0700
committerStuart Halloway <stu@thinkrelevance.com>2010-12-17 17:08:46 -0500
commitc7c7c01edd7e88fc41a5bf644fa8f9b67cc9cb11 (patch)
tree46be3e2553abe7c35129c7d07fa48266ee8eb77a
parent84022ed9fff9f495132038f6e279f4f7b148f422 (diff)
Convert the pretty printer to emit platform-specific newlines when it breaks lines
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
-rw-r--r--src/clj/clojure/pprint/pprint_base.clj2
-rw-r--r--src/clj/clojure/pprint/pretty_writer.clj6
2 files changed, 5 insertions, 3 deletions
diff --git a/src/clj/clojure/pprint/pprint_base.clj b/src/clj/clojure/pprint/pprint_base.clj
index 9c82fa69..4be9ac51 100644
--- a/src/clj/clojure/pprint/pprint_base.clj
+++ b/src/clj/clojure/pprint/pprint_base.clj
@@ -249,7 +249,7 @@ print the object to the currently bound value of *out*."
(binding-map (if (or (not (= *print-base* 10)) *print-radix*) {#'pr pr-with-base} {})
(write-out object)))
(if (not (= 0 (get-column *out*)))
- (.write *out* (int \newline))))))
+ (prn)))))
(defmacro pp
"A convenience macro that pretty prints the last thing output. This is
diff --git a/src/clj/clojure/pprint/pretty_writer.clj b/src/clj/clojure/pprint/pretty_writer.clj
index 551e668a..8b6aba4c 100644
--- a/src/clj/clojure/pprint/pretty_writer.clj
+++ b/src/clj/clojure/pprint/pretty_writer.clj
@@ -96,6 +96,8 @@
;;; Functions to write tokens in the output buffer
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(def ^:private pp-newline (memoize #(System/getProperty "line.separator")))
+
(declare emit-nl)
(defmulti ^{:private true} write-token #(:type-tag %2))
@@ -223,7 +225,7 @@
(recur (:parent lb)))))))
(defn- emit-nl [^Writer this nl]
- (.write (getf :base) (int \newline))
+ (.write (getf :base) (pp-newline))
(dosync (setf :trailing-white-space nil))
(let [lb (:logical-block nl)
^String prefix (:per-line-prefix lb)]
@@ -339,7 +341,7 @@
(.write (getf :base) (int \newline))
(doseq [^String l (next (butlast lines))]
(.write (getf :base) l)
- (.write (getf :base) (int \newline))
+ (.write (getf :base) (pp-newline))
(if prefix
(.write (getf :base) prefix)))
(setf :buffering :writing)