From aed1a4b0c2ffe64309fd5b368cb64034e82627d8 Mon Sep 17 00:00:00 2001 From: Phil Hagelberg Date: Wed, 24 Nov 2010 18:26:17 -0800 Subject: [PATCH] Don't exit after eval in repl task either. --- src/leiningen/interactive.clj | 11 ++++++----- src/leiningen/repl.clj | 20 +++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/leiningen/interactive.clj b/src/leiningen/interactive.clj index bdadea62..e400cabf 100644 --- a/src/leiningen/interactive.clj +++ b/src/leiningen/interactive.clj @@ -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))) diff --git a/src/leiningen/repl.clj b/src/leiningen/repl.clj index 867a94c7..cccb4a3e 100644 --- a/src/leiningen/repl.clj +++ b/src/leiningen/repl.clj @@ -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))))