Don't exit after eval in repl task either.
This commit is contained in:
parent
94790ce255
commit
aed1a4b0c2
2 changed files with 17 additions and 14 deletions
|
@ -28,7 +28,8 @@
|
|||
(let [[reader writer socket] (connect)]
|
||||
(.write writer (str (pr-str form) "\n" '(.close *in*) "\n"))
|
||||
(.flush writer)
|
||||
(try (eval-client-loop reader writer (make-array Character/TYPE 100) socket)
|
||||
(try (eval-client-loop reader writer
|
||||
(make-array Character/TYPE 1000) socket)
|
||||
0
|
||||
(catch Exception e
|
||||
(.printStackTrace e) 1)
|
||||
|
@ -56,12 +57,12 @@
|
|||
(let [[port host] (repl-socket-on project)]
|
||||
(println welcome)
|
||||
(future
|
||||
(eval-in-project project `(do ~(repl-server project host port
|
||||
:prompt '(constantly ""))
|
||||
(symbol ""))))
|
||||
(binding [*exit-when-done* false]
|
||||
(eval-in-project project `(do ~(repl-server project host port :silently
|
||||
:prompt '(constantly ""))
|
||||
(symbol "")))))
|
||||
(let [connect #(poll-repl-connection port 0 vector)]
|
||||
(binding [eval-in-project (partial eval-in-repl connect)
|
||||
*exit-when-done* false
|
||||
exit (fn [_] (println "\n"))]
|
||||
(task-repl project)))
|
||||
(exit)))
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
"Start a repl session either with the current project or standalone."
|
||||
(:require [clojure.main])
|
||||
(:use [leiningen.core :only [exit]]
|
||||
[leiningen.compile :only [eval-in-project]]
|
||||
[leiningen.compile :only [eval-in-project *exit-when-done*]]
|
||||
[clojure.java.io :only [copy]])
|
||||
(:import [java.net Socket]
|
||||
[java.io OutputStreamWriter InputStreamReader File]))
|
||||
|
||||
(defn repl-server [project host port & repl-options]
|
||||
(defn repl-server [project host port silently & repl-options]
|
||||
(let [init-form [:init `#(let [is# ~(:repl-init-script project)
|
||||
mn# '~(:main project)]
|
||||
(when (and is# (.exists (File. (str is#))))
|
||||
|
@ -53,7 +53,8 @@
|
|||
(.printStackTrace e#)))
|
||||
(recur)))
|
||||
.start)
|
||||
(format "REPL started; server listening on %s:%s." ~host ~port)))))
|
||||
(when-not ~silently
|
||||
(println "REPL started; server listening on" ~host ":" ~port))))))
|
||||
|
||||
(defn copy-out-loop [reader]
|
||||
(let [buffer (make-array Character/TYPE 1000)]
|
||||
|
@ -105,12 +106,13 @@ Running outside a project directory will start a standalone repl session."
|
|||
([] (repl {}))
|
||||
([project]
|
||||
(let [[port host] (repl-socket-on project)
|
||||
server-form (apply repl-server project host port
|
||||
server-form (apply repl-server project host port false
|
||||
(:repl-options project))]
|
||||
(future (try (if (empty? project)
|
||||
(clojure.main/with-bindings
|
||||
(println (eval server-form)))
|
||||
(eval-in-project project server-form))
|
||||
(catch Exception _)))
|
||||
(future (binding [*exit-when-done* false]
|
||||
(try (if (empty? project)
|
||||
(clojure.main/with-bindings
|
||||
(println (eval server-form)))
|
||||
(eval-in-project project server-form))
|
||||
(catch Exception _))))
|
||||
(poll-repl-connection port)
|
||||
(exit))))
|
||||
|
|
Loading…
Reference in a new issue