我喜欢paredit。但是有一些我讨厌的东西,还没有解决它们:
''
)内时,我无法进行反向删除。此外,键入双引号("
)将插入一个反斜杠(显然是为了逃避双引号 - 只是不需要这样,至少在python中。所以我不想反斜杠。如何配置这个? paredit
尝试(并且失败)与退格相关非常明智。我的退格应该总是删除前一个字符,无论我是否在未完成的引用区域(如果引号不匹配,paredit只是拒绝执行任何操作。尝试在此处删除:"helloo
)。删除是有意义的特殊处理的唯一情况是当该点恰好在左括号之前。答案 0 :(得分:3)
这不是答案,但评论时间太长......
Paredit适用于在(
可怕之前没有空格的语言,以及没有python的“引用聪明”的语言。你可能会因为这些问题而破解它,但是python的语法是完全不同的,使得它可以工作,这将是一个非平凡的项目。
至于你的最后一点,听起来你根本不想要paredit,因为它非常故意试图保持你的parens&报价平衡,所以也许它不适合你。 IOW,您可能更喜欢auto pairs或electric pair或其他类似的工具。
答案 1 :(得分:1)
您可以通过paredit-space-for-delimiter-predicates
变量自定义paredit在分隔符周围的空间插入 - 有关详细信息,请参阅docstring。有一些使用它的例子在互联网上踢,但我不记得它们在哪里。
Paredit对字符串的处理仅限于许多Lisp常用的字符串表示法,并且更改它并非易事,因此如果您想使用异乎寻常的语法,例如Python的各种一或三个分隔符单个或 - 双引号格式,你需要深入内部paredit。
答案 2 :(得分:1)
示例代码bellow适用于scheme:
(defun paredit-space-for-delimiter-predicates-scheme (endp delimiter)
"Do not automatically insert a space when a '#' precedes parentheses."
(or endp
(cond ((eq (char-syntax delimiter) ?\()
(not (looking-back "#\\|#hash")))
(else t))))
(defun scheme-mode-paredit-hook ()
(enable-paredit-mode)
(add-to-list (make-local-variable 'paredit-space-for-delimiter-predicates)
'paredit-space-for-delimiter-predicates-scheme))
(add-hook 'scheme-mode-hook 'scheme-mode-paredit-hook)
答案 3 :(得分:0)
要强制删除字符,您必须选择它并C-w
它。
要强制插入一个字符,例如开头引号,您必须使用C-q (
。