Hi,
you could do it in a way counterclockwise does. You can implement a
repl that listening at an arbitrary port like doing this:
(ns de.svenali.education.inES.tools.repl
(:require clojure.main)
(:import (java.io InputStreamReader PrintWriter)
(java.net ServerSocket Socket)
(clojure.lang LineNumberingPushbackReader))
(:gen-class
)
)
(defn do-on-thread
"Create a new thread and run function f on it. Returns the thread
object that
was created."
[f]
(let [thread (new Thread f)]
(.start thread)
thread))
(defn socket-repl
"Start a new REPL that is connected to the input/output streams of
socket."
[socket]
(let [socket-in (new LineNumberingPushbackReader
(new InputStreamReader
(.getInputStream socket)))
socket-out (new PrintWriter
(.getOutputStream socket) true)]
(binding [*in* socket-in
*out* socket-out
*err* socket-out]
(clojure.main/repl))))
(defn start-repl-server
"Creates a new thread and starts a REPL server on listening on
port. Returns
the server socket that was just created."
[port]
(let [server-socket (new ServerSocket port 0)]
(do-on-thread #(while true (socket-repl (.accept server-
socket))))
server-socket))
You have to start this in your swing app. Then you can connect with
standard java sockets to this repl.
regards,
Sven
On 28 Nov., 22:56, Stuart Sierra <[email protected]> wrote:
> You can certainly run a REPL in a Swing GUI app. I'm not aware of any
> standalone Swing widgets to do this, but you could look at Clooj for
> an example:https://github.com/arthuredelstein/clooj
>
> -Stuart Sierra
> clojure.com
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en