Как мне закомментировать sexps в коде elisp? - PullRequest
14 голосов
/ 17 ноября 2010

Каков предпочтительный способ закомментировать sexps в коде elisp?До сих пор я оборачиваю свои секспы в (if nil ...).

Ответы [ 3 ]

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

C-M-@ M-; комментирует текущий sexp.

C-M-@ остается для mark-sexp, а M-; знает, как правильно закомментировать регион, учитывая текущий режим.Команды для пометки объектов описаны здесь .

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

Ваша (if nil sexp) конструкция будет работать просто отлично.Я не знаю, есть ли стандартный эквивалент в Emacs Lisp, хотя я подозреваю, что нет.Если вы хотите быть более точным в том, что вы делаете, вы можете использовать что-то вроде макроса комментария в clojure .Который легко реализуется как макрос Emacs Lisp.

(defmacro comment (&rest body)
  "Comment out one or more s-expressions."
  nil)

Тогда вы можете просто написать:

(comment 
  ...
  ; As many sexps as you want here...
  ...)

РЕДАКТИРОВАТЬ:

Добавлено nil вконец определения макроса comment.Как указывает Марко Топольник , если вы не предоставите тело реализации, defmacro предполагает, что строка документа на самом деле является телом.Явное добавление nil в конце работает вокруг этого.Спасибо за улов Марко!

1 голос
/ 17 ноября 2010

точка с запятой - ;;;

;;; insert into buffer
(defun thingy (foo)
  (interactive "stallman: ") ; prompt the user
  ; one semi-colon is also enough
  ;;;(insert (concat "deprecated")) ;;; this line will not execute
  (insert (concat "gnu-" foo)))
...