代码之家  ›  专栏  ›  技术社区  ›  Rorschach

Paredit在关闭paren时忽略注释

  •  0
  • Rorschach  · 技术社区  · 7 年前

    在使用时,我经常遇到如下情况: paredit ,点在 | 在下面的片段中,我想关闭悬垂的paren,例如。

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

    变成

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

    后型 ) 又称作 paredit-close-parenthesis 此时此刻。

    如果评论不在网上, 帕雷迪特 将关闭paren并移除空间。有没有人有一个很好的方法来启用这个功能?

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   Rorschach    7 年前

    我想到目前为止,推翻它似乎是可行的。

    (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 仍然会被评论卡住,也需要被覆盖。

    推荐文章