paredit, smartparens, lispy/lispville, parinfer 你用哪一个?

Doom Emacs 四个都包含了,不知道 paredit 是被谁依赖进来的。

paredit 应该是被 smartparens 超越了,smartparens 据说有性能问题,spacemacs 特意加了个关闭它的选项,doom emacs 里默认没启用 smartparens 自带的按键绑定,不知何故。

parinfer 看着很炫,lispy 跟 evil 搭配挺不错。

2 个赞

如果是 lisp 的话优先 paredit。其他时候 smartparens。

1 个赞

racket用paredit,其他的用自带的electric-pair+evil-surround.

paredit体验上是通杀的,但有些feature要调整一下才能在其他语言更好的使用

两位都是 emacs 老手😄

smartparens可以替代paredit而且支持更多语言,有个自定义参数可以设置成paredit快捷键,也有它自己的快捷键,但是比较难用。doom emacs默认没有激活它的快捷键。

Doom emacs里配置的 lispy mode会自动关闭 smartparens,现在把 doom 的parinfer, lispy都打开了,好像没有冲突……

parinfer真是特别🐂!

怎么都删除不掉括号,新手表示用得还不太顺手。

lisp 用 paredit,其他之前用 smartparens,没注意到性能问题,但最近出了一个 typo 引起的 bug,作者失踪了很久。因此我换到自带的 electric-pair-mode 了,稍微改一下断言就可以替代 smartparens。

awesome-pair 是继承paredit基因,对其他语言(特别是JavaScript、Vue)支持比较好,几乎所有语言开箱即用,大家可以尝试一下 awesome-pair, 有问题我也会修比较快(除非LaTex这种我不会的东西),因为我每天都在用 awesome-pair.

这个是很悲剧,括号放错位置了,想调整下都搞不定。。。

paredit 代码里说他主要注重代码直观,并没太在意性能, smartparens 也有性能问题,所以 spacemacs 提供了一个选项关闭它,我目前还没发现问题。

smartparens 和 paredit 除了自动输入匹配的括号、引号,还有 s-exp 整体编辑功能,这个是 electric-pair-mode 没有的,不过 smartparens 默认没有激活 s-exp 整体编辑功能。

smartparens 的广告:https://github.com/Fuco1/smartparens#related-projects

Other Emacs projects that deal with pairs include:

Smartparens aims to provide a superset of these features, in all programming languages.

看代码和文档,比 smartparens 功能少,smartparens 发展的比较庞大了,但是威力又不明显,估计好多人都没启用 smartparens 的 s-exp 操作功能而同时用 paredit 和 smartparens,paredit 太知名了,但其实比 paredit 更强,不局限于 lisp 系。

lispy 和 parinfer 很明显,前者和 evil 搭配很舒服,后者更是非常特别了,写 lisp 写出 python 的缩进感😄️

1 个赞

借楼询问下,哪个功能可以可以将括号fold/折叠起来没?

上面提到的都是自动插入匹配括号、引号,整体操作 s-exp 的,没有折叠功能。

参考下 Doom 用的包,快捷键跟 vim 一样,zo,zc,很方便:

.emacs.d/modules/editor/fold/packages.el:

;; -*- no-byte-compile: t; -*-
;;; editor/fold/packages.el

(package! hideshow :built-in t)

(package! vimish-fold :pin "a6501cbfe3db791f9ca17fd986c7202a87f3adb8")
(when (featurep! :editor evil)
  (package! evil-vimish-fold :pin "b6e0e6b91b8cd047e80debef1a536d9d49eef31a"))
1 个赞

刚刚从doom退出来,doom非常顺手,就是偶尔编辑文件卡顿。 目前在徒手配置最小满足编辑需求。

做为 parinfer-mode 的作者,我放弃 parinfer 的主要原因是因为做不出性能够好的实现。-

你还不如分析下为啥卡顿。。。

如果你开了 lsp 的话,试试在 ~/.doom.d/config.el 里加上这句:

(use-package! lsp-mode
  :config
  (setq lsp-enable-file-watchers nil))  ; https://emacs-lsp.github.io/lsp-mode/page/performance/#ignore-watch-foldersfiles

我是不想从头打造了,看看 doom emacs 的实现要考虑多少不同插件之间的配合啊,这些从头到尾你都调试一遍的话,那代价太大了。。。很可能是打造了半天各种不满意又舍不得丢弃,鸡肋了🤣

哇,厉害了,居然是你写的。。。

我用了 parinfer-rust-mode,目前看还好。

我用 electric-pair是不是很土?以前用smartparens,太复杂,偶尔卡顿

1 个赞

对,parinfer-rust-mode 可以的

这个高端,emacs自带而且还能自动 quote string里的引号,smartparens居然不支持!

parinfer-mode 是不是在melpa下架了?