【问题标题】:connect multiple different terminals to the same slime instance将多个不同的终端连接到同一个 slime 实例
【发布时间】:2014-06-22 06:24:49
【问题描述】:

在使用 emacs 和 slime 时,我还是个新手。

我想知道是否有办法在本地端口上启动 lisp(比如 SBCL),然后将多个不同的 slime 会话连接到它?

例如,如果我正在使用 tmux/screen 并且希望在每个窗口之间有不同的 emacs 会话,我是否能够将所有的 slime 实例连接到同一个 lisp 以便所有 emacs 会话共享一个允许我的 repl在任何 emacs 会话中进行编译,并且正在运行的 repl 将进行这些更改?

【问题讨论】:

    标签: emacs slime


    【解决方案1】:

    我使用的是 LispWorks 6.1 32 位专业版。我更喜欢在多个 tmux 会话中使用 (Spac)emacs 进行编辑,我从事的每个项目一个会话。

    这些是我遵循的步骤:

    1. 启动 LispWorks 监听器 REPL。

    2. 不经过emacs路由加载swank:

      (load "/path/to/swank-loader.lisp")
      (swank-loader:init)
      (setf swank:*use-dedicated-output-stream* nil)
      (swank:create-server :port 4005  :dont-close t)
      
    3. 然后在我的 iTerm 选项卡中为某些项目 1 使用 tmux 会话,我执行 M-x slime- 如步骤 2 所示连接并连接到主机和端口。

    4. 使用另一个 lisp 项目代码对另一个 tmux 会话重复第 3 步。

    通过此设置,我可以在同一个 lisp 映像中加载我正在处理的多个项目的代码。到目前为止,我在这样做时还没有发现任何重大问题。

    【讨论】:

      【解决方案2】:

      这取决于您使用的 lisp 系统,它支持的功能,即您的 SBCL 是否启用了多线程(参见 (member :sb-thread *features*)SWANK:*COMMUNICATION-STYLE* 的设置,参见 Slime docs .

      【讨论】:

      • 我在 debian 系统上有 SBCL 1.2。 SB-THREAD 已启用。 *COMMUNICATION-STYLE*:SPAWN 我不清楚应该使用哪种样式将多个 slime 会话连接到同一个 lisp 进程,也不知道该怎么做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      相关资源
      最近更新 更多