diff --git a/ide/codehelp.pas b/ide/codehelp.pas index 9a875620f6..39315747bb 100644 --- a/ide/codehelp.pas +++ b/ide/codehelp.pas @@ -113,6 +113,7 @@ type public SourceFilename: string; FPDocFilename: string; + FPDocFileOwner: TObject; FPDocFilenameTimeStamp: integer; FilesTimeStamp: integer; end; @@ -211,8 +212,9 @@ type out AnOwner: TObject;// package or project CreateIfNotExists: boolean = false): string; procedure GetFPDocFilenamesForSources(SrcFilenames: TStringToStringTree; - ResolveIncludeFiles: boolean; - var FPDocFilenames: TStringToStringTree); + ResolveIncludeFiles: boolean; + var FPDocFilenames: TStringToStringTree // Names=Filename, Values=ModuleName + ); function FindModuleOwner(const Modulename: string): TObject; function GetOwnerModuleName(TheOwner: TObject): string; function ExpandFPDocLinkID(const LinkID, DefaultUnitName, @@ -1255,6 +1257,7 @@ begin MapEntry:=TCHSourceToFPDocFile(AVLNode.Data); if (MapEntry.FPDocFilenameTimeStamp=CompilerParseStamp) and (MapEntry.FilesTimeStamp=FileStateCache.TimeStamp) then begin + AnOwner:=MapEntry.FPDocFileOwner; Result:=MapEntry.FPDocFilename; exit; end; @@ -1284,6 +1287,7 @@ begin end; MapEntry.FPDocFilename:=Result; MapEntry.FPDocFilenameTimeStamp:=CompilerParseStamp; + MapEntry.FPDocFileOwner:=AnOwner; MapEntry.FilesTimeStamp:=FileStateCache.TimeStamp; finally if (Result='') and CreateIfNotExists then begin @@ -1317,7 +1321,7 @@ begin if FPDocFilename<>'' then begin if FPDocFilenames=nil then FPDocFilenames:=CreateFilenameToStringTree; - FPDocFilenames[FPDocFilename]:=SrcFilename; + FPDocFilenames[FPDocFilename]:=GetOwnerModuleName(AnOwner); end; Node:=SrcFilenames.Tree.FindSuccessor(Node); end; @@ -1603,9 +1607,9 @@ begin // find corresponding FPDoc file CHElement.ElementUnitFileName:=CHElement.CodeContext.Tool.MainFilename; CHElement.ElementUnitName:=CHElement.CodeContext.Tool.GetSourceName(false); + AnOwner:=Self; FPDocFilename:=GetFPDocFilenameForSource(CHElement.ElementUnitFileName, false,CacheWasUsed,AnOwner); - DebugLn(['TCodeHelpManager.GetElementChain ',dbgsName(AnOwner)]); CHElement.ElementModuleName:=GetOwnerModuleName(AnOwner); //DebugLn(['TCodeHelpManager.GetElementChain FPDocFilename=',FPDocFilename]); if (not CacheWasUsed) and (not Complete) then exit(chprParsing); diff --git a/ide/findrenameidentifier.pas b/ide/findrenameidentifier.pas index 037e74d834..74b72c5619 100644 --- a/ide/findrenameidentifier.pas +++ b/ide/findrenameidentifier.pas @@ -94,6 +94,9 @@ procedure AddReferencesToResultView(DeclarationCode: TCodeBuffer; function GatherFPDocReferences(PascalFiles: TStringList; DeclarationCode: TCodeBuffer; const DeclarationCaretXY: TPoint; var TreeOfPCodeXYPosition: TAVLTree): TModalResult; +function GatherFPDocReferences(const ElementModuleName, ElementName, + FileModuleName, FPDocFilename: string; + var TreeOfPCodeXYPosition: TAVLTree): TModalResult; implementation @@ -277,6 +280,10 @@ var Chain: TCodeHelpElementChain; CHResult: TCodeHelpParseResult; CHElement: TCodeHelpElement; + AVLNode: TAvgLvlTreeNode; + Item: PStringToStringItem; + FPDocFilename: String; + ModuleName: String; begin Result:=mrCancel; PascalFilenames:=nil; @@ -303,6 +310,18 @@ begin CHElement:=Chain[0]; DebugLn(['GatherFPDocReferences ModuleName=',CHElement.ElementModuleName,' Name=',CHElement.ElementName]); + // search FPDoc files + AVLNode:=FPDocFilenames.Tree.FindLowest; + while AVLNode<>nil do begin + Item:=PStringToStringItem(AVLNode.Data); + FPDocFilename:=Item^.Name; + ModuleName:=Item^.Value; + Result:=GatherFPDocReferences(CHElement.ElementModuleName,CHElement.ElementName, + ModuleName,FPDocFilename,TreeOfPCodeXYPosition); + if Result<>mrOk then exit; + AVLNode:=FPDocFilenames.Tree.FindSuccessor(AVLNode); + end; + Result:=mrOk; finally PascalFilenames.Free; @@ -312,6 +331,17 @@ begin end; end; +function GatherFPDocReferences(const ElementModuleName, ElementName, + FileModuleName, FPDocFilename: string; var TreeOfPCodeXYPosition: TAVLTree + ): TModalResult; +begin + Result:=mrCancel; + DebugLn(['GatherFPDocReferences ElementModuleName=',ElementModuleName, + ' ElementName=',ElementName,' FPDocFilename=',FPDocFilename, + ' FileModuleName=',FileModuleName]); + Result:=mrOk; +end; + { TFindRenameIdentifierDialog } procedure TFindRenameIdentifierDialog.FindRenameIdentifierDialogCreate(