lisp на emacs: как прокомментировать многострочное выражение?
например, если я хочу прокомментировать это:
(defun noop ()
nil)
каждый раз, когда я пытаюсь поставить точку с запятой перед "(defun", defun убегает к следующей строке. Так как же это сделать?
GNU Emacs 23.1.1
Edit: под "running away" я имею в виду, когда я вставляю точку с запятой перед "(defun", новая строка автоматически вставляется после точки с запятой и "(defun" снова начинается на новой строке.
7 ответов
Рон, делать CTRL-H m
и посмотрите на мелкие режимы. У вас есть какой-то" полезный " минорный режим. (Возможно paredit
но я не думаю, что это он.) Я помню, что было что-то подобное, когда я попробовал стартовый комплект EMACS. Это продолжалось около тридцати секунд, прежде чем я закричал и нашел, как убить его.
в любом случае, это не поведение EMACS по умолчанию, это некоторое дополнение init-file или site-emacs.
отметьте обе линии и позвоните M-x comment-region
. Также посмотрите на comment-or-uncomment-region
и comment-dwim
функции.
M-X comment-dwim
или M-;
, который является привязкой ключа по умолчанию для первого - может сэкономить вам несколько ключевых штрихов, так как он не только комментирует, но и раскомментирует регион, если он уже прокомментирован. В любом случае, проверьте Руководство Emacs для точного описания.
Если вы говорите о Common Lisp (а не, скажем, Emacs-Lisp), вы можете использовать #+(or)
:
#+(or)
(defun noop ()
nil)
посмотреть CLHS для сведения.
для конкретной задачи, которую вы просили в заголовке (комментируя полное выражение, которое может охватывать несколько строк сразу), сначала нажмите C-M-SPC
(привязан к mark-sexp
), чтобы установить область в выражение после точки, а затем M-;
(привязан к comment-dwim
который будем называть comment-region
).