Skip to content

Commit 4fb657e

Browse files
committed
Add inspect-def-current-value to inspect middleware
1 parent c305995 commit 4fb657e

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

src/cider/nrepl.clj

+6
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,12 @@
239239
"inspect-clear"
240240
{:doc "Clears the state state of the inspector."
241241
:requires {"session" "The current session"}
242+
:returns {"status" "\"done\""}}
243+
"inspect-def-current-value"
244+
{:doc "Define the currently inspected value as a var with the given var-name in the provided namespace."
245+
:requires {"session" "The current session"
246+
"ns" "Namespace to define var on"
247+
"var-name" "The var name"}
242248
:returns {"status" "\"done\""}}}}))
243249

244250
(def-wrapper wrap-macroexpand cider.nrepl.middleware.macroexpand/handle-macroexpand

src/cider/nrepl/middleware/inspect.clj

+5-1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@
8787
(defn clear-reply [msg]
8888
(inspector-response msg (swap-inspector! msg (constantly (inspect/fresh)))))
8989

90+
(defn def-current-value [msg]
91+
(inspector-response msg (swap-inspector! msg inspect/def-current-value (symbol (:ns msg)) (:var-name msg))))
92+
9093
(defn handle-inspect [handler msg]
9194
(if (= (:op msg) "eval")
9295
(eval-reply handler msg)
@@ -99,4 +102,5 @@
99102
"inspect-next-page" next-page-reply
100103
"inspect-prev-page" prev-page-reply
101104
"inspect-set-page-size" set-page-size-reply
102-
"inspect-clear" clear-reply)))
105+
"inspect-clear" clear-reply
106+
"inspect-def-current-value" def-current-value)))

test/clj/cider/nrepl/middleware/inspect_test.clj

+17
Original file line numberDiff line numberDiff line change
@@ -280,3 +280,20 @@
280280
(first (:value (session/message {:op "eval"
281281
:inspect "true"
282282
:code "(range 100)"}))))))))
283+
284+
(deftest inspect-def-current-value-test
285+
(testing "inspect-def-current-value defines a var with the current inspector value"
286+
(is (= "{3 4}"
287+
(first (:value (do
288+
(session/message {:op "eval"
289+
:code "(def test-val [{1 2} {3 4}])"})
290+
(session/message {:op "eval"
291+
:inspect "true"
292+
:code "test-val"})
293+
(session/message {:op "inspect-push"
294+
:idx 2})
295+
(session/message {:op "inspect-def-current-value"
296+
:ns "user"
297+
:var-name "sub-map"})
298+
(session/message {:op "eval"
299+
:code "sub-map"}))))))))

0 commit comments

Comments
 (0)