我经常发现自己从REPL开始一个长时间运行的过程,然后希望我可以在运行时继续使用REPL执行其他任务。 我可以使用slime来设置当前线程或启动一个新的REPL控制线程吗?启动一个额外的REPL缓冲区也没问题。
答案 0 :(得分:2)
编辑:
嗯,我在某种程度上设法错过了你问题上的Clojure标签。如果下面的解决方案适用于Clojure,我会非常惊讶,因为您可能知道,不幸的是,Clojure社区(至少对于我们这些使用Clojure 和 CL的人来说)维护着自己的Slime版本。我不会删除答案,因为它可能有助于CL程序员搜索此功能。除非Clojure有类似的解决方案,允许在单个套接字上多路复用多个REPL,否则你可以手动启动第二个Swank服务器(来自*inferior-lisp*
缓冲区)并通过{{连接到它1}}作为解决方法。 (不能测试这台ATM,因为我不久前停止使用Slime和Clojure。)
你试过slime-connect
contrib吗?我自己并没有真正使用它,但在CCL / Win / Emacs 24下我可以使用快速测试。
我测试了这样:slime-mrepl
,在REPL中输入M-x slime
,切换缓冲区,(sleep 10)
。
答案 1 :(得分:2)
请原谅我有点陈腐和非粘性的具体答案;在好的方面,它适用于任何clojure REPL。
当我提前知道我从REPL开始一个长时间运行的任务然后我使用future
开始计算并在解除它之前检查future-done?
。
答案 2 :(得分:1)
这可能无法解答您的问题,但只要(slime-communication-style)
为:spawn
,使用C-x C-e
进行的评估总是会产生自己的线程并且可以在与REPL线程中发生的任何事情并行。输出(来自println
等)将出现在REPL缓冲区中。