在使用paredit
时,我经常遇到以下情况,例如,以下代码段中的|
指向要关闭悬空对象的位置,例如。
(let ((foo 1)| ; blag
)
nil)
成为
(let ((foo 1)) ; blag
nil)
在该位置键入)
或paredit-close-parenthesis
之后。
如果注释未在线,paredit
将关闭括号并删除空格。有人有启用该功能的好方法吗?
看看代码,paredit
似乎在我可以添加处理程序的地方捕获了错误,所以我想知道那里是否有简单的解决方案。
答案 0 :(得分:0)
我猜重写它似乎工作至今。
(defun my-paredit-close-round (&optional arg)
(interactive "P")
(if arg (paredit-close-round)
(let ((beg (point)) ;keep comment on same line
(cmt (paredit-find-comment-on-line)))
(paredit-move-past-close ?\))
(and cmt (save-excursion
(unless (eq (line-number-at-pos) (line-number-at-pos beg))
(goto-char beg))
(insert (car cmt)))))))
(advice-add 'paredit-close-round :override #'my-paredit-close-round)
但是paredit-backward-barf-sexp
仍然停留在评论中,因此也需要覆盖。