File tree Expand file tree Collapse file tree 3 files changed +54
-18
lines changed Expand file tree Collapse file tree 3 files changed +54
-18
lines changed Original file line number Diff line number Diff line change @@ -155,7 +155,7 @@ it on the command line through the `cider.tasks/add-middleware` task
155
155
functionality):
156
156
157
157
```
158
- boot -d org.clojure/tools.nrepl:0.2.12 -d cider/cider-nrepl:0.x.y-SNAPSHOT -i "(require 'cider.tasks)" cider.tasks/add-middleware -m cider.nrepl.middleware.apropos/wrap-apropos -m cider.nrepl.middleware.version/wrap-version repl -s wait
158
+ boot -d org.clojure/tools.nrepl:0.2.12 -d cider/cider-nrepl:0.x.y-SNAPSHOT -i "(require 'cider.tasks)" cider.tasks/add-middleware -m cider.nrepl.middleware.apropos/wrap-apropos -m cider.nrepl.middleware.version/wrap-version cider.tasks/nrepl-server wait
159
159
```
160
160
161
161
Or for all of their projects by adding a ` ~/.boot/profile.boot ` file like so:
@@ -164,14 +164,15 @@ Or for all of their projects by adding a `~/.boot/profile.boot` file like so:
164
164
(set-env! :dependencies '[[org.clojure/tools.nrepl " 0.2.12" ]
165
165
[cider/cider-nrepl " 0.x.y-SNAPSHOT" ]])
166
166
167
- (require '[cider.tasks :refer [add-middleware]])
167
+ (require '[cider.tasks :refer [add-middleware nrepl-server ]])
168
168
169
169
(task-options! add-middleware {:middleware '[cider.nrepl.middleware.apropos/wrap-apropos
170
170
cider.nrepl.middleware.version/wrap-version]})
171
171
```
172
172
173
- And then launching ` boot add-middleware repl -s wait ` . Note that this
174
- is not necessary when using the standard ` cider-jack-in ` .
173
+ And then launching ` boot add-middleware nrepl-server wait ` .
174
+
175
+ Note that this is not necessary when using the standard ` cider-jack-in ` .
175
176
176
177
For more information visit [ boot-clj wiki] ( https://github.com/boot-clj/boot/wiki/Cider-REPL ) .
177
178
Original file line number Diff line number Diff line change 11
11
symbol."
12
12
[m middleware MIDDLEWARE #{sym} " Name of the middleware to inject" ]
13
13
(if-let [default-middleware (resolve 'boot.repl/*default-middleware*)]
14
- (do (util/dbug* " Boot's default middleware: %s\n " (vec @@default-middleware))
14
+ (do (util/dbug* " Current middleware: %s\n " (vec @@default-middleware))
15
15
(swap! @default-middleware concat middleware)
16
16
(util/dbug* " After cider-nrepl injection: %s\n " (vec @@default-middleware)))
17
17
(util/dbug " Cannot resolve boot.repl/*default-middleware*, skipping middleware injection...\n " ))
18
18
identity )
19
+
20
+ (deftask nrepl-server
21
+ " Start a nREPL server.
22
+
23
+ Optionally accepts port and host.
24
+
25
+ Note that the boot.repl/*default-middleware* atom is read for the list of the
26
+ middleware symbols."
27
+ [b bind ADDR str " The address server listens on."
28
+ p port PORT int " The port to listen on and/or connect to." ]
29
+ (let [default-mws @@(resolve 'boot.repl/*default-middleware*)]
30
+ (util/dbug* " nREPL middleware: %s\n " (vec default-mws ))
31
+ (boot.core/with-pass-thru [_]
32
+ (require 'cider-nrepl.main)
33
+ ((resolve 'cider-nrepl.main/init) {:middleware default-mws
34
+ :port port
35
+ :bind bind}))))
Original file line number Diff line number Diff line change 8
8
(require (symbol (namespace thing)))
9
9
(resolve thing))
10
10
11
+ (def resolve-mw-xf
12
+ (comp (map require-and-resolve)
13
+ (keep identity)))
14
+
11
15
(defn- handle-seq-var
12
16
[var]
13
17
(let [x @var]
14
18
(if (sequential? x)
15
- (map require-and-resolve x)
19
+ (into [] resolve-mw-xf x)
16
20
[var])))
17
21
22
+ (def mw-xf
23
+ (comp (map symbol)
24
+ resolve-mw-xf
25
+ (mapcat handle-seq-var)))
26
+
18
27
(defn- ->mw-list
19
28
[middleware-var-strs]
20
- (mapcat (comp handle-seq-var require-and-resolve symbol)
21
- middleware-var-strs))
29
+ (into [] mw-xf middleware-var-strs))
30
+
31
+ (defn start-nrepl
32
+ [opts]
33
+ (let [{:keys [handler middleware bind port]} opts
34
+
35
+ handler (cond-> (or handler nrepl.server/default-handler)
36
+ middleware (apply (->mw-list middleware)))
22
37
23
- (defn- start-nrepl
24
- [handler]
25
- (let [nrepl-port (io/file " .nrepl-port" )
26
38
{:keys [server-socket port] :as server}
27
- (nrepl.server/start-server :handler handler)
28
- bind (-> server-socket (.getInetAddress ) (.getHostName ))]
29
- (doto nrepl-port
39
+ (nrepl.server/start-server :handler handler
40
+ :bind bind
41
+ :port port)
42
+
43
+ bind
44
+ (-> server-socket (.getInetAddress ) (.getHostName ))]
45
+ (doto (io/file " .nrepl-port" )
30
46
(spit port)
31
47
(.deleteOnExit ))
32
48
(println (format " nREPL server started on port %d on host %s - nrepl://%s:%d" port bind bind port))
33
49
server))
34
50
35
51
(defn init
36
- [middleware-syms]
37
- (start-nrepl (apply nrepl.server/default-handler (->mw-list middleware-syms)))
38
- ; ; Return nil so the value doesn't print
39
- nil )
52
+ ([]
53
+ (init nil ))
54
+ ([opts]
55
+ (start-nrepl opts)
56
+ ; ; Return nil so the value doesn't print
57
+ nil ))
You can’t perform that action at this time.
0 commit comments