Thanks Phil for your response. So you are saying subclass should work. It was not working because of missing space? I did that but still it is not working. I mean even after doing the changes suggested by you cpp lexer is not considering these strings as keywords. Also I try to put a breakpoint to see if "keywords" function created by me is getting called or not. It is not getting called. I have not clue who is suppose to make the call and why it is not calling.
Please let me know if I am missing something here. On Thu, Feb 23, 2012 at 12:11 PM, Phil Thompson <[email protected] > wrote: > On Wed, 22 Feb 2012 12:04:56 +0530, Sarbojit Sarkar > <[email protected]> > wrote: > > Hi, > > I have started playing with QScintilla few days back and I am quite > happy > > to see broad range of already existing lexers. Now I have a requirement > > where I am planning to add few keywords into existing lexer. By googling > it > > seems that I have to create a subclass and need to redefine "const char* > > keywords(int set) const" function. I did that but did not observer any > > change. Here is my code, > > > > class myLex : public QsciLexerCPP > > { > > public: > > const char* keywords(int set) const; > > }; > > > > const char* myLex::keywords(int set) const > > { > > if (set == 1) > > return > > "and and_eq asm auto bitand bitor bool break case " > > "catch char class compl const const_cast continue " > > "default delete do double dynamic_cast else enum " > > "explicit export extern false float for friend goto if " > > "inline int long mutable namespace new not not_eq " > > "operator or or_eq private protected public register " > > "reinterpret_cast return short signed sizeof static " > > "static_cast struct switch template this throw true " > > "try typedef typeid typename union unsigned using " > > "virtual void volatile wchar_t while xor xor_eq" > > "mov";* // my new keyword* > > You are missing a space - you've replaced "xor_eq" with "xor_eqmov". > > > if (set == 3) > > return > > "a addindex addtogroup anchor arg attention author b " > > "brief bug c class code date def defgroup deprecated " > > "dontinclude e em endcode endhtmlonly endif " > > "endlatexonly endlink endverbatim enum example " > > "exception f$ f[ f] file fn hideinitializer " > > "htmlinclude htmlonly if image include ingroup " > > "internal invariant interface latexonly li line link " > > "mainpage name namespace nosubgrouping note overload " > > "p page par param post pre ref relates remarks return " > > "retval sa section see showinitializer since skip " > > "skipline struct subsection test throw todo typedef " > > "union until var verbatim verbinclude version warning " > > "weakgroup $ @ \\ & < > # { }"; > > > > if (set == 16) > > return "mdef mend"; *// my new keywords* > > return 0; > > } > > The lexer only supports sets 1 to 4. I've updated the docs to reflect > this. > > > Please let me know in case I have missed something. > > > > Also I wanted to play with existing colour scheme that lexer is > following. > > wondering if it is possible. > > Reimplement defaultPaper(), defaultColor() etc in your sub-class, or just > call setPaper(), setColor(). > > > Any help, link or suggestion will help a lot. > > > > thanks > > Phil >
_______________________________________________ QScintilla mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/qscintilla
