为什么 Slime 检查仅适用于鼠标单击而不适用于键盘命令?

问题描述

我正在使用 Emacs、Slime 和 Common Lisp (SBCL)。 Nyxt 只是 package名称

在 SLIME 的 REPL 中,调用变量会检索以下表达式:

NYXT> history-entries-over-threshold

(#<HISTORY-ENTRY {10131F2903}> #<HISTORY-ENTRY {10131F28D3}>
 #<HISTORY-ENTRY {10131F28A3}> #<HISTORY-ENTRY {10131F2873}>
 #<HISTORY-ENTRY {10131F2843}> #<HISTORY-ENTRY {10131F2813}>
 #<HISTORY-ENTRY {10131F27E3}> #<HISTORY-ENTRY {10131F27B3}>
 #<HISTORY-ENTRY {10131F2783}> #<HISTORY-ENTRY {10131F2753}>
 #<HISTORY-ENTRY {10131F2723}> #<HISTORY-ENTRY {10131F26F3}>
 #<HISTORY-ENTRY {10131F26C3}> #<HISTORY-ENTRY {10131F2693}>
 #<HISTORY-ENTRY {10131F2633}>)

我可以右键单击表达式的任何部分,然后菜单中就会出现检查选项。然后,缓冲区显示元素列表,我可以检查每个元素。

尽管有使用鼠标的成功经验,但我还是想使用键盘。这似乎是可能的,因为 Slime 将命令 slime-repl-inspect 绑定到 C-c I。问题是它对我不起作用

按下 C-c I 后,提示缓冲区会询问预期的值。我插入我用鼠标单击的值:

Inspect value (evaluated): (#<HISTORY-ENTRY {10131F2903}> #<HISTORY-ENTRY {10131F28D3}>
 #<HISTORY-ENTRY {10131F28A3}> #<HISTORY-ENTRY {10131F2873}>
 #<HISTORY-ENTRY {10131F2843}> #<HISTORY-ENTRY {10131F2813}>
 #<HISTORY-ENTRY {10131F27E3}> #<HISTORY-ENTRY {10131F27B3}>
 #<HISTORY-ENTRY {10131F2783}> #<HISTORY-ENTRY {10131F2753}>
 #<HISTORY-ENTRY {10131F2723}> #<HISTORY-ENTRY {10131F26F3}>
 #<HISTORY-ENTRY {10131F26C3}> #<HISTORY-ENTRY {10131F2693}>
 #<HISTORY-ENTRY {10131F2633}>)

不幸的是,REPL 抛出了一个错误

 illegal sharp macro character: #\<

  Line: 1,Column: 2,File-Position: 2

  Stream: #<SB-IMPL::STRING-INPUT-STREAM {100676A913}>
   [Condition of type SB-INT:SIMPLE-READER-ERROR]

我怎样才能获得与使用键盘进行鼠标检查相同的结果?

解决方法

C-c C-v C-i 用于检查演示文稿,因此无需再次输入该值。您可以使用 C-h b 查看活动的键绑定,然后搜索 inspect

,

实际上,来自提示缓冲区的消息具有误导性,尤其是考虑到您在使用鼠标单击值时。

为了使用键盘实现相同的效果,用户需要输入变量(不是值)。因此,按下 C-c I 后:

Inspect value (evaluated): history-entries-over-threshold

它可以工作,返回与鼠标实现的相同的内省列表:

    #<CONS {1002A04127}>
    --------------------
    A proper list:
    0: #<HISTORY-ENTRY {10131F2903}>
    1: #<HISTORY-ENTRY {10131F28D3}>
    2: #<HISTORY-ENTRY {10131F28A3}>
    3: #<HISTORY-ENTRY {10131F2873}>
    4: #<HISTORY-ENTRY {10131F2843}>
    5: #<HISTORY-ENTRY {10131F2813}>
    6: #<HISTORY-ENTRY {10131F27E3}>
    7: #<HISTORY-ENTRY {10131F27B3}>
    8: #<HISTORY-ENTRY {10131F2783}>
    9: #<HISTORY-ENTRY {10131F2753}>
    10: #<HISTORY-ENTRY {10131F2723}>
    11: #<HISTORY-ENTRY {10131F26F3}>
    12: #<HISTORY-ENTRY {10131F26C3}>
    13: #<HISTORY-ENTRY {10131F2693}>
    14: #<HISTORY-ENTRY {10131F2633}>