On Thu, 09 Oct 2008 10:56:30 -0700, Jason Oster parasytic@gmail.com wrote:
Enrico Tröger wrote:
On Tue, 7 Oct 2008 12:44:53 +0100, Nick Treleaven nick.treleaven@btinternet.com wrote:
On Sun, 5 Oct 2008 16:02:57 -0700 Jason Oster parasytic@gmail.com wrote:
Unfortunately, the ASM lexer in Scintilla does not support customizable comments. But you can make a modification to add # as a comment char. It's in LexASM.cxx
line 150, scintilla/LexASM.cxx: if (sc.ch == ';'){
change to: if (sc.ch == '#'){
Really the Scintilla ASM lexer could be improved to have a customizable comment char property and also a label style.
Maybe if (sc.ch == '#' || sc.ch == ';'){
would be enough for now? I don't know any ASM very well, but are there many more comment characters used besides route and semicolon? If it would be enough, we sould send a patch to Scintilla. No idea about the label style.
It's a good idea to patch the ASM lexer, since it is not generic enough to support all ASM dialects. (Which I think was the original intent?)
# and ; characters are widely used for ASM comments, but also C/C++ style // and /*...*/ comments are common, too. I have seen cases where @ characters are used as comments, but also cases where @ characters are used for special pseudo-operands! Obviously, not all comment characters should be hard-coded into the lexer, but maybe they should be made customizable.
This would be easy for single comment characters and C++-style // comments by adding a new keywords field. For C-style /*...*/ comments, I think a lexer pref to enable/disable multi-line comments is the way to go.
Once available, we could set this pref with our comment_open/comment_close prefs from filetypes.asm. Then users can choose their preferred comment characters.
Jason now has some experience in adding properties to Scintilla lexers, don't you? :-)
Yep. ;)
A few other things to think about with ASM syntaxes, which may or may not be within the scope of this discussion:
Number styling could use some work I think, since there are many ways to specify numbers among languages. For example, MOS 6502/65816 uses $... to specify hex numbers, where most others use 0x... or even ...h
BUT, MIPS ASM (which is where this discussion comes from) can use $... to specify registers! Common MIPS register syntaxes include:
$0, r0, zero, $zero ... $1, a0, $a0 ...
etc.
So is $a0 a register (MIPS) or a hex number (MOS 6502/6581)? I think these need to be made more generic, too. ;)
How? No idea what MOS 6502/6581 is but it is widely used? I think in general it doesn't make much sense to support every single minor ASM dialect in the lexer. Providing support for the main variants should be good enough, IMO. And in particular, I assume Neil thinks similar about this.
And further more, this discusion should move to the Scintilla list/bug tracker as this not directly Geany-specific but more an issue of the Scintilla ASM lexer.
Regards, Enrico