lisp на emacs: как прокомментировать многострочное выражение? - PullRequest
11 голосов
/ 06 февраля 2011

Например, если я хочу прокомментировать это:

(defun noop ()
  nil)

Каждый раз, когда я пытаюсь поставить точку с запятой перед "(defun", defun убегает к следующей строке. Так как же этодолжно быть сделано?

GNU Emacs 23.1.1

Редактировать: под "убеганием" я подразумеваю, когда я вставляю точку с запятой перед "(defun", после этой точки автоматически вставляется новая строкаи "(defun" снова начинается с новой строки.

Ответы [ 7 ]

13 голосов
/ 06 февраля 2011

Mx комментарий-регион и связанные с ним.

5 голосов
/ 06 февраля 2011

Рон, сделай CTRL-H m и посмотри второстепенные режимы. У вас есть «полезный» дополнительный режим. (Может быть paredit, но я не думаю, что это так.) Я помню, что было что-то подобное, когда я попробовал EMACS Starter Kit. Прошло около тридцати секунд, прежде чем я закричал и нашел, как его убить.

В любом случае, это не поведение EMACS по умолчанию, это какое-то дополнение init-file или site-emacs.

5 голосов
/ 06 февраля 2011

M-X comment-dwim или M-;, который является связыванием клавиш по умолчанию для первого - может сэкономить вам несколько нажатий клавиш, поскольку он не только комментирует, но и раскомментирует регион, если он уже прокомментирован. В любом случае, посмотрите Руководство по Emacs для правильного описания.

5 голосов
/ 06 февраля 2011

Отметьте обе строки и позвоните M-x comment-region.Также обратите внимание на функции comment-or-uncomment-region и comment-dwim.

2 голосов
/ 02 мая 2016

немного опоздал на вечеринку, а как же:

(defmacro comment (&rest a))
2 голосов
/ 08 февраля 2011

Для конкретной задачи, которую вы запросили в заголовке (комментируя полное выражение, которое может занимать несколько строк одновременно), сначала нажмите C-M-SPC (привязано к mark-sexp), чтобы установить область для выражения, следующего за точкой, изатем M-; (привязано к comment-dwim, что вызовет comment-region).

2 голосов
/ 07 февраля 2011

Если вы говорите о Common Lisp (а не, скажем, Emacs-Lisp), вы можете использовать #+(or):

#+(or)
(defun noop ()
  nil)

Подробнее см. CLHS .

...