Paredit 在关闭 parens 时忽略注释
Paredit ignore comments when closing parens
我经常 运行 在使用 paredit
时遇到如下情况,在下面的代码片段中 |
我想关闭悬挂的括号,例如。
(let ((foo 1)| ; blag
)
nil)
变成
(let ((foo 1)) ; blag
nil)
在此处输入 )
又名 paredit-close-parenthesis
。
如果评论不在行中,paredit
将关闭括号并删除 space。有没有人有启用此功能的好方法?
查看代码,paredit
似乎捕获了我可以添加处理程序的错误,所以我想知道是否有简单的解决方案。
我想覆盖它似乎到目前为止有效。
(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
仍然卡在评论处,也需要覆盖。
我经常 运行 在使用 paredit
时遇到如下情况,在下面的代码片段中 |
我想关闭悬挂的括号,例如。
(let ((foo 1)| ; blag
)
nil)
变成
(let ((foo 1)) ; blag
nil)
在此处输入 )
又名 paredit-close-parenthesis
。
如果评论不在行中,paredit
将关闭括号并删除 space。有没有人有启用此功能的好方法?
查看代码,paredit
似乎捕获了我可以添加处理程序的错误,所以我想知道是否有简单的解决方案。
我想覆盖它似乎到目前为止有效。
(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
仍然卡在评论处,也需要覆盖。