From 44c47adb4c73f817f99d5df5783bb6cef8b0063a Mon Sep 17 00:00:00 2001 From: Oleksandr Yakushev Date: Thu, 29 May 2025 12:41:53 +0300 Subject: [PATCH 1/3] Tweak changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62545554..4d770db2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## master (unreleased) +## 0.56.0 (2025-05-29) + * Bump `orchard` to [0.35.0](https://github.com/clojure-emacs/orchard/blob/master/CHANGELOG.md#0350-2025-05-28). * [#941](https://github.com/clojure-emacs/cider-nrepl/pull/941): Stop vendoring Fipp dependency. * [#941](https://github.com/clojure-emacs/cider-nrepl/pull/941): Default to orchard.pp printer when Fipp/Puget/Zprint is selected but not found on classpath. From ebbc24f8aad7aecd2f72738af56cd5e6386cc507 Mon Sep 17 00:00:00 2001 From: Oleksandr Yakushev Date: Wed, 25 Jun 2025 17:58:18 +0300 Subject: [PATCH 2/3] [inspect] Add support for sort-maps and diff view --- CHANGELOG.md | 2 ++ doc/modules/ROOT/pages/nrepl-api/ops.adoc | 3 +++ project.clj | 2 +- src/cider/nrepl.clj | 5 ++++- src/cider/nrepl/middleware/inspect.clj | 9 +++++++-- test/clj/cider/nrepl/middleware/inspect_test.clj | 13 ++++++++++--- test/clj/cider/nrepl/middleware/profile_test.clj | 2 +- .../cider/nrepl/middleware/cljs_inspect_test.clj | 9 ++++++++- 8 files changed, 36 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d770db2..e8063df6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## master (unreleased) +* Bump `orchard` to [0.36.0](https://github.com/clojure-emacs/orchard/blob/master/CHANGELOG.md#0360-2025-06-29). + ## 0.56.0 (2025-05-29) * Bump `orchard` to [0.35.0](https://github.com/clojure-emacs/orchard/blob/master/CHANGELOG.md#0350-2025-05-28). diff --git a/doc/modules/ROOT/pages/nrepl-api/ops.adoc b/doc/modules/ROOT/pages/nrepl-api/ops.adoc index 011ace11..f0c70136 100644 --- a/doc/modules/ROOT/pages/nrepl-api/ops.adoc +++ b/doc/modules/ROOT/pages/nrepl-api/ops.adoc @@ -631,7 +631,10 @@ Optional parameters:: * `:max-atom-length` New max length of single rendered value * `:max-coll-size` New max size of rendered collection * `:max-nested-depth` New max nested depth of rendered collection +* `:only-diff` Set to true to only display values that differ when inspecting a diff * `:page-size` New page size +* `:pretty-print` Set to true to pretty-print values within the inspector +* `:sort-maps` Set to true to sort maps by their keys when inspecting a map * `:view-mode` Mode of viewing the value - either ``:normal`` or ``:object`` diff --git a/project.clj b/project.clj index 4397ef14..b7516355 100644 --- a/project.clj +++ b/project.clj @@ -21,7 +21,7 @@ :url "http://www.eclipse.org/legal/epl-v10.html"} :scm {:name "git" :url "https://github.com/clojure-emacs/cider-nrepl"} :dependencies [[nrepl/nrepl "1.3.1" :exclusions [org.clojure/clojure]] - [cider/orchard "0.35.0" :exclusions [org.clojure/clojure]] + [cider/orchard "0.36.0" :exclusions [org.clojure/clojure]] ^:inline-dep [compliment "0.7.0"] ^:inline-dep [org.rksm/suitable "0.6.2" :exclusions [org.clojure/clojure org.clojure/clojurescript]] diff --git a/src/cider/nrepl.clj b/src/cider/nrepl.clj index a5de15fc..248d59cb 100644 --- a/src/cider/nrepl.clj +++ b/src/cider/nrepl.clj @@ -344,7 +344,10 @@ if applicable, and re-render the updated value." "max-atom-length" "New max length of single rendered value" "max-coll-size" "New max size of rendered collection" "max-nested-depth" "New max nested depth of rendered collection" - "view-mode" "Mode of viewing the value - either `:normal` or `:object`"} + "view-mode" "Mode of viewing the value - either `:normal` or `:object`" + "pretty-print" "Set to true to pretty-print values within the inspector" + "sort-maps" "Set to true to sort maps by their keys when inspecting a map" + "only-diff" "Set to true to only display values that differ when inspecting a diff"} :returns inspector-returns} "inspect-toggle-pretty-print" {:doc "Toggles the pretty printing of values in the inspector." diff --git a/src/cider/nrepl/middleware/inspect.clj b/src/cider/nrepl/middleware/inspect.clj index 1e383a74..d210fa38 100644 --- a/src/cider/nrepl/middleware/inspect.clj +++ b/src/cider/nrepl/middleware/inspect.clj @@ -33,11 +33,16 @@ :path (pr-str (seq (:path inspector)))})] (response-for msg data extra-response-data)))) +(defn- booleanize [m keys] + (reduce (fn [m k] (cond-> m + (contains? m k) (update k = "true"))) + m keys)) + (defn- msg->inspector-config [msg] (-> (select-keys msg [:page-size :max-atom-length :max-coll-size :max-value-length :max-nested-depth :display-analytics-hint - :pretty-print]) - (update :pretty-print #(= "true" %)))) + :pretty-print :sort-maps :only-diff]) + (booleanize [:pretty-print :sort-maps :only-diff]))) (defn inspect-reply* [{:keys [view-mode] :as msg} value] (let [config (msg->inspector-config msg) diff --git a/test/clj/cider/nrepl/middleware/inspect_test.clj b/test/clj/cider/nrepl/middleware/inspect_test.clj index 10ca0a87..b6be5519 100644 --- a/test/clj/cider/nrepl/middleware/inspect_test.clj +++ b/test/clj/cider/nrepl/middleware/inspect_test.clj @@ -75,7 +75,14 @@ " ●normal object pretty"]) (defn value [{:keys [value]}] - (edn/read-string (first value))) + (->> (edn/read-string (first value)) + ;; Merge strings + (reduce (fn [acc x] + (let [lst (peek acc)] + (if (and (string? x) (string? lst)) + (conj (pop acc) (str lst x)) + (conj acc x)))) + []))) (defn value-skip-header [resp] (drop-while #(not (and (string? %) (.startsWith ^String % "---"))) @@ -524,7 +531,7 @@ "\n :c ({:d 2} {:d 2} {:d 2} {:d 2} {:d 2} {:d 2})}") 5] [:newline] [:newline] #"--- View mode" [:newline] - " ●normal table object ●pretty"] + " ●normal table object ●pretty sort-maps"] (value-skip-header (session/message {:op "inspect-toggle-pretty-print"})))) (testing "toggle pretty printing and turn it off" (is+ ["--- Contents:" [:newline] @@ -544,7 +551,7 @@ " :c ({:d 2} {:d 2} {:d 2} {:d 2} {:d 2} {:d 2})}") 5] [:newline] [:newline] #"--- View mode" [:newline] - " ●normal table object pretty"] + " ●normal table object pretty sort-maps"] (value-skip-header (session/message {:op "inspect-toggle-pretty-print"})))))) (deftest print-length-independence-test diff --git a/test/clj/cider/nrepl/middleware/profile_test.clj b/test/clj/cider/nrepl/middleware/profile_test.clj index 19b202df..6dedc384 100644 --- a/test/clj/cider/nrepl/middleware/profile_test.clj +++ b/test/clj/cider/nrepl/middleware/profile_test.clj @@ -33,7 +33,7 @@ (is+ {:status #{"done"} :value [(mc/via read-string (mc/prefix ["Class: " [:value "clojure.lang.ArraySeq" 0] [:newline] - "Count: 1" [:newline] [:newline] + "Count: " "1" [:newline] [:newline] "--- Contents:" [:newline] [:newline]]))]} (session/message {:op "cider/profile-summary"})))) diff --git a/test/cljs/cider/nrepl/middleware/cljs_inspect_test.clj b/test/cljs/cider/nrepl/middleware/cljs_inspect_test.clj index 38194ab8..6d40f757 100644 --- a/test/cljs/cider/nrepl/middleware/cljs_inspect_test.clj +++ b/test/cljs/cider/nrepl/middleware/cljs_inspect_test.clj @@ -33,7 +33,14 @@ " 34. " [:value "34" 3]]) (defn value [{:keys [value]}] - (edn/read-string (first value))) + (->> (edn/read-string (first value)) + ;; Merge strings + (reduce (fn [acc x] + (let [lst (peek acc)] + (if (and (string? x) (string? lst)) + (conj (pop acc) (str lst x)) + (conj acc x)))) + []))) ;; integration tests From 73c9347a72dffc4e120b350541438cb6832bd9a0 Mon Sep 17 00:00:00 2001 From: Oleksandr Yakushev Date: Sun, 29 Jun 2025 22:25:28 +0300 Subject: [PATCH 3/3] 0.57.0 --- CHANGELOG.md | 2 ++ doc/modules/ROOT/pages/compatibility.adoc | 2 +- doc/modules/ROOT/pages/usage.adoc | 12 ++++++------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8063df6..a1c959cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## master (unreleased) +## 0.57.0 (2025-06-29) + * Bump `orchard` to [0.36.0](https://github.com/clojure-emacs/orchard/blob/master/CHANGELOG.md#0360-2025-06-29). ## 0.56.0 (2025-05-29) diff --git a/doc/modules/ROOT/pages/compatibility.adoc b/doc/modules/ROOT/pages/compatibility.adoc index bbf0f7e5..1d9a485c 100644 --- a/doc/modules/ROOT/pages/compatibility.adoc +++ b/doc/modules/ROOT/pages/compatibility.adoc @@ -65,7 +65,7 @@ given compatibility tuple. | 1.9 | 1.0.0 -| 0.55.7 +| 0.57.0 | 8 | 1.10 | 1.0.0 diff --git a/doc/modules/ROOT/pages/usage.adoc b/doc/modules/ROOT/pages/usage.adoc index 544d9e62..faff78ca 100644 --- a/doc/modules/ROOT/pages/usage.adoc +++ b/doc/modules/ROOT/pages/usage.adoc @@ -14,14 +14,14 @@ Use the convenient plugin for defaults, either in your project's [source,clojure] ---- -:plugins [[cider/cider-nrepl "0.55.7"]] +:plugins [[cider/cider-nrepl "0.57.0"]] ---- A minimal `profiles.clj` for CIDER would be: [source,clojure] ---- -{:user {:plugins [[cider/cider-nrepl "0.55.7"]]}} +{:user {:plugins [[cider/cider-nrepl "0.57.0"]]}} ---- Or (if you know what you're doing) add `cider-nrepl` to your `:dev @@ -30,7 +30,7 @@ under `:repl-options`. [source,clojure] ---- -:dependencies [[cider/cider-nrepl "0.55.7"]] +:dependencies [[cider/cider-nrepl "0.57.0"]] :repl-options {:nrepl-middleware [cider.nrepl/wrap-apropos cider.nrepl/wrap-classpath @@ -63,7 +63,7 @@ You can easily boot an nREPL server with the CIDER middleware loaded with the following "magic" incantation: ---- -clj -Sdeps '{:deps {cider/cider-nrepl {:mvn/version "0.55.7"} }}' -M -m nrepl.cmdline --middleware "[cider.nrepl/cider-middleware]" +clj -Sdeps '{:deps {cider/cider-nrepl {:mvn/version "0.57.0"} }}' -M -m nrepl.cmdline --middleware "[cider.nrepl/cider-middleware]" ---- There are also two convenient aliases you can employ: @@ -73,12 +73,12 @@ There are also two convenient aliases you can employ: {... :aliases {:cider-clj {:extra-deps {org.clojure/clojure {:mvn/version "1.10.3"} - cider/cider-nrepl {:mvn/version "0.55.7"}} + cider/cider-nrepl {:mvn/version "0.57.0"}} :main-opts ["-m" "nrepl.cmdline" "--middleware" "[cider.nrepl/cider-middleware]"]} :cider-cljs {:extra-deps {org.clojure/clojure {:mvn/version "1.10.3"} org.clojure/clojurescript {:mvn/version "1.10.339"} - cider/cider-nrepl {:mvn/version "0.55.7"} + cider/cider-nrepl {:mvn/version "0.57.0"} cider/piggieback {:mvn/version "0.5.2"}} :main-opts ["-m" "nrepl.cmdline" "--middleware" "[cider.nrepl/cider-middleware,cider.piggieback/wrap-cljs-repl]"]}}}