On Tue, 27 Jul 2010 12:48:02 +0200 Bernd Kreuss <[email protected]> wrote:
> Hi, > > I am just playing around with the CodeTools and have the following: > > > P := node.CodePos.P; > > Tool := > > TStandardCodeTool(CodeToolBoss.GetCodeToolForSource(node.CodePos.Code, > > false, false)); That should be Tool := TStandardCodeTool(CodeToolBoss.GetCodeToolForSource(node.CodePos.Code, true, false)); if Tool=nil then exit; > > debugln(['identifier: ', Tool.ExtractIdentifier(P)]); > > where node.CodePos.Code is the code of a unit and P is the starting > position of something like > > function foo(foobar: TSomething): TSomethingElse; > > Tool.ExtractIdentifier() will now return the string "function". Isn't > function a reserved word and not an Identifier? What is the codetool's > understanding of an identifier and how do I search for the identifier? An "identifier" is simply a valid pascal identifier (starting with a letter, followed by some letters and numbers). A 'keyword' is context sensitive. For example when doing identifier completion the following 'function' is an identifier: i:=function| > The end result I am trying to achieve is to point it to somewhere and > then have it return the *position* of the next Identifier (not just the > next word). I know that ExtractIdentifier() won't help me with the > position but I am just in the phase of some initial experimenting with > it and it makes me wonder what the codetool's understanding of an > "identifier" is and how to tell it that i am interested in the > identifier of the declaration and not just the next word in the code. I wrote an example in codebrowser.pas: function TCodeBrowserView.GetCodeHelp Mattias -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
