Emacs paredit-mode - 如何纠正抽取代码中的不平衡括号?

时间:2014-10-08 02:19:49

标签: emacs clojure paredit

偶尔我会将代码放入缺少右括号或括号的paredit-mode缓冲区中。 paredit-mode然后检测未闭合的表达式并尝试将错误的paren添加到错误的位置。当我将光标移动到我想要关闭的位置时,这是令人沮丧的,但我不能把它放在那里。我最终不得不关掉paredit-mode

以下是一个例子: enter image description here

我只是猛拉了

[["https://github.com/aconbere/yesql.git"
 "aea69ebd4a7788a66fc8689fea7e806f1463c347"]

paredit-mode在最后看到一个丢失的)(红色)。当开口是一个支架时,我甚至不确定它为什么要使用紧密的parens。在该点键入]使光标跳到最后并尝试填充红色paren。啜饮或bar don不会产生预期的效果,只需移动)

有没有办法解决此问题而不暂时禁用paredit-mode

4 个答案:

答案 0 :(得分:9)

kill-region(默认绑定到C-w)和quoted-insert(默认绑定到C-q)不受paredit模式的影响。您可以使用这些键绑定删除区域或插入匹配的分隔符,从而绕过paredit规则。请记住,您也可以关闭paredit,清理一些东西,然后重新打开它。

答案 1 :(得分:4)

其他人已经提到引用插入C-q。您还可以使用C-u DELC-u C-d来覆盖paredit DELC-d的正常均衡行为,以便进行单次删除:

(foo)|) C-u DEL (foo|)

答案 2 :(得分:1)

相信我。到目前为止,最简单的方法是粘贴一个括号或括号。

你可以这样做:

    ;  ]

然后复制

答案 3 :(得分:0)

如果有不平衡的括号,请导航到要放置平衡括号的字符位置,发出M-x quoted-insert(默认绑定到C-q),然后输入平衡括号。 quoted-insert不会阻止发布括号。

与noisesmith说的不同。打开和关闭paredit不是一种选择:)