mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-15 06:42:51 +02:00
IDE: code help: fixed caching module owner
git-svn-id: trunk@15978 -
This commit is contained in:
parent
b5a227e0d8
commit
6b0f252b00
@ -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);
|
||||
|
@ -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(
|
||||
|
Loading…
Reference in New Issue
Block a user