2010-09-24 43 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的修復。