关闭parens时paredit忽略注释

时间:2019-02-01 22:04:00

标签: emacs formatting paredit

在使用paredit时,我经常遇到以下情况,例如,以下代码段中的|指向要关闭悬空对象的位置,例如。

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

成为

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

在该位置键入)paredit-close-parenthesis之后。

如果注释未在线,paredit将关闭括号并删除空格。有人有启用该功能的好方法吗?

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

1 个答案:

答案 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仍然停留在评论中,因此也需要覆盖。