MG: fixed missing include directives

git-svn-id: trunk@1625 -
This commit is contained in:
lazarus 2002-04-22 07:16:36 +00:00
parent 526e8668fe
commit e3f266184c
4 changed files with 61 additions and 24 deletions

View File

@ -35,6 +35,8 @@ interface
{$I codetools.inc}
{ $DEFINE CTDEBUG}
uses
{$IFDEF MEM_CHECK}
MemCheck,
@ -248,6 +250,8 @@ type
const ResourceName: string): boolean;
function RenameMainInclude(Code: TCodeBuffer; const NewFilename: string;
KeepPath: boolean): boolean;
function RenameIncludeDirective(Code: TCodeBuffer; LinkIndex: integer;
const NewFilename: string; KeepPath: boolean): boolean;
// Application.Createform(ClassName,VarName) statements in program source
function FindCreateFormStatement(Code: TCodeBuffer; StartPos: integer;
@ -1145,18 +1149,36 @@ var
OldIgnoreMissingIncludeFiles: boolean;
begin
Result:=false;
{$IFDEF CTDEBUG}
writeln('TCodeToolManager.RenameMainInclude A ',Code.Filename,' NewFilename=',NewFilename,' KeepPath=',KeepPath);
{$ENDIF}
{$IFDEF CTDEBUG}
writeln('TCodeToolManager.RenameMainInclude A ',Code.Filename,' NewFilename=',NewFilename,' KeepPath=',KeepPath);
{$ENDIF}
if not InitCurCodeTool(Code) then exit;
try
OldIgnoreMissingIncludeFiles:=FCurCodeTool.Scanner.IgnoreMissingIncludeFiles;
OldIgnoreMissingIncludeFiles:=
FCurCodeTool.Scanner.IgnoreMissingIncludeFiles;
FCurCodeTool.Scanner.IgnoreMissingIncludeFiles:=true;
LinkIndex:=-1;
if FCurCodeTool.FindNextIncludeInInitialization(LinkIndex)=nil then exit;
Result:=FCurCodeTool.RenameInclude(LinkIndex,NewFilename,KeepPath,
SourceChangeCache);
FCurCodeTool.Scanner.IgnoreMissingIncludeFiles:=OldIgnoreMissingIncludeFiles;
FCurCodeTool.Scanner.IgnoreMissingIncludeFiles:=
OldIgnoreMissingIncludeFiles;
except
on e: Exception do Result:=HandleException(e);
end;
end;
function TCodeToolManager.RenameIncludeDirective(Code: TCodeBuffer;
LinkIndex: integer; const NewFilename: string; KeepPath: boolean): boolean;
begin
Result:=false;
{$IFDEF CTDEBUG}
writeln('TCodeToolManager.RenameIncludeDirective A ',Code.Filename,' NewFilename=',NewFilename,' KeepPath=',KeepPath);
{$ENDIF}
if not InitCurCodeTool(Code) then exit;
try
Result:=FCurCodeTool.RenameInclude(LinkIndex,NewFilename,KeepPath,
SourceChangeCache);
except
on e: Exception do Result:=HandleException(e);
end;
@ -1170,9 +1192,9 @@ function TCodeToolManager.FindCreateFormStatement(Code: TCodeBuffer;
var PosAtom: TAtomPosition;
begin
Result:=-1;
{$IFDEF CTDEBUG}
writeln('TCodeToolManager.FindCreateFormStatement A ',Code.Filename,' StartPos=',StartPos,' ',AClassName,':',AVarName);
{$ENDIF}
{$IFDEF CTDEBUG}
writeln('TCodeToolManager.FindCreateFormStatement A ',Code.Filename,' StartPos=',StartPos,' ',AClassName,':',AVarName);
{$ENDIF}
if not InitCurCodeTool(Code) then exit;
try
Result:=FCurCodeTool.FindCreateFormStatement(StartPos,UpperCaseStr(AClassName),

View File

@ -3167,6 +3167,7 @@ var
CurContext:=CreateFindContext(Params);
end else begin
// predefined identifier not redefined
CurExprDesc:=PredefinedIdentToExprTypeDesc(@Src[CurAtom.StartPos]);
CurContext:=CreateFindContext(Self,nil);
end;
@ -3470,6 +3471,10 @@ function TFindDeclarationTool.ConvertNodeToExpressionType(Node: TCodeTreeNode;
Params: TFindDeclarationParams): TExpressionType;
var BaseContext: TFindContext;
begin
{$IFDEF ShowExprEval}
writeln('[TFindDeclarationTool.ConvertNodeToExpressionType] A',
' Node=',Node.DescAsString);
{$ENDIF}
BaseContext:=FindBaseTypeOfNode(Params,Node);
Node:=BaseContext.Node;
if BaseContext.Tool<>Self then begin

View File

@ -1554,7 +1554,8 @@ begin
AddLink(CleanedLen+1,SrcPos,Code);
end else begin
if MissingIncludeFile<>nil then begin
if FMissingIncludeFiles=nil then FMissingIncludeFiles.Create;
if FMissingIncludeFiles=nil then
FMissingIncludeFiles:=TMissingIncludeFiles.Create;
FMissingIncludeFiles.Add(MissingIncludeFile);
end;
if (not IgnoreMissingIncludeFiles) then begin

View File

@ -2459,7 +2459,7 @@ begin
end;
EnvironmentOptions.LastOpenDialogDir:=ExtractFilePath(NewFilename);
// check unitname
NewUnitName:=ExtractFileNameOnly(NewFilename);
if NewUnitName='' then exit;
@ -2532,9 +2532,9 @@ begin
exit;
end;
// rename Resource file
if ResourceCode<>nil then begin
if (ResourceCode<>nil) then begin
// the resource include line in the code will be changed later after
// changing the unitname
NewResFilePath:=ExtractFilePath(ResourceCode.Filename);
@ -2556,16 +2556,18 @@ begin
NewResFilename:=NewResFilePath
+ExtractFileNameOnly(NewFilename)+ResourceFileExt;
CodeToolBoss.SaveBufferAs(ResourceCode,NewResFilename,ResourceCode);
{$IFDEF IDE_DEBUG}
writeln('TMainIDE.ShowSaveFileAsDialog D ',ResourceCode<>nil);
writeln(' NewResFilePath="',NewResFilePath,'" NewResFilename="',NewresFilename,'"');
if ResourceCode<>nil then writeln('*** ResourceFileName ',ResourceCode.Filename);
{$ENDIF}
end else
{$IFDEF IDE_DEBUG}
writeln('TMainIDE.ShowSaveFileAsDialog D ',ResourceCode<>nil);
writeln(' NewResFilePath="',NewResFilePath,'" NewResFilename="',NewresFilename,'"');
if ResourceCode<>nil then writeln('*** ResourceFileName ',ResourceCode.Filename);
{$ENDIF}
end else begin
NewResFilename:='';
{$IFDEF IDE_DEBUG}
writeln('TMainIDE.ShowSaveFileAsDialog C ',ResourceCode<>nil);
{$ENDIF}
end;
{$IFDEF IDE_DEBUG}
writeln('TMainIDE.ShowSaveFileAsDialog C ',ResourceCode<>nil);
{$ENDIF}
// set new codebuffer in unitinfo and sourceeditor
AnUnitInfo.Source:=NewSource;
@ -2641,9 +2643,13 @@ begin
until Result<>mrRetry;
// create lazarus form resource code
if FormSavingOk then begin
if (sfSaveToTestDir in Flags) then begin
ResTestFilename:=ChangeFileExt(GetTestUnitFilename(AnUnitInfo),
ResourceFileExt);
if ResourceCode=nil then begin
if (sfSaveToTestDir in Flags) then
ResTestFilename:=ChangeFileExt(GetTestUnitFilename(AnUnitInfo),
ResourceFileExt)
else
ResTestFilename:=ChangeFileExt(AnUnitInfo.Filename,
ResourceFileExt);
ResourceCode:=CodeToolBoss.CreateFile(ResTestFilename);
FormSavingOk:=(ResourceCode<>nil);
end;
@ -6237,6 +6243,9 @@ end.
{ =============================================================================
$Log$
Revision 1.283 2002/04/22 07:16:34 lazarus
MG: fixed missing include directives
Revision 1.282 2002/04/21 14:30:36 lazarus
MG: fixed inputhistory load/save