在使用emacs和史莱姆时,我仍然是新手。
我想知道是否有办法在本地端口上启动lisp(比如SBCL),然后将多个不同的粘液会话连接到它?
例如,如果我使用tmux / screen并希望在每个窗口之间有不同的emacs会话,我是否能够将所有slime实例连接到同一个lisp,以便所有emacs会话共享一个repl允许我要在任何emacs会话中编译,一个正在运行的repl会有这些更改吗?
答案 0 :(得分:2)
我正在使用LispWorks 6.1 32位专业版。我更喜欢在多个tmux会话中使用(Spac)emacs进行编辑,对于我所处理的每个项目都使用一个会话。
这些是我遵循的步骤:
启动LispWorks Listener REPL。
加载swank而不通过emacs路线:
(load "/path/to/swank-loader.lisp")
(swank-loader:init)
(setf swank:*use-dedicated-output-stream* nil)
(swank:create-server :port 4005 :dont-close t)
然后在我的iTerm标签中,对于某个项目1使用tmux会话,我做了M-x slime- 按照步骤2连接并连接到主机和端口。
使用另一个lisp项目代码重复步骤3以进行另一个tmux会话。
通过这种设置,我可以在同一个lisp图像中加载我正在处理的多个项目的代码。到目前为止,我没有发现任何重大问题。
答案 1 :(得分:0)
这取决于您使用的lisp系统,它支持的功能,即您的SBCL是否启用了多线程(参见(member :sb-thread *features*)
和SWANK:*COMMUNICATION-STYLE*
的设置,参见Slime docs。