为啥 Slime 检查仅适用于鼠标单击而不适用于键盘命令?
Posted
技术标签:
【中文标题】为啥 Slime 检查仅适用于鼠标单击而不适用于键盘命令?【英文标题】:Why Slime inspect only works with mouse click and not with the keyboard command?为什么 Slime 检查仅适用于鼠标单击而不适用于键盘命令? 【发布时间】:2021-10-01 08:40:38 【问题描述】:我正在使用 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>)
我可以右键单击表达式的任何部分,菜单中会出现Inspect选项。然后,缓冲区显示元素列表,我可以检查每个元素。
尽管有鼠标的成功经验,我还是想用键盘。这似乎是可能的,因为 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]
如何使用键盘实现与鼠标检查相同的结果?
【问题讨论】:
【参考方案1】:实际上,提示缓冲区中的消息具有误导性,尤其是考虑到您在使用鼠标时单击该值。
为了使用键盘达到同样的效果,用户需要输入变量(不是值)。所以,按下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>
【讨论】:
【参考方案2】:此时有C-c C-v C-i
查看演示文稿,无需再次输入值。您可以使用C-h b
查看活动键绑定,然后搜索inspect
。
【讨论】:
以上是关于为啥 Slime 检查仅适用于鼠标单击而不适用于键盘命令?的主要内容,如果未能解决你的问题,请参考以下文章
从 webview 内容复制和粘贴仅适用于键盘快捷键(不适用于鼠标或触摸)
onClick() 事件适用于一个 div,但不适用于另一个。为啥?