[QScintilla] Give QScintilla the current style
Phil Thompson
phil at riverbankcomputing.com
Tue Dec 4 13:53:43 GMT 2007
On Tuesday 04 December 2007, Xavier Noëlle wrote:
> Hi,
> I'm implementing a lexer for a language which is not built-in for
> QScintilla. I then subclassed QsciLexer, implemented the methods which
> I thought were mandatory (exhaustive list: language, lexer,
> description, autoIndentStyle, autoCompletionFillups,
> autoCompletionWordSeparators, blockEnd, blockLookback, blockStart,
> blockStartKeyword, braceStyle, caseSensitive, defaultColor,
> defaultStyle, wordCharacters, keywords).
>
> I took the CPP (and others, but mostly this one) lexer example and
> created an enum with the various styles I thought to:
> enum
> {
> Default = 1,
> Operator = 2,
> Comment = 3,
> Keyword = 4
> };
> This is very very temporary, but that's really just the beginning, but
> that's not the point.
>
> I implemented defaultColor this way:
> switch (style)
> {
> case Default:
> return Qt::black;
>
> case Operator:
> return Qt::green;
>
> case Comment:
> return Qt::red;
>
> case Keyword:
> return Qt::cyan;
>
> default:
> return Qt::magenta;
> }
>
> To highlight wrong coloration, I gave the default case (the switch
> one, not the first value) the magenta color. And now I get magenta for
> every single letter and symbol, which is quite annoying. I (more than)
> probably skipped a step or went in the wrong way, but I must admit
> that I'm quite lost.
>
> In the CPP lexer implementation, when blockStart (or blockEnd) occurs,
> the style gets the Operator value, and in blockStartKeywords the style
> gets Keyword. I don't really understand this implementation and I
> really think this is part of my problem...
>
> Any help or any hint on where to start or where to search would be
> greatly appreciated :-)
Have you actually written a new Scintilla lexer? The QsciLexer classes are
only containers for the settings for the existing Scintilla lexers.
Phil
More information about the QScintilla
mailing list