From 49285e8ca1c7e7f749357567b1ee2b6bba792322 Mon Sep 17 00:00:00 2001 From: mattias Date: Fri, 23 Nov 2007 20:26:16 +0000 Subject: [PATCH] IDE: implemented showing FPDoc short descriptions in code hints git-svn-id: trunk@12992 - --- components/codetools/cachecodetools.pas | 7 +++-- components/codetools/laz_xmlread.pas | 8 +++--- ide/lazdoc.pas | 35 ++++++++++++++++++------- 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/components/codetools/cachecodetools.pas b/components/codetools/cachecodetools.pas index 228e20e699..a5a1562099 100644 --- a/components/codetools/cachecodetools.pas +++ b/components/codetools/cachecodetools.pas @@ -200,7 +200,7 @@ begin CacheWasUsed:=false; - DebugLn(['TDeclarationInheritanceCache.FindDeclarations searching ',Code.Filename,'(X=',X,',Y=',Y,')']); + //DebugLn(['TDeclarationInheritanceCache.FindDeclarations searching ',Code.Filename,'(X=',X,',Y=',Y,')']); // ask the codetools if OnFindDeclarations(Code,X,Y,ListOfPCodeXYPosition,[]) @@ -223,8 +223,7 @@ begin end; FCurrent.Add(Item); - if ListOfPCodeXYPosition<>nil then - DebugLn(['TDeclarationInheritanceCache.FindDeclarations ',ListOfPCodeXYPositionToStr(ListOfPCodeXYPosition)]); + if ListOfPCodeXYPosition<>nil then DebugLn(['TDeclarationInheritanceCache.FindDeclarations ',ListOfPCodeXYPositionToStr(ListOfPCodeXYPosition)]); // clean up cache a bit CleanCache(5); @@ -249,7 +248,7 @@ end; destructor TDeclarationInheritanceCacheItem.Destroy; begin - FreeListOfPFindContext(ListOfPCodeXYPosition); + FreeListOfPCodeXYPosition(ListOfPCodeXYPosition); ListOfPCodeXYPosition:=nil; inherited Destroy; end; diff --git a/components/codetools/laz_xmlread.pas b/components/codetools/laz_xmlread.pas index 23b38f6ef0..29f1b38323 100644 --- a/components/codetools/laz_xmlread.pas +++ b/components/codetools/laz_xmlread.pas @@ -34,8 +34,8 @@ type procedure ReadXMLFile(var ADoc: TXMLDocument; const AFilename: String); overload; procedure ReadXMLFile(var ADoc: TXMLDocument; var f: File); overload; -procedure ReadXMLFile(var ADoc: TXMLDocument; var f: TStream); overload; -procedure ReadXMLFile(var ADoc: TXMLDocument; var f: TStream; const AFilename: String); overload; +procedure ReadXMLFile(var ADoc: TXMLDocument; f: TStream); overload; +procedure ReadXMLFile(var ADoc: TXMLDocument; f: TStream; const AFilename: String); overload; procedure ReadXMLFragment(AParentNode: TDOMNode; const AFilename: String); overload; procedure ReadXMLFragment(AParentNode: TDOMNode; var f: File); overload; @@ -1376,7 +1376,7 @@ begin end; end; -procedure ReadXMLFile(var ADoc: TXMLDocument; var f: TStream; const AFilename: String); +procedure ReadXMLFile(var ADoc: TXMLDocument; f: TStream; const AFilename: String); var reader: TXMLReader; buf: PChar; @@ -1400,7 +1400,7 @@ begin end; end; -procedure ReadXMLFile(var ADoc: TXMLDocument; var f: TStream); +procedure ReadXMLFile(var ADoc: TXMLDocument; f: TStream); begin ReadXMLFile(ADoc, f, ''); end; diff --git a/ide/lazdoc.pas b/ide/lazdoc.pas index a9c29f055e..f025744efd 100644 --- a/ide/lazdoc.pas +++ b/ide/lazdoc.pas @@ -48,6 +48,17 @@ type ); TFPDocNode = array [TFPDocItem] of String; + +const + FPDocItemNames: array[TFPDocItem] of shortstring = ( + 'short', + 'descr', + 'errors', + 'seealso', + 'example' + ); + +type { TLazFPDocFile } @@ -625,7 +636,7 @@ begin Chain:=nil; ListOfPCodeXYPosition:=nil; try - DebugLn(['TLazDocManager.GetElementChain GetDeclarationChain...']); + //DebugLn(['TLazDocManager.GetElementChain GetDeclarationChain...']); // get the declaration chain Result:=GetDeclarationChain(Code,X,Y,ListOfPCodeXYPosition,CacheWasUsed); if Result<>ldprSuccess then exit; @@ -641,7 +652,7 @@ begin for i:=0 to ListOfPCodeXYPosition.Count-1 do begin // get source position of declaration CodePos:=PCodeXYPosition(ListOfPCodeXYPosition[i]); - DebugLn(['TLazDocManager.GetElementChain i=',i,' X=',CodePos^.X,' Y=',CodePos^.Y]); + //DebugLn(['TLazDocManager.GetElementChain i=',i,' X=',CodePos^.X,' Y=',CodePos^.Y]); if (CodePos=nil) or (CodePos^.Code=nil) or (CodePos^.X<1) or (CodePos^.Y<1) then begin DebugLn(['TLazDocManager.GetElementChain i=',i,' invalid CodePos']); @@ -679,12 +690,12 @@ begin LDElement:=Chain.Add; LDElement.CodeContext.Tool:=CurTool; LDElement.CodeContext.Node:=Node; - DebugLn(['TLazDocManager.GetElementChain i=',i,' CodeContext=',FindContextToString(LDElement.CodeContext)]); + //DebugLn(['TLazDocManager.GetElementChain i=',i,' CodeContext=',FindContextToString(LDElement.CodeContext)]); // find corresponding FPDoc file SrcFilename:=LDElement.CodeContext.Tool.MainFilename; FPDocFilename:=GetFPDocFilenameForSource(SrcFilename,false,CacheWasUsed); - DebugLn(['TLazDocManager.GetElementChain FPDocFilename=',FPDocFilename]); + //DebugLn(['TLazDocManager.GetElementChain FPDocFilename=',FPDocFilename]); if (not CacheWasUsed) and (not Complete) then exit(ldprParsing); if FPDocFilename<>'' then begin @@ -701,18 +712,17 @@ begin // get fpdoc element path LDElement.ElementName:=CodeNodeToElementName(LDElement.CodeContext.Tool, LDElement.CodeContext.Node); - DebugLn(['TLazDocManager.GetElementChain i=',i,' Element=',LDElement.ElementName]); + //DebugLn(['TLazDocManager.GetElementChain i=',i,' Element=',LDElement.ElementName]); // get fpdoc node if (LDElement.FPDocFile<>nil) and (LDElement.ElementName<>'') then begin LDElement.ElementNode:= LDElement.FPDocFile.GetElementWithName(LDElement.ElementName); end; - DebugLn(['TLazDocManager.GetElementChain ElementNode=',LDElement.ElementNode<>nil]); + //DebugLn(['TLazDocManager.GetElementChain ElementNode=',LDElement.ElementNode<>nil]); end; Result:=ldprSuccess; finally - FreeListOfPFindContext(ListOfPCodeXYPosition); if Result<>ldprSuccess then FreeAndNil(Chain); end; @@ -744,14 +754,15 @@ var i: Integer; Item: TLazDocElement; NodeValues: TFPDocNode; + f: TFPDocItem; begin - DebugLn(['TLazDocManager.GetHint ',Code.Filename,' ',X,',',Y]); + //DebugLn(['TLazDocManager.GetHint ',Code.Filename,' ',X,',',Y]); Hint:=CodeToolBoss.FindSmartHint(Code,X,Y); CacheWasUsed:=true; Chain:=nil; try - DebugLn(['TLazDocManager.GetHint GetElementChain...']); + //DebugLn(['TLazDocManager.GetHint GetElementChain...']); Result:=GetElementChain(Code,X,Y,Complete,Chain,CacheWasUsed); if EndNow(Result) then exit; @@ -761,16 +772,20 @@ begin DebugLn(['TLazDocManager.GetHint ',i,' Element=',Item.ElementName]); if Item.ElementNode=nil then continue; NodeValues:=Item.FPDocFile.GetValuesFromNode(Item.ElementNode); + for f:=Low(TFPDocItem) to High(TFPDocItem) do + DebugLn(['TLazDocManager.GetHint ',FPDocItemNames[f],' ',NodeValues[f]]); if NodeValues[fpdiShort]<>'' then begin Hint:=Hint+#13#13+Item.ElementName+#13 +NodeValues[fpdiShort]; end; end; end; - Result:=ldprFailed; + Result:=ldprSuccess; finally Chain.Free; end; + + DebugLn(['TLazDocManager.GetHint END Hint="',Hint,'"']); end; procedure TLazDocManager.FreeDocs;