Search code examples
emacselisp

Emacs mode multiline comments


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 #).


Solution

  • 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.