Многострочные комментарии в режиме Emacs

Каков правильный метод определения многострочных комментариев в режиме emacs (например, /* */ в C)? Примеры elisp, которые я вижу, предназначены для комментариев, которые начинаются с одного разделителя и заканчиваются в конце строки (например, // в C++ или # в Perl).


person David Nehme    schedule 31.01.2009    source источник


Ответы (3)


Это вот так:

(define-derived-mode my-mode
    awk-mode "my"
    "My mode"
  (setq comment-multi-line nil) ; maybe
  (setq comment-start "/* ")
  (setq comment-end "*/"))

Но есть тонкости; может ты хочешь

/*  line one   */
/*  line two   */
/*  line three */

или, может быть, вы хотите

/*  
    line one
    line two
    line three
*/

На это влияет ваш comment-style, который вы можете настроить (M-x customize-variable comment-style). Для чего-то вроде первого примера выберите indent, для второго примера extra-line.

Все это определено в newcomment.el, о котором вы можете прочитать, если вы M-x describe-variable comment-start.

person Tom Dunham    schedule 31.01.2009

Ответ Тома касается создания комментариев; если вы хотите, чтобы ваш режим знал о комментариях, вам нужно исправить синтаксическую таблицу.

Соответствующее чтение:

http://www.gnu.org/software/emacs/elisp/html_node/Syntax-Tables.html#Syntax-Tables

person jrockway    schedule 01.02.2009

Это отличное руководство по добавлению комментария в режим emacs. http://xahlee.org/emacs/elisp_comment_handling.html

person josefwells    schedule 28.06.2011