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
155155functionality):
156156
157157```
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
159159```
160160
161161Or 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:
164164(set-env! :dependencies '[[org.clojure/tools.nrepl " 0.2.12" ]
165165 [cider/cider-nrepl " 0.x.y-SNAPSHOT" ]])
166166
167- (require '[cider.tasks :refer [add-middleware]])
167+ (require '[cider.tasks :refer [add-middleware nrepl-server ]])
168168
169169(task-options! add-middleware {:middleware '[cider.nrepl.middleware.apropos/wrap-apropos
170170 cider.nrepl.middleware.version/wrap-version]})
171171```
172172
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 ` .
175176
176177For more information visit [ boot-clj wiki] ( https://github.com/boot-clj/boot/wiki/Cider-REPL ) .
177178
Original file line number Diff line number Diff line change 1111 symbol."
1212 [m middleware MIDDLEWARE #{sym} " Name of the middleware to inject" ]
1313 (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))
1515 (swap! @default-middleware concat middleware)
1616 (util/dbug* " After cider-nrepl injection: %s\n " (vec @@default-middleware)))
1717 (util/dbug " Cannot resolve boot.repl/*default-middleware*, skipping middleware injection...\n " ))
1818 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 88 (require (symbol (namespace thing)))
99 (resolve thing))
1010
11+ (def resolve-mw-xf
12+ (comp (map require-and-resolve)
13+ (keep identity)))
14+
1115(defn- handle-seq-var
1216 [var]
1317 (let [x @var]
1418 (if (sequential? x)
15- (map require-and-resolve x)
19+ (into [] resolve-mw-xf x)
1620 [var])))
1721
22+ (def mw-xf
23+ (comp (map symbol)
24+ resolve-mw-xf
25+ (mapcat handle-seq-var)))
26+
1827(defn- ->mw-list
1928 [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)))
2237
23- (defn- start-nrepl
24- [handler]
25- (let [nrepl-port (io/file " .nrepl-port" )
2638 {: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" )
3046 (spit port)
3147 (.deleteOnExit ))
3248 (println (format " nREPL server started on port %d on host %s - nrepl://%s:%d" port bind bind port))
3349 server))
3450
3551(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