Паредит игнорирует комментарии при закрытии паренов - PullRequest
0 голосов
/ 02 февраля 2019

Часто я сталкиваюсь с ситуациями, подобными приведенным ниже, когда использую paredit, с точкой на | в следующем фрагменте, где я хочу закрыть висячую скобу, например:

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

становится

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

после типа ) aka paredit-close-parenthesis в точке.

Если комментария не было в строке, paredit закроет парен и удалит пробел.У кого-нибудь есть хороший способ включить эту функцию?

Глядя на код, paredit, кажется, ловит ошибки, когда я могу добавить обработчики, поэтому мне интересно, есть ли простое решение там.

1 Ответ

0 голосов
/ 02 февраля 2019

Я думаю, что переопределение, похоже, работает до сих пор.

(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 все еще застревает в комментариях, и его также нужно будет переопределить.

...