有没有emacs智能括号匹配plugin/configuration?

Does there exist an emacs intelligent parenthesis matching plugin/configuration?

在 emacs 中有一种模式,如果我输入 ( 它会像这样自动关闭它 (),但是如果我把它放在像这样的词前面(这个词它不会做 () 词,而是智能地保持像 ( word?我试过smartparens和autopair都没有用,可能是我没配置正确吧?

对于编程,我发现 paredit 可以满足我的所有需求。它保持平衡。

输入左括号也会在点后输入右括号:

(()

你可以直接用一对新的括号将点后的表达式括起来:

-((expr)

还有很多其他的命令,slurp 和 barf 子表达式 to/from 前后,交换表达式,在不同级别上移动等等,都保持括号的平衡。

例如,如果你有一些表达式(|表示点):

|expr1 expr0 expr2 expr3

-(

(|expr1) expr0 expr2 expr3

Ctrl-Shift-)

(|expr1 expr0) expr2 expr3

Ctrl-Shift-)

(|expr1 expr0 expr2) expr3

Meta-f

(expr1| expr0 expr2) expr3

Ctrl-Meta-t

(expr0 expr1| expr2) expr3

Ctrl-{

expr0 (expr1| expr2) expr3

Ctrl-Meta-u

expr0 |(expr1 expr2) expr3

Ctrl-Meta-f

expr0 (expr1 expr2) |expr3

使用内置(自版本 24.something 起)electric-pair-mode 并采用保守配对:

(setq-default electric-pair-inhibit-predicate 'electric-pair-conservative-inhibit)
(electric-pair-mode 1)