diff options
author | Tom Faulhaber <git_net@infolace.com> | 2010-06-15 11:34:34 -0700 |
---|---|---|
committer | Stuart Halloway <stu@thinkrelevance.com> | 2010-06-23 17:06:31 -0400 |
commit | a642708b6e9a1718b74248cc28a467bd53afc81f (patch) | |
tree | cff689b4904bd72adf33968349ad8e8c62f1c0cf /src | |
parent | a08eac88766fa5eca96d7daf66addc00b70fd1bc (diff) |
Support logical-block macro working correctly in external namespaces.
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/clj/clojure/pprint/pprint_base.clj | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/clj/clojure/pprint/pprint_base.clj b/src/clj/clojure/pprint/pprint_base.clj index 88e032d8..9ff74e85 100644 --- a/src/clj/clojure/pprint/pprint_base.clj +++ b/src/clj/clojure/pprint/pprint_base.clj @@ -311,14 +311,19 @@ and :suffix." {:added "1.2", :arglists '[[options* body]]} [& args] (let [[options body] (parse-lb-options #{:prefix :per-line-prefix :suffix} args)] - `(do (if (level-exceeded) + `(do (if (#'clojure.pprint/level-exceeded) (.write ^java.io.Writer *out* "#") - (binding [*current-level* (inc *current-level*) - *current-length* 0] - (start-block *out* - ~(:prefix options) ~(:per-line-prefix options) ~(:suffix options)) - ~@body - (end-block *out*))) + (do + (push-thread-bindings {#'clojure.pprint/*current-level* + (inc (var-get #'clojure.pprint/*current-level*)) + #'clojure.pprint/*current-length* 0}) + (try + (#'clojure.pprint/start-block *out* + ~(:prefix options) ~(:per-line-prefix options) ~(:suffix options)) + ~@body + (#'clojure.pprint/end-block *out*) + (finally + (pop-thread-bindings))))) nil))) (defn pprint-newline |