我经常会在REPL中启动一些长时间运行的进程,然后希望在它运行的同时能够继续使用REPL进行其他任务。 我能否使用slime将当前线程放入后台或启动一个新的REPL控制线程? 也可以启动另一个REPL缓冲区。
编辑:
啊,我不知怎么疏忽了你问题中的Clojure标签。如果你很熟悉Clojure社区维护自己的Slime版本,那么你可能知道,在Clojure中使用下面提供的解决方案可能并不奏效(至少对于那些同时使用Clojure和CL的人来说是这样)。我不会删除这个答案,因为它可能对寻找此功能的CL程序员有所帮助。
除非有类似的Clojure解决方案,可以在单个套接字上多路复用多个REPL,否则您可以通过手动启动第二个Swank服务器(从*inferior-lisp*
缓冲区)并通过slime-connect
连接到它,作为一种解决方法。(由于我已经有一段时间没有使用Slime与Clojure一起使用,因此无法测试此功能。)
您尝试了slime-mrepl
贡献吗?我实际上自己还没有使用过它,但是在CCL/Win/Emacs 24下我进行了快速测试并成功了。
我像这样进行了测试:M-x slime
,在REPL中输入(sleep 10)
,切换到另一个缓冲区,M-x slime-new-mrepl
。
future
启动计算,并在解除引用之前使用future-done?
进行检查。(slime-communication-style)
是 :spawn
,使用 C-x C-e
进行的评估总是会生成自己的线程,并且可以并行运行与 REPL 线程中发生的任何事情。输出(来自 println
等)将出现在 REPL 缓冲区中。