'SB-KERNEL:UNKNOWN-PARSE-TYPE' 使用 Vlime 将 Vim 连接到 SBCL 时

'SB-KERNEL:UNKNOWN-PARSE-TYPE' when connecting Vim to SBCL using Vlime

我安装了带有 Vlime 插件 (065b95f) 的 Vim 8.0.1365 和一个加载了 start-vlime.lisp 的 SBCL (1.2.11) 会话,运行 在 macOS 10.14.6 (18G87) 上。

当我使用 \cc 从 Vim 连接时,SBCL 会话显示 vlime-sbcl - New connection from #<AIO-SBCL:AIO-FD {10048DFD63}(因此连接有效)但随后调试器在 SB-KERNEL:PARSE-UNKNOWN-TYPE 条件下被调用发出信号。

调试器重启是:

0: [REMOVE-FD-HANDLER] Remove #<SB-IMPL::HANDLER INPUT on descriptor 6: #<FUNCTION AIO-SBCL::SOCKET-INPUT-CB>>
1: [ABORT            ] Exit debugger, returning to top level.

(VLIME-SBCL::SOCKET-ERROR-CB #<unavailable argument> #<SB-KERNEL:PARSE-UNKNOWN-TYPE {1004BE9B23}>)

我已经尝试了两种重启选项。删除处理程序没有任何响应,并在 * 提示符下中止 returns SBCL。

该连接似乎存在于 Vim 中(虽然没有成功消息)并且可以在使用 \ss 命令时选择(我在 (+ 3 3) 上测试过)。

SWANK window 仅在每次使用 \ss 时显示一个 --,下面的错误消息显示:

Error detected while processing function vlime#plugin#SendToREPL[100]..vlime#ui#input#MaybeInput[33]..<SNR>42_CheckInputValidity[2]..<SNR>32_SendToREPLInputComplete:
line 2:
E716: Key not present in Dictionary: ListenerEval, [a:content, function('s:OnListenerEvalComplete')]))
E116: Invalid arguments for function(a:conn.ListenerEval, [a:content, function('s:OnListenerEvalComplete')]))
E116: Invalid arguments for function vlime#WithThread

我对 SBCL 或 Lisp 的经验不多 - 这基本上是起跑线上的障碍。

第一个重启选项是什么意思?

PARSE-UNKNOWN-TYPE 条件在 Google 搜索中似乎并不常见,而且与 Vlime 完全没有关系。我可以采取哪些后续步骤来解决这个问题?

(发表评论作为答案)

处理 client/server 协议时常见的错误来源是所涉及的不同部分的版本不匹配。 gihub page for vlime 列出了依赖项和支持的实现,我将从那里开始。

此外,尝试在独立终端中启动 sbcl(首先安装 quicklisp,使用 "rlwrap sbcl" 以获得 readline 支持),然后手动加载 Swank:

(ql:quickload :swank)

创建服务器

(swank:create-server :port 4005)

并连接到它,所以如果 client/server 界面出现问题,您仍然可以从终端调试错误。