'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 界面出现问题,您仍然可以从终端调试错误。
我安装了带有 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 界面出现问题,您仍然可以从终端调试错误。