0

在使用 时,我经常会遇到以下情况,以下代码段中paredit的点是|我想要关闭悬空括号的地方,例如。

(let ((foo 1)| ; blag
      )
  nil)

变成

(let ((foo 1)) ; blag
  nil)

在该点键入)aka之后。paredit-close-parenthesis

如果评论不在行,paredit将关闭括号并删除空格。有没有人有一个很好的方法来启用这个功能?

查看代码,paredit似乎可以在我可以添加处理程序的地方捕获错误,所以我想知道是否有一个简单的解决方案。

4

1 回答 1

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仍然卡在评论中,并且也需要被覆盖。

于 2019-02-01T22:39:39.777 回答