Distinguishing single line and multi-line comments

  • I’m trying to set up UDL for Julia and I’m running into an issue with multi-line comments. The problem is that in Julia, single-line comments are delimited with a #, but multi-line comments are delimited with #= and =#, so whenever N++ sees a multi-line comment it just sees the # and assumes it’s a single-line comment and won’t highlight the remaining lines. Is there a way to get it to distinguish between the two types of comments? If I could use regex this would be easy, but apparently UDL does not support that at this time.

  • Unfortunately there are limitations in UDL. So with this one you are out of luck.
    I know one workaround for this.

    So to make colors work: in UDL you leave both “Comment line style” and “comment style” boxes empty.
    Then go to “operators and delimiters” tab and first define multiline comment delimiters,
    Open: #= Close: =#.
    Then (it must be defined after multiline delimiters) you define single line comment:
    Open: # Close: ((EOL))

    Now the colors should work.

    After that you’ll need commands to comment/uncomment selections.
    This can be done via Pythonscript plugin.
    Actually it might be done just with Regex replace but I prefer scripting solution.
    By scripting the idea is to define small scripts that work on selected text and insert # or #= where needed. If you know Python this should be easy to do.

    With Regex only this should work also but I am no expert in Regex.

  • @Dillon-Ethier

    in addition to what @Mikhail-V said you can use a combination of comments and delimiters like defining the multi-line comment as usual, with #= and =# and the line comment as suggested as an delimiter with open # and close ((EOL))


  • Indeed, @Claudia-Frank is right here - for this case it is better only to define line-comment by delimiters, and multi-line leave in the comments definition. This way only line comment will need a new command.

  • Thank you very much! This is an adequate solution.