Имеет ли SLIME комбинацию клавиш для комментирования блока кода Lisp в режиме slime? - PullRequest
3 голосов
/ 17 ноября 2010

Я бы предпочел не добавлять точки с запятой вручную в каждую строку.

Технические характеристики:

Aquamacs 2.1 (Emacs 23.2)

SLIME 2010-11-16

MacPorts CLISP 2.49

Mac OS X 10.6.4

MacBook Pro 5,1

Ответы [ 2 ]

4 голосов
/ 24 марта 2011

Если блок кода представляет собой форму 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 -; .

3 голосов
/ 17 ноября 2010

Смотрите здесь:

Это M-x comment-region, но для него нет привязки ключа по умолчанию.

...