clojure lein(阅读行)stdin悲哀

clojure lein(阅读行)stdin悲哀,clojure,leiningen,Clojure,Leiningen,因此,常规clojure repl工作正常,(读取行)收集输入,然后进行响应。但是,使用lein repl时,不会回显任何输入字符,也不允许我从任何stdin读取命令返回 我确信这与重新绑定有关,但我想知道是否有解决方法/修复方法 谢谢。通过telnet连接到REPL $ lein repl REPL started; server listening on localhost:63849. user=> [1]+ Stopped lein repl $

因此,常规clojure repl工作正常,
(读取行)
收集输入,然后进行响应。但是,使用
lein repl
时,不会回显任何输入字符,也不允许我从任何stdin读取命令返回

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


谢谢。

通过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=>

这是由于ant中的一个bug造成的;它防止来自它启动的子进程的stdin流被使用。但是telnet的技巧应该是有效的,因为leinrepl启动了一个socketrepl服务器;它在这里工作得很好。

现在对我来说很好: 使用ns swank.core中的具有读取行支持的宏包装您的读取行调用[我相信是从swank clojure 1.4+开始]:

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

多亏了Tavis Judd的修复。

这在这里不起作用,telnet localhost端口不会出现任何repl提示。我尝试了最新版本和开发版本。我在OSX上使用JSE1.6,这并不重要,只是想看看我们是否有相同的配置。检查/etc/hosts文件。localhost是否绑定到127.0.0.1?你对莱恩过程的背景了解正确吗?也许尝试在不同的终端窗口上启动lein和telnet?如果不行,我建议你试试
cake
()。谢谢,我会试试,虽然这个问题实际上表现在slime中,但我的帖子把它缩小到了repl/swank,但telnet对我来说不行。有趣的是,这个问题在蛋糕中并不存在。Cake的(读取行)不会挂起,而是返回空字符串。你是说我可以启动lein swank,然后当它到达(读线)和块时,我可以通过telnet连接,尽管我可以将它用于任何stdin内容,然后会反映在repl/swank中?这很奇怪;我不明白telnet怎么会这样失败。但我刚刚给lein repl做了一个错误修复,现在为我阅读了repl中的行作品。让我知道在最新的1.4.0-SNAPSHOT中它是否适用于您;如果没有,请打开问题或启动邮件列表线程。