Если блок кода представляет собой форму Lisp и вы хотите закомментировать эту форму, вы можете использовать slime-insert-balanced-comments
(я использую Mx sibc , а SLIME расширяет команда автоматически).
Чтобы раскомментировать его, используйте slime-remove-balanced-comments
( M-x s-r-b-c ).
Я нашел эти команды очень полезными.
Также я поместил следующий блок в мой файл .emacs:
;; Comment function
(defun comment-or-uncomment-this (&optional lines)
(interactive "P")
(if mark-active
(if (< (mark) (point))
(comment-or-uncomment-region (mark) (point))
(comment-or-uncomment-region (point) (mark)))
(comment-or-uncomment-region
(line-beginning-position)
(line-end-position lines))))
(global-set-key (kbd "C-;") 'comment-or-uncomment-this)
Я думаю, это было от здесь .
UPD : я забыл упомянуть, что несмотря на то, что slime-insert/remove-balanced-comments
прекрасно работает с paredit, команда C -; может быть большой боль использовать в строках с неравным количеством скобок. В случае строк типа
((blah|-blah)))))))
(где |
означает точку), я сначала нажимаю )
столько раз, сколько необходимо, чтобы разбить строку в правильном месте и отсоединить внешние закрывающие скобки от этой строки (в этом случае это будет два раза ). Здесь помогает Paredit: он реорганизует s-exp так, чтобы закрывающие скобки были разделены на две части, и, таким образом, вы можете закомментировать строку без прерывания внешних s-exps. В последнем примере строка превращается в:
((blah-blah))
|)))))
и первая строка может быть безопасно закомментирована с помощью C -; .