Skip to content

Commit 7f8ee3b

Browse files
Stop shipping Puget with cider-nrepl (#925)
* Stop vendoring Puget * [pprint] Revert to pprint with a warning if Puget could not be loaded * [pprint] Revert to pprint with a warning if zprint could not be loaded
1 parent a244b87 commit 7f8ee3b

File tree

3 files changed

+27
-11
lines changed

3 files changed

+27
-11
lines changed

CHANGELOG.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
## master (unreleased)
44

5+
* [#925](https://github.com/clojure-emacs/cider-nrepl/pull/9250): Stop vendoring Puget dependency.
6+
* [#917](https://github.com/clojure-emacs/cider-nrepl/pull/917): Sort printed maps in test output.
7+
58
## 0.53.2 (2025-03-26)
69

710
* [#923](https://github.com/clojure-emacs/cider-nrepl/pull/923): Complete: make sorting order customizable.
@@ -21,7 +24,6 @@
2124
* [#913](https://github.com/clojure-emacs/cider-nrepl/pull/913): Disable background warmup of `orchard.java` cache.
2225
* [#913](https://github.com/clojure-emacs/cider-nrepl/pull/913): Enable background warmup of Compliment cache.
2326
* [#914](https://github.com/clojure-emacs/cider-nrepl/pull/914): Remove javadoc section from the inspector output.
24-
* [#917](https://github.com/clojure-emacs/cider-nrepl/pull/917): Sort printed maps in test output
2527

2628
## 0.52.1 (2025-02-24)
2729

project.clj

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
{:dependencies '[[org.clojure/clojurescript "1.11.60" :scope "provided"]
55
;; 1.3.7 and 1.4.7 are working, but we need 1.3.7 for JDK8
66
[ch.qos.logback/logback-classic "1.3.7"]
7+
[mvxcvi/puget "1.3.4" :exclusions [org.clojure/clojure]]
78
[org.clojure/test.check "1.1.1"]
89
[cider/piggieback "0.6.0"]
910
[nubank/matcher-combinators "3.9.1"]]
@@ -23,7 +24,6 @@
2324
:dependencies [[nrepl/nrepl "1.3.1" :exclusions [org.clojure/clojure]]
2425
[cider/orchard "0.31.1" :exclusions [org.clojure/clojure]]
2526
^:inline-dep [thunknyc/profile "0.5.2"]
26-
^:inline-dep [mvxcvi/puget "1.3.4" :exclusions [org.clojure/clojure]]
2727
^:inline-dep [fipp ~fipp-version] ; can be removed in unresolved-tree mode
2828
^:inline-dep [compliment "0.7.0"]
2929
^:inline-dep [org.rksm/suitable "0.6.2" :exclusions [org.clojure/clojure
@@ -50,8 +50,8 @@
5050
'[[thomasa/mranderson "0.5.4-SNAPSHOT"]])
5151

5252
:mranderson {:project-prefix "cider.nrepl.inlined.deps"
53-
:overrides {[mvxcvi/puget fipp] [fipp ~fipp-version]} ; only takes effect in unresolved-tree mode
54-
:expositions [[mvxcvi/puget fipp]] ; only takes effect unresolved-tree mode
53+
:overrides {[fipp] [fipp ~fipp-version]} ; only takes effect in unresolved-tree mode
54+
:expositions [[fipp]] ; only takes effect unresolved-tree mode
5555
:unresolved-tree false}
5656

5757
:filespecs [{:type :bytes :path "cider/cider-nrepl/project.clj" :bytes ~(slurp "project.clj")}]

src/cider/nrepl/pprint.clj

+21-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
{:added "0.20"}
66
(:refer-clojure :exclude [pr])
77
(:require
8-
[clojure.pprint :as pp]))
8+
[clojure.pprint :as pp]
9+
[orchard.misc :as misc]))
910

1011
(def ^:private pr-options
1112
[:print-dup
@@ -19,6 +20,13 @@
1920
[option]
2021
(resolve (symbol "clojure.core" (str "*" (name option) "*"))))
2122

23+
(defn- try-resolve [var-symbol pprinter-name]
24+
(or (misc/require-and-resolve var-symbol)
25+
(binding [*out* *err*]
26+
(println (format "Could not load %s namespace. To use %s pretty-printing with CIDER, add it to dependencies explicitly."
27+
(namespace var-symbol) pprinter-name))
28+
nil)))
29+
2230
(defn- pr-bindings
2331
[options]
2432
(->> (select-keys options pr-options)
@@ -57,21 +65,27 @@
5765
(@fipp-printer value options))))
5866

5967
(def ^:private puget-printer
60-
(delay (requiring-resolve 'puget.printer/pprint)))
68+
(delay (try-resolve 'puget.printer/pprint "Puget")))
6169

6270
(defn puget-pprint
6371
([value writer]
6472
(puget-pprint value writer {}))
6573
([value writer options]
66-
(binding [*out* writer]
67-
(@puget-printer value options))))
74+
(if-some [puget @puget-printer]
75+
(binding [*out* writer]
76+
(puget value options))
77+
;; Default ot clojure.pprint/pprint if Puget could not be loaded.
78+
(pprint value writer options))))
6879

6980
(def ^:private zprint-printer
70-
(delay (requiring-resolve 'zprint.core/zprint)))
81+
(delay (try-resolve 'zprint.core/zprint "zprint")))
7182

7283
(defn zprint-pprint
7384
([value writer]
7485
(zprint-pprint value writer {}))
7586
([value writer options]
76-
(binding [*out* writer]
77-
(@zprint-printer value options))))
87+
(if-some [zprint @zprint-printer]
88+
(binding [*out* writer]
89+
(zprint value options))
90+
;; Default ot clojure.pprint/pprint if Zprint could not be loaded.
91+
(pprint value writer options))))

0 commit comments

Comments
 (0)