在Scheme模式下插入原始括号

4
当scheme-mode激活时插入原始左右括号的标准方式是什么?有标准的键绑定吗?
我目前插入左括号的方法是:
1. 输入“(”会插入一对“()” 2. 在括号之间插入“;;” 3. 删除右括号和分号
更新:事实证明,我已经在我的.emacs.d目录中安装了Prelude (https://github.com/bbatsov/prelude),这加载了smartparens.el库来处理左右括号键。

1
(未经测试)请尝试使用“C-q(”和“C-q)”。如果有效,我会将其添加为答案 :) - Óscar López
是的,它有效!请将其添加为答案。 - ErikR
2个回答

3

请尝试以下方法:

  • 输入左括号:C-q (
  • 输入右括号:C-q )

3
你有时是否也想要描述的那种不良行为?如果不是,只需将()绑定到scheme-mode-map中的self-insert-command即可。这样你就不必每次使用C-q插入括号了。
哦,但我发现在Scheme模式下,括号应该已经能够自动插入了 - 所以忘记刚才说的吧。
所以你一定是还做了其他事情,而不仅仅是使用scheme-mode,才会出现你描述的问题。
尝试C-h k (来查找(绑定的命令是什么。然后去寻找那个命令,看看你正在加载哪些代码造成了这个键绑定。(你可能可以通过命令名称来猜测库的名称。)
如果那不能帮助你找到它,而且你确实想找到那个绑定并移除/防止它,那么就逐步分割你的初始化文件(通过逐层注释1/2,3/4,7/8……),直到找到制造你不喜欢的键绑定的代码位置。

1
它调用了smartparens.el中定义的sp--self-insert-command。该命令是self-insert-command的一个包装器,它(我猜)特殊处理像括号、方括号和大括号这样的成对符号。我将查找我的.emacs.d目录以找出如何加载它。 - ErikR
听起来你只是想在scheme-mode中关闭智能括号模式(或者它被称为什么)。你知道如何做到这一点,对吧? - Drew
是的 - 我需要暂时这样做。通常我喜欢smart-parens所做的事情,但有时我会误判s-exp的边界,发现我需要插入一个)(对或者我需要在新的()对中嵌入一个s-exp。 - ErikR
这就是为什么我问你是否有时确实需要避免的行为。有几种方法可以解决。您可以默认情况下插入括号,通过特殊键成对插入,或者反之亦然。您可以使用键切换任何模式的开/关状态。等等。 - Drew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接