On Mon, 31 Jan 2011 22:38:54 +0100 Darius Blaszyk <dhkblas...@zeelandnet.nl> wrote:
> > Martin / Mattias, > > Thanks for the help. I finally used RegisterChangeEvent and it works fine. > Unfortunately I have a another problem now. After modifying the caret > position the event is fired and from the caret position I need to resolve the > method name. I have looked at how this is done ./examples/idequickfix, but > unfortunately whatever I try ProcNode keeps returning nil. The snippet below > is from the above mentioned example but slightly modified. To view the code > in context see here: > http://svn.freepascal.org/cgi-bin/viewvc.cgi/fpprofiler/trunk/lazprof/lazprofview.pas?view=markup&revision=2525&root=fpcprojects. > Can someone help me here please? > > Thanks in advance, > > Darius > > > AUnit := SourceEditorManagerIntf.ActiveSourceWindow.ActiveEditor.FileName; > DebugLn('TLazProfileViewer.ShowCodeInfo - 1'); > > if AUnit <> CachedUnit then > begin Maybe the above if is the cause. Remove it. > if Assigned(CodeBuf) then > FreeAndNil(CodeBuf); Do not free what you have not created. This will crash the IDE. > //load the unit file > CodeBuf := CodeToolBoss.LoadFile(AUnit, False, False); if CodeBuf=nil then exit; > DebugLn('TLazProfileViewer.ShowCodeInfo - 2'); > > // parse the code > if not ParseCode(CodeBuf, CodeTool) then > exit; > > DebugLn('TLazProfileViewer.ShowCodeInfo - 3'); > end; > > Pos := SourceEditorManagerIntf.ActiveSourceWindow.ActiveEditor.CursorTextXY; > > DebugLn('TLazProfileViewer.ShowCodeInfo - 4'); > > //find the source position > if not CaretToSourcePosition(CodeTool, CodeBuf, Pos.x, Pos.y, CleanPos) then > exit; > > DebugLn('TLazProfileViewer.ShowCodeInfo - 5'); > > // find procedure node > ProcNode := CodeTool.FindDeepestNodeAtPos(CleanPos, False); > if ProcNode <> nil then > ProcNode := ProcNode.GetNodeOfType(ctnProcedure); > > DebugLn('TLazProfileViewer.ShowCodeInfo - 6'); > > //nothing found so exit > if ProcNode = nil then > exit; Mattias -- _______________________________________________ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus