Le 02/02/2018 à 02:44, j.dunn@piments.com a écrit :
On 02/02/18 09:15, Lex Trotman wrote:
[…]
In fact the commenting code does not understand the language at all, it just applies the character sequences configured in the filetype as text, single line comments for preference (after all the menu items are "comment line") or open/close comments as a fallback.
This seems unnecessarily restrictive. C has two comment formats : // and /**/ ; it would be good have a means of using either : presumably a secondary hot key. That could also cover OP's requirement.
Geany will use multi-line comment style (with open and close sequences) if there's no single-line sequences defined for that filetype. The reason Geany prefers the single-line comments is that it's a lot more robust: for example, if in C you try to wrap the following with multi-line comments:
foo(); /* do something */
it will lead to
/* foo(); /* do something */ */
which is illegal syntax (the comment ends at the first "*/", not the last one. This is because C multi-line comments don't nest, and many languages have the same issue. However, single-line comments don't have that problem.
An even more interesting example could be
regex_replace(str, ".*/", "");
which would lead to the illegal and even more tricky
/* regex_replace(str, ".*/", ""); */
Also, the same problem applies to commenting a portion of a line, because you need to use the "/* */" kind and its problems. So supporting that, while very nice, would be tricky and very language-specific, and I can't even think of a perfect solution, as you'd have to replace the "*/" sequences inside the commented area with something else, yet restore it on uncommenting.
Anyway, that's a few reflection points :)
Cheers, Colomban