Lisp на emacs: как прокомментировать многострочное выражение?
Например, если я хочу прокомментировать это:
(defun noop ()
nil)
Каждый раз, когда я пытаюсь поставить точку с запятой перед "(defun" , defun убегает на следующую строку. Так как это должно быть сделано?
GNU Emacs 23.1.1
Изменить: "убегая" я имею в виду, когда я вставляю точку с запятой до "(defun" , после запятой автоматически добавляется новая строка, а "(defun" начинается с новой строки снова.
Ответы
Ответ 1
Ron, сделайте a CTRL-H m
и посмотрите на второстепенные режимы. У вас есть "полезный" вспомогательный режим. (Может быть, paredit
, но я не думаю, что это так.) Я помню, что было что-то в этом роде, когда я попробовал EMACS Starter Kit. Это продолжалось, может быть, за тридцать секунд до того, как я закричал и нашел, как его убить.
В любом случае, это не по умолчанию поведение EMACS, это дополнение init-file или site-emacs.
Ответ 2
область комментариев M-x и связанные с ней.
Ответ 3
Отметьте обе строки и вызовите M-x comment-region
. Также смотрите функции comment-or-uncomment-region
и comment-dwim
.
Ответ 4
M-X comment-dwim
или M-;
, который является связующим звеном по умолчанию для первого, может сэкономить вам несколько ключевых штрихов, поскольку он не только комментирует, но и отменяет область, если он уже прокомментировал. В любом случае, посмотрите Руководство Emacs для правильного описания.
Ответ 5
Если вы говорите об Common Lisp (а не, скажем, Emacs- Lisp), вы можете использовать #+(or)
:
#+(or)
(defun noop ()
nil)
Подробнее см. CLHS.
Ответ 6
Для конкретной задачи, заданной в заголовке (комментируя полное выражение, которое может охватывать сразу несколько строк), сначала нажмите C-M-SPC
(привязанный к mark-sexp
), чтобы установить область в следующую следующую точку; то M-;
(связанный с comment-dwim
, который вызовет comment-region
).
Ответ 7
немного поздно вечеринке, однако, что насчет:
(defmacro comment (&rest a))