如何让 Paredit 与 Hungry-delete 一起工作

我在配置中使用了 paredit-mode,所以把delete键也绑定到了“(paredit-backward-delete)”。但是这样一来 hungry-delete 便不工作了。有什么解决办法吗?

How to get hungry-delete working in paredit-mode? 给出了简单的解决方案,可以参考一下。并没有使用 hungry-delete-mode,只需设置 backward-delete-char-untabify-method'all

但有一些局限性:

  1. hungry delete 方向只有 backward
  2. 光标在字符串内部没有 hungry delete
  3. 光标在行首没有 hungry delete
  4. 光标当前行的括号没有配平且上面刚好是注释时,hungry delete 会注释掉当前行,导致括号配不平。

除了第 1 点应该都能解决,可以试着改一下函数 paredit-backward-delete-in-stringparedit-backward-delete-maybe-comment-end,支持 backward-delete-char-untabifyparedit-backward-delete 最后一句也改为 paredit-backward-delete-maybe-comment-end


如果你只想用 hungry-delete-mode,可以参考一下 hungry-delete-impl。将其中的 delete-char 改为合适的函数 paredit-XXX-delete,处理一下参数 n,上面第 4 点仍需解决。

2 个赞