Skip to content

Commit 49145e6

Browse files
[util] Add util/respond-to
1 parent 16f0210 commit 49145e6

File tree

13 files changed

+137
-200
lines changed

13 files changed

+137
-200
lines changed

src/cider/nrepl/middleware/debug.clj

+9-14
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,20 @@
33
{:author "Artur Malabarba"}
44
(:require
55
[cider.nrepl.middleware.inspect :refer [swap-inspector!]]
6-
[cider.nrepl.middleware.util :as util]
6+
[cider.nrepl.middleware.util :as util :refer [respond-to]]
77
[cider.nrepl.middleware.util.cljs :as cljs]
88
[cider.nrepl.middleware.util.instrument :as ins]
99
[cider.nrepl.middleware.util.nrepl :refer [notify-client]]
1010
[nrepl.middleware.interruptible-eval :refer [*msg*]]
1111
[nrepl.middleware.print :as print]
12-
[nrepl.misc :refer [response-for]]
13-
[nrepl.transport :as transport]
1412
[orchard.info :as info]
1513
[orchard.inspect :as inspect]
1614
[orchard.meta :as m]
1715
[orchard.print]
1816
[orchard.stacktrace :as stacktrace])
1917
(:import
20-
[clojure.lang Compiler$LocalBinding]
21-
[java.util UUID]))
18+
(clojure.lang Compiler$LocalBinding)
19+
(java.util UUID)))
2220

2321
;;;; # The Debugger
2422
;;;
@@ -135,7 +133,7 @@
135133
[]
136134
(if (map? *msg*)
137135
(do
138-
(transport/send (:transport *msg*) (response-for *msg* :value 'QUIT))
136+
(respond-to *msg* :value 'QUIT)
139137
(.stop ^Thread (:thread (meta (:session *msg*)))))
140138
;; We can't really abort if there's no *msg*, so we do our best
141139
;; impression of that. This is only used in some panic situations,
@@ -200,8 +198,7 @@ this map (identified by a key), and will `dissoc` it afterwards."}
200198
(when (not @debugger-message)
201199
(throw (Exception. "Debugger not initialized!")))
202200
(try
203-
(transport/send (:transport @debugger-message)
204-
(apply response-for @debugger-message r))
201+
(apply respond-to @debugger-message r)
205202
(catch java.net.SocketException _
206203
(reset! debugger-message nil))))
207204

@@ -710,12 +707,10 @@ this map (identified by a key), and will `dissoc` it afterwards."}
710707
(defn- instrumented-defs-reply
711708
"Reply to `msg` with an alist of instrumented defs on the \"list\" entry."
712709
[msg]
713-
(->> (all-ns)
714-
(map #(cons (ns-name %) (ins/list-instrumented-defs %)))
715-
(filter second)
716-
(util/transform-value)
717-
(response-for msg :status :done :list)
718-
(transport/send (:transport msg))))
710+
(let [defs (->> (all-ns)
711+
(map #(cons (ns-name %) (ins/list-instrumented-defs %)))
712+
(filter second))]
713+
(respond-to msg :status :done, :list (util/transform-value defs))))
719714

720715
(defn handle-debug
721716
[handler {:keys [op input session] :as msg}]

src/cider/nrepl/middleware/info.clj

+4-7
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22
(:require
33
[compliment.context]
44
[compliment.sources.class-members]
5-
[cider.nrepl.middleware.util :as util]
5+
[cider.nrepl.middleware.util :as util :refer [respond-to]]
66
[cider.nrepl.middleware.util.cljs :as cljs]
77
[cider.nrepl.middleware.util.error-handling :refer [with-safe-transport]]
88
[clojure.string :as str]
9-
[nrepl.transport :as transport]
10-
[nrepl.misc :refer [response-for]]
119
[orchard.eldoc :as eldoc]
1210
[orchard.info :as info]
1311
[orchard.java.source-files :as src-files]
@@ -89,14 +87,13 @@
8987
download an artifact that doesn't exist or can't be found."
9088
(ConcurrentHashMap.))
9189

92-
(defn- download-sources-jar-for-class
93-
[klass {:keys [transport] :as msg}]
90+
(defn- download-sources-jar-for-class [klass msg]
9491
(when-let [coords (src-files/infer-maven-coordinates-for-class klass)]
9592
(when (nil? (.putIfAbsent attempted-to-download-coords coords true))
9693
;; Tell the client we are going to download an artifict so it can notify
9794
;; the user. It may take a few seconds.
98-
(transport/send transport (response-for msg {:status :download-sources-jar
99-
:coords coords}))
95+
(respond-to msg {:status :download-sources-jar
96+
:coords coords})
10097
(src-files/download-sources-jar-for-coordinates coords))))
10198

10299
(defn info

src/cider/nrepl/middleware/log.clj

+7-9
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
{:author "r0man"
44
:added "0.32.0"}
55
(:require [cider.nrepl.middleware.inspect :as middleware.inspect]
6+
[cider.nrepl.middleware.util :refer [respond-to]]
67
[cider.nrepl.middleware.util.error-handling :refer [with-safe-transport]]
78
[logjam.event :as event]
89
[logjam.framework :as framework]
9-
[nrepl.middleware.print :as print]
10-
[nrepl.misc :refer [response-for]]
11-
[nrepl.transport :as transport])
10+
[nrepl.middleware.print :as print])
1211
(:import (java.io StringWriter)
1312
(java.util UUID)))
1413

@@ -139,16 +138,15 @@
139138

140139
(defn add-consumer-reply
141140
"Add a consumer to an appender of a log framework."
142-
[{:keys [consumer filters transport] :as msg}]
141+
[{:keys [consumer filters] :as msg}]
143142
(let [appender (appender msg)
144143
consumer {:id (or consumer (str (UUID/randomUUID)))
145144
:filters (or filters {})
146145
:callback (fn [consumer event]
147-
(->> (response-for msg
148-
:cider/log-consumer (str (:id consumer))
149-
:cider/log-event (select-event event)
150-
:status :cider/log-event)
151-
(transport/send transport)))}]
146+
(respond-to msg
147+
:cider/log-consumer (str (:id consumer))
148+
:cider/log-event (select-event event)
149+
:status :cider/log-event))}]
152150
{:cider/log-add-consumer
153151
(-> (swap-framework! msg framework/add-consumer appender consumer)
154152
(framework/consumer appender consumer)

src/cider/nrepl/middleware/macroexpand.clj

+3-4
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
"Macroexpansion middleware."
33
{:author "Bozhidar Batsov"}
44
(:require
5+
[cider.nrepl.middleware.util :refer [respond-to]]
56
[cider.nrepl.middleware.util.cljs :as cljs]
67
[cider.nrepl.middleware.util.error-handling
78
:refer [base-error-response eval-interceptor-transport with-safe-transport]]
89
[orchard.cljs.analysis :as cljs-ana]
9-
[nrepl.misc :refer [response-for]]
1010
[nrepl.transport :as transport]
1111
[clojure.pprint :as pp]
1212
[clojure.tools.reader :as reader]
@@ -124,12 +124,11 @@
124124
(transport/send (:transport msg)
125125
(base-error-response msg ex :done :macroexpand-error)))
126126

127-
(defn macroexpansion-reply-clj [{:keys [transport] :as msg}
128-
{:keys [value] :as resp}]
127+
(defn macroexpansion-reply-clj [msg {:keys [value] :as resp}]
129128
(try (let [msg (update msg :ns #(or (misc/as-sym %) 'user))
130129
expansion (walk/prewalk (post-expansion-walker-clj msg) value)
131130
response-map (macroexpansion-response-map msg expansion)]
132-
(transport/send transport (response-for msg response-map)))
131+
(respond-to msg response-map))
133132
(catch Exception ex
134133
(send-middleware-error msg ex))))
135134

src/cider/nrepl/middleware/profile.clj

+46-64
Original file line numberDiff line numberDiff line change
@@ -15,100 +15,84 @@
1515
maintained anymore."
1616
{:author "Edwin Watkeys"}
1717
(:require
18-
[nrepl.misc :refer [response-for]]
19-
[nrepl.transport :as t]
18+
[cider.nrepl.middleware.util :refer [respond-to]]
2019
[profile.core :as p]))
2120

22-
(defn send-exception
23-
[_e msg transport]
24-
(t/send transport (response-for msg :status :done :value "exception")))
21+
(defn- send-exception
22+
[_e msg]
23+
(respond-to msg :status :done :value "exception"))
2524

2625
(defn toggle-profile
2726
[{:keys [ns sym transport] :as msg}]
2827
(try
2928
(if-let [v (ns-resolve (symbol ns) (symbol sym))]
3029
(let [profiled? (p/toggle-profile-var* v)]
31-
(t/send transport
32-
(response-for
33-
msg
34-
:status :done
35-
:value (if profiled? "profiled" "unprofiled"))))
36-
(t/send transport
37-
(response-for
38-
msg
39-
:status #{:toggle-profile-not-such-var :done}
40-
:value "unbound")))
41-
(catch Exception e (send-exception e msg transport))))
30+
(respond-to msg
31+
:status :done
32+
:value (if profiled? "profiled" "unprofiled")))
33+
(respond-to msg
34+
:status #{:toggle-profile-not-such-var :done}
35+
:value "unbound"))
36+
(catch Exception e (send-exception e msg))))
4237

4338
(defn profile-var-summary
4439
[{:keys [ns sym transport] :as msg}]
4540
(try
4641
(if-let [v (ns-resolve (symbol ns) (symbol sym))]
4742
(if-let [table (with-out-str (binding [*err* *out*]
4843
(p/print-entry-summary v)))]
49-
(t/send transport
50-
(response-for msg
51-
:status :done
52-
:err table))
53-
(t/send transport
54-
(response-for msg
55-
:status :done
56-
:err (format "No profile data for %s." v))))
57-
(t/send transport
58-
(response-for msg
59-
:status :done
60-
:value (format "Var %s/%s is not bound." ns sym))))
61-
(catch Exception e (prn :e e) (send-exception e msg transport))))
44+
(respond-to msg
45+
:status :done
46+
:err table)
47+
(respond-to msg
48+
:status :done
49+
:err (format "No profile data for %s." v)))
50+
(respond-to msg
51+
:status :done
52+
:value (format "Var %s/%s is not bound." ns sym)))
53+
(catch Exception e (prn :e e) (send-exception e msg))))
6254

6355
(defn profile-summary
6456
[{:keys [transport] :as msg}]
6557
(try
66-
(t/send transport
67-
(response-for msg
68-
:status :done
69-
:err (with-out-str
70-
(binding [*err* *out*] (p/print-summary)))))
71-
(catch Exception e (send-exception e msg transport))))
58+
(respond-to msg
59+
:status :done
60+
:err (with-out-str
61+
(binding [*err* *out*] (p/print-summary))))
62+
(catch Exception e (send-exception e msg))))
7263

7364
(defn clear-profile
7465
[{:keys [transport] :as msg}]
7566
(try
7667
(p/clear-profile-data)
77-
(t/send transport
78-
(response-for msg
79-
:status :done
80-
:value "cleared"))
81-
(catch Exception e (send-exception e msg transport))))
68+
(respond-to msg
69+
:status :done
70+
:value "cleared")
71+
(catch Exception e (send-exception e msg))))
8272

8373
(defn toggle-profile-ns
8474
[{:keys [ns transport] :as msg}]
8575
(try (let [profiled? (p/toggle-profile-ns (symbol ns))]
86-
(t/send transport
87-
(response-for
88-
msg
89-
:status :done
90-
:value (if profiled? "profiled" "unprofiled"))))
91-
(catch Exception e (send-exception e msg transport))))
76+
(respond-to msg
77+
:status :done
78+
:value (if profiled? "profiled" "unprofiled")))
79+
(catch Exception e (send-exception e msg))))
9280

9381
(defn is-var-profiled
9482
[{:keys [ns sym transport] :as msg}]
9583
(try (let [var (ns-resolve (symbol ns) (symbol sym))
9684
profiled? (p/profiled? @var)]
97-
(t/send transport
98-
(response-for
99-
msg
100-
:status :done
101-
:value (if profiled? "profiled" "unprofiled"))))
102-
(catch Exception e (send-exception e msg transport))))
85+
(respond-to msg
86+
:status :done
87+
:value (if profiled? "profiled" "unprofiled")))
88+
(catch Exception e (send-exception e msg))))
10389

10490
(defn get-max-samples
10591
[{:keys [transport] :as msg}]
106-
(try (t/send transport
107-
(response-for
108-
msg
109-
:status :done
110-
:value (str (p/max-sample-count))))
111-
(catch Exception e (send-exception e msg transport))))
92+
(try (respond-to msg
93+
:status :done
94+
:value (str (p/max-sample-count)))
95+
(catch Exception e (send-exception e msg))))
11296

11397
(defn normalize-max-samples [n]
11498
(cond (and (sequential? n) (empty? n)) nil
@@ -119,12 +103,10 @@
119103
[{:keys [max-samples transport] :as msg}]
120104
(try (let [max-samples (normalize-max-samples max-samples)]
121105
(p/set-max-sample-count max-samples)
122-
(t/send transport
123-
(response-for
124-
msg
125-
:status :done
126-
:value (str (p/max-sample-count)))))
127-
(catch Exception e (send-exception e msg transport))))
106+
(respond-to msg
107+
:status :done
108+
:value (str (p/max-sample-count))))
109+
(catch Exception e (send-exception e msg))))
128110

129111
(defn handle-profile
130112
[handler msg]

src/cider/nrepl/middleware/refresh.clj

+10-15
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,13 @@
55
;; when developing cider-nrepl itself, or when cider-nrepl is used as a
66
;; checkout dependency - tools.namespace doesn't reload source in JARs.
77
(:require
8+
[cider.nrepl.middleware.util :refer [respond-to]]
89
[cider.nrepl.middleware.util.reload :as reload-utils]
910
[clojure.main :refer [repl-caught]]
1011
[clojure.tools.namespace.dir :as dir]
1112
[clojure.tools.namespace.find :as find]
1213
[clojure.tools.namespace.reload :as reload]
13-
[clojure.tools.namespace.track :as track]
14-
[nrepl.misc :refer [response-for]]
15-
[nrepl.transport :as transport]))
14+
[clojure.tools.namespace.track :as track]))
1615

1716
(defonce ^:private refresh-tracker (volatile! (track/tracker)))
1817

@@ -55,21 +54,17 @@
5554

5655
(defn- reloading-reply
5756
[{reloading ::track/load}
58-
{:keys [transport] :as msg}]
59-
(transport/send
60-
transport
61-
(response-for msg {:reloading reloading})))
57+
msg]
58+
(respond-to msg :reloading reloading))
6259

6360
(defn- result-reply
6461
[{error ::reload/error
6562
error-ns ::reload/error-ns}
66-
{:keys [transport] :as msg}]
63+
msg]
6764

6865
(if error
6966
(reload-utils/error-reply {:error error :error-ns error-ns} msg)
70-
(transport/send
71-
transport
72-
(response-for msg {:status :ok}))))
67+
(respond-to msg :status :ok)))
7368

7469
(defn after-reply
7570
[{error ::reload/error}
@@ -81,7 +76,7 @@
8176
(atom false))
8277

8378
(defn- refresh-reply
84-
[{:keys [dirs transport session id] :as msg}]
79+
[{:keys [dirs session id] :as msg}]
8580
(let [{:keys [exec]} (meta session)]
8681
(exec id
8782
(fn []
@@ -109,10 +104,10 @@
109104
(finally
110105
(reset! client-requested-clear? false)))))))
111106
(fn []
112-
(transport/send transport (response-for msg {:status :done}))))))
107+
(respond-to msg :status :done)))))
113108

114109
(defn- clear-reply
115-
[{:keys [transport session id] :as msg}]
110+
[{:keys [session id] :as msg}]
116111
(let [{:keys [exec]} (meta session)]
117112
(exec id
118113
(fn []
@@ -121,7 +116,7 @@
121116
;; because that `locking` could cause unnecessary nREPL timeouts (https://github.com/clojure-emacs/cider/issues/3652 ).
122117
(reset! client-requested-clear? true))
123118
(fn []
124-
(transport/send transport (response-for msg {:status :done}))))))
119+
(respond-to msg :status :done)))))
125120

126121
(defn handle-refresh [handler msg]
127122
(case (:op msg)

0 commit comments

Comments
 (0)