2010-09-24 13 views
7

Por lo tanto, regular clojure repl funciona bien, (read-line) recopila entrada, luego la echos. Sin embargo, al usar lein repl, nunca se hace eco de ningún carácter de entrada, ni tampoco me permite volver desde ningún comando de lectura estándar.clojure lein (línea de lectura) stdin woes

Estoy seguro de que tiene algo que ver con volver a vincular en, pero me preguntaba si hay una solución/solución?

Gracias.

Respuesta

5

Esto se debe a un error en la hormiga; impide que se use la secuencia stdin del subproceso que inicia. Pero el truco de telnet debería funcionar, ya que lein repl lanza un servidor socket repl; funciona bien aquí.

+0

Gracias, lo intentaré, aunque este problema en realidad se manifiesta en baba, mi publicación se redujo a repl/swank, pero telnet no hará por mí. Curiosamente, este problema no existe en el pastel. Cake's (read-line) no se cuelga, sino que regresa con una cadena vacía. ¿Está diciendo que puedo iniciar el intercambio de lean y luego, cuando se trata de (lectura de línea) y bloques, puedo conectarme a través de telnet y usarlo para cualquier cosa estándar, que luego se reflejará en el repl/swank? –

+0

Eso es muy extraño; No entiendo cómo telnet podría fallar así. Pero acabo de enviar una corrección de error a lein repl, y ahora la línea de lectura funciona en el repl por mí. Avíseme si le funciona en el último 1.4.0-SNAPSHOT; si no, abra un problema o inicie un hilo de la lista de correo. – technomancy

2

Conéctese a REPL a través de telnet.

$ lein repl 
REPL started; server listening on localhost:63849. 
user=> 
[1]+ Stopped     lein repl 
$ telnet localhost 63849 
Trying ::1... 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
user=> (read-line) 
hello 
"hello" 
user=> 
+1

que no funciona aquí, telnet localhost * port * no muestra ninguna solicitud de repl. Probé las últimas versiones de lanzamiento y desarrollo. Estoy en OSX usando jse 1.6, no es que importe, solo estoy tratando de ver si tenemos configuraciones equivalentes. –

+0

Ubuntu con jdk 1.6 aquí. Verifique su archivo/etc/hosts. ¿Localhost está vinculado a 127.0.0.1? ¿Conoció el proceso de Lein correctamente? ¿Tal vez intente iniciar lein y telnet en diferentes ventanas de terminal? Si no lo hago, te recomiendo que pruebes 'cake' (http://www.assembla.com/wiki/show/clojure/Getting_Started_with_Cake). –

1

Esto funciona para mí ahora: envolver su lectura llamadas de la línea con la macro-con-la línea de apoyo a leer lo que está en ns swank.core [ya Swank-clojure 1.4+ creo]:

(use 'swank.core) 
(with-read-line-support 
    (println "a line from Emacs:" (read-line))) 

Gracias a Tavis Judd por la solución.

Cuestiones relacionadas