【发布时间】:2010-09-24 20:52:01
【问题描述】:
所以常规的 clojure repl 工作正常,(read-line) 收集输入,然后回显它。但是,使用 lein repl 不会回显任何输入字符,也不会允许我从任何标准输入读取命令返回。
我确定这与重新绑定 in 有关,但想知道是否有解决方法/修复?
谢谢。
【问题讨论】:
所以常规的 clojure repl 工作正常,(read-line) 收集输入,然后回显它。但是,使用 lein repl 不会回显任何输入字符,也不会允许我从任何标准输入读取命令返回。
我确定这与重新绑定 in 有关,但想知道是否有解决方法/修复?
谢谢。
【问题讨论】:
这是由于 ant 中的错误造成的;它防止使用它启动的子进程中的标准输入流。但是 telnet 技巧应该可以工作,因为 lein repl 启动了一个套接字 repl 服务器;它在这里工作正常。
【讨论】:
通过 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=>
【讨论】:
cake (assembla.com/wiki/show/clojure/Getting_Started_with_Cake)。
这对我现在有用: 使用 ns swank.core [因为 swank-clojure 1.4+ 我相信] 中的宏 with-read-line-support 来包装您的 read-line 调用:
(use 'swank.core)
(with-read-line-support
(println "a line from Emacs:" (read-line)))
感谢 Tavis Judd 的修复。
【讨论】: