geany / geany

A fast and lightweight IDE
https://www.geany.org
GNU General Public License v2.0
3.13k stars 603 forks source link

Colon styling in Ruby lexer #1121

Open TiZ-HugLife opened 8 years ago

TiZ-HugLife commented 8 years ago

I've noticed a peculiarity in regards to how the Ruby lexer styles colons. A literal that starts with a colon is of course a symbol, but colons are used in other contexts as well, most notably for hash literals, like this snippet from the Ruby docs:

options = { font_size: 10, font_family: "Arial" }

If you put this in Geany, it will style the colons as symbol literals and not as operators as it should.

This is more important for the Ruby-like static language Crystal, in which the Ruby lexer is almost totally sufficient--aside from the fact it only supports primary keywords and not secondary, class, or type keywords--where this notation is used for named tuples, as well as for type annotation for functions: def square(n: Int32): Int32

TL;DR: A colon at the start of a word should indicate a symbol literal, but a colon by itself or at the end of a word should be styled as an operator or punctuation.

b4n commented 8 years ago

Hum, I don't know ruby but IIUC with your example it's the correct behavior, see Scintilla bugs #1006 and 1810, and this mailing list item.

If those aren't right, please report a bug to Scintilla with a link to official Ruby documentation supporting your request, as it would change a current behavior that was introduced on purpose (IIIUC your request).

TiZ-HugLife commented 8 years ago

Thanks for the information. After I head upstream, should I bring anything back here like a Scintilla bug ID?

b4n commented 8 years ago

That would be perfect :)