2010-09-24 40 views
7

因此,定期clojure repl工作正常,(read-line)收集输入,然后回声。虽然使用lein repl,但不会回应任何输入字符,也不允许我从任何stdin读取命令返回。clojure lein(read-line)stdin woes

我确定它与重新绑定有关,但想知道是否有解决方法/修复?

谢谢。

回答

5

这是由于蚂蚁中的一个bug;它会阻止来自它启动的子进程的stdin流被使用。但是,由于lein repl启动一个套接字repl服务器,telnet技巧应该可以工作;它在这里工作正常。

+0

谢谢,我会试试看,虽然这个问题实际上表现为粘液,但我的帖子缩小了它的回报/ swank,但telnet不会为我做。有趣的是,这个问题在蛋糕中不存在。 Cake的(read-line)不会挂起,而是返回空字符串。 你是说我可以启动lein swank,然后当它到达(read-line)和块时,我可以通过telnet进行连接,并且可以将它用于任何stdin的东西,然后反映在repl/swank中? – 2010-10-01 20:50:34

+0

这很奇怪;我不明白telnet如何失败。但是我只是推动了一个bug修复,以便使用repl,现在在repl中为我编写了一些read-line作品。让我知道它是否适用于最新的1.4.0-SNAPSHOT;如果不是,请打开问题或启动邮件列表线程。 – technomancy 2010-10-02 05:18:35

2

通过telnet连接到REPL。

$ 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

在这里不起作用,telnet localhost * port *不会提示任何repl提示。我已经尝试了最新版本和开发版本。我在OSX上使用jse 1.6,并不重要,但只是试着看看我们是否有等效的配置。 – 2010-09-26 23:17:37

+0

Ubuntu与jdk 1.6在这里。检查你的/ etc/hosts文件。本地主机是否绑定到127.0.0.1?你是否正确背景lein过程?也许尝试在不同的终端窗口上启动lein和telnet?如果没有,我建议你尝试一下'cake'(http://www.assembla.com/wiki/show/clojure/Getting_Started_with_Cake)。 – 2010-09-27 07:26:13

1

现在,这对我的作品: 包装你读线通话与读取线支持这是在纳秒swank.core [斯旺克以来,Clojure的1.4+我相信]宏:

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

感谢Tavis Judd的修复。