diff --git a/components/codetools/codetoolmanager.pas b/components/codetools/codetoolmanager.pas index beb2b49b42..0a2e4efe0b 100644 --- a/components/codetools/codetoolmanager.pas +++ b/components/codetools/codetoolmanager.pas @@ -208,6 +208,7 @@ type function GetCompilerModeForDirectory(const Directory: string): TCompilerMode; function GetCompiledSrcExtForDirectory(const Directory: string): string; function FindUnitInUnitLinks(const Directory, UnitName: string): string; + function GetUnitLinksForDirectory(const Directory: string): string; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -704,15 +705,24 @@ end; function TCodeToolManager.FindUnitInUnitLinks(const Directory, UnitName: string ): string; var - Evaluator: TExpressionEvaluator; UnitLinks: string; UnitLinkStart, UnitLinkEnd: integer; +begin + Result:=''; + UnitLinks:=GetUnitLinksForDirectory(Directory); + if UnitLinks='' then exit; + SearchUnitInUnitLinks(UnitLinks,UnitName,UnitLinkStart,UnitLinkEnd,Result); +end; + +function TCodeToolManager.GetUnitLinksForDirectory(const Directory: string + ): string; +var + Evaluator: TExpressionEvaluator; begin Result:=''; Evaluator:=DefineTree.GetDefinesForDirectory(Directory,true); if Evaluator=nil then exit; - UnitLinks:=Evaluator[ExternalMacroStart+'UnitLinks']; - SearchUnitInUnitLinks(UnitLinks,UnitName,UnitLinkStart,UnitLinkEnd,Result); + Result:=Evaluator[ExternalMacroStart+'UnitLinks']; end; function TCodeToolManager.InitCurCodeTool(Code: TCodeBuffer): boolean; diff --git a/components/codetools/definetemplates.pas b/components/codetools/definetemplates.pas index bc4a42c072..e164eb9e2a 100644 --- a/components/codetools/definetemplates.pas +++ b/components/codetools/definetemplates.pas @@ -395,6 +395,7 @@ function DefineTemplateFlagsToString(Flags: TDefineTemplateFlags): string; function SearchUnitInUnitLinks(const UnitLinks, TheUnitName: string; var UnitLinkStart, UnitLinkEnd: integer; var Filename: string): boolean; + implementation diff --git a/ide/debugmanager.pas b/ide/debugmanager.pas index 9fb9f96f2e..44c8b9343c 100644 --- a/ide/debugmanager.pas +++ b/ide/debugmanager.pas @@ -318,7 +318,8 @@ begin Exit; end; - SrcFile := MainIDE.FindSourceFile(ALocation.SrcFile); + SrcFile := MainIDE.FindSourceFile(ALocation.SrcFile,Project1.ProjectDirectory, + [fsfSearchForProject,fsfUseIncludePaths]); if SrcFile = '' then SrcFile := ALocation.SrcFile; if not FilenameIsAbsolute(SrcFile) @@ -936,6 +937,9 @@ end. { ============================================================================= $Log$ + Revision 1.25 2003/05/25 15:31:11 mattias + implemented searching for indirect include files + Revision 1.24 2003/05/25 12:12:36 mattias added TScreen handlers, implemented TMainIDE.UnHideIDE diff --git a/ide/mainbar.pas b/ide/mainbar.pas index 76269b0e31..c806a17255 100644 --- a/ide/mainbar.pas +++ b/ide/mainbar.pas @@ -145,6 +145,13 @@ type ); TCodeToolsFlags = set of TCodeToolsFlag; + // find source flags + TFindSourceFlag = ( + fsfSearchForProject, + fsfUseIncludePaths + ); + TFindSourceFlags = set of TFindSourceFlag; + { TMainIDEBar } TMainIDEBar = class(TForm) @@ -370,7 +377,8 @@ type procedure CreateOftenUsedForms; virtual; abstract; function FindUnitFile(const AFilename: string): string; virtual; abstract; - function FindSourceFile(const AFilename: string): string; virtual; abstract; + function FindSourceFile(const AFilename, BaseDirectory: string; + Flags: TFindSourceFlags): string; virtual; abstract; procedure GetCurrentUnit(var ActiveSourceEditor:TSourceEditor; var ActiveUnitInfo:TUnitInfo); virtual; abstract;