tags:

views:

433

answers:

2

What's the correct method for defining multi-line comments in an emacs mode (like C's /* */)? The elisp examples I see are for comments that start with a single delimiter and end at the end of the line (like C++'s // or perl's #).

+7  A: 

It's like this:

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

But there are subtleties; maybe you want

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

or maybe you want

/*  
    line one
    line two
    line three
*/

This is affected by your comment-style, which you can customize (M-x customize-variable comment-style). For something like the first example choose indent, for the second example, extra-line.

It's all defined in newcomment.el, which you can read about if you M-x describe-variable comment-start.

Tom Dunham
+2  A: 

Tom's answer covers creating comments; if you want your mode to be aware of comments, you need to fixup the syntax table.

Relevant reading:

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

jrockway