mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-13 10:09:14 +02:00
MG: fixed creating project from file
git-svn-id: trunk@3360 -
This commit is contained in:
parent
6b3a527af4
commit
74af27a012
@ -49,7 +49,7 @@ interface
|
|||||||
|
|
||||||
{ $DEFINE CTDEBUG}
|
{ $DEFINE CTDEBUG}
|
||||||
{ $DEFINE ShowSearchPaths}
|
{ $DEFINE ShowSearchPaths}
|
||||||
{ $DEFINE ShowTriedFiles}
|
{$DEFINE ShowTriedFiles}
|
||||||
{ $DEFINE ShowTriedContexts}
|
{ $DEFINE ShowTriedContexts}
|
||||||
{ $DEFINE ShowTriedIdentifiers}
|
{ $DEFINE ShowTriedIdentifiers}
|
||||||
{ $DEFINE ShowExprEval}
|
{ $DEFINE ShowExprEval}
|
||||||
@ -886,10 +886,10 @@ begin
|
|||||||
// cursor is on a unitname -> try to locate it
|
// cursor is on a unitname -> try to locate it
|
||||||
UnitName:=copy(Src,UnitNamePos.StartPos,
|
UnitName:=copy(Src,UnitNamePos.StartPos,
|
||||||
UnitNamePos.EndPos-UnitNamePos.StartPos);
|
UnitNamePos.EndPos-UnitNamePos.StartPos);
|
||||||
if UnitInFilePos.StartPos>=1 then
|
if UnitInFilePos.StartPos>=1 then begin
|
||||||
UnitInFilename:=copy(Src,UnitInFilePos.StartPos,
|
UnitInFilename:=copy(Src,UnitInFilePos.StartPos+1,
|
||||||
UnitInFilePos.EndPos-UnitInFilePos.StartPos)
|
UnitInFilePos.EndPos-UnitInFilePos.StartPos-2)
|
||||||
else
|
end else
|
||||||
UnitInFilename:='';
|
UnitInFilename:='';
|
||||||
NewPos.Code:=FindUnitSource(UnitName,UnitInFilename);
|
NewPos.Code:=FindUnitSource(UnitName,UnitInFilename);
|
||||||
if NewPos.Code=nil then
|
if NewPos.Code=nil then
|
||||||
@ -1050,23 +1050,27 @@ begin
|
|||||||
' UnitSrcSearchPath=',UnitSrcSearchPath);
|
' UnitSrcSearchPath=',UnitSrcSearchPath);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
//writeln('>>>>>',Scanner.Values.AsString,'<<<<<');
|
//writeln('>>>>>',Scanner.Values.AsString,'<<<<<');
|
||||||
|
MainCodeIsVirtual:=TCodeBuffer(Scanner.MainCode).IsVirtual;
|
||||||
|
if not MainCodeIsVirtual then begin
|
||||||
|
CurDir:=ExtractFilePath(TCodeBuffer(Scanner.MainCode).Filename);
|
||||||
|
end else begin
|
||||||
|
CurDir:='';
|
||||||
|
end;
|
||||||
if AnUnitInFilename<>'' then begin
|
if AnUnitInFilename<>'' then begin
|
||||||
// unitname in 'filename'
|
// unitname in 'filename'
|
||||||
if FilenameIsAbsolute(AnUnitInFilename) then begin
|
if FilenameIsAbsolute(AnUnitInFilename) then begin
|
||||||
Result:=TCodeBuffer(Scanner.OnLoadSource(Self,AnUnitInFilename,true));
|
Result:=TCodeBuffer(Scanner.OnLoadSource(Self,AnUnitInFilename,true));
|
||||||
end else begin
|
end else begin
|
||||||
// search AnUnitInFilename in searchpath
|
// search file in current directory
|
||||||
Result:=SearchFileInPath(UnitSrcSearchPath,AnUnitInFilename);
|
CurDir:=AppendPathDelim(CurDir);
|
||||||
|
if not LoadFile(CurDir+AnUnitInFilename,Result) then begin
|
||||||
|
// search AnUnitInFilename in searchpath
|
||||||
|
Result:=SearchFileInPath(UnitSrcSearchPath,AnUnitInFilename);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end else begin
|
end else begin
|
||||||
// normal unit name -> search as the compiler would search
|
// normal unit name -> search as the compiler would search
|
||||||
// first search in current directory (= where the maincode is)
|
// first search in current directory (= where the maincode is)
|
||||||
MainCodeIsVirtual:=TCodeBuffer(Scanner.MainCode).IsVirtual;
|
|
||||||
if not MainCodeIsVirtual then begin
|
|
||||||
CurDir:=ExtractFilePath(TCodeBuffer(Scanner.MainCode).Filename);
|
|
||||||
end else begin
|
|
||||||
CurDir:='';
|
|
||||||
end;
|
|
||||||
{$IFDEF ShowTriedFiles}
|
{$IFDEF ShowTriedFiles}
|
||||||
writeln('TFindDeclarationTool.FindUnitSource Search in current dir=',CurDir);
|
writeln('TFindDeclarationTool.FindUnitSource Search in current dir=',CurDir);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
@ -2662,8 +2666,8 @@ begin
|
|||||||
or (UnitInFileAtom.EndPos>SrcLen+1) then
|
or (UnitInFileAtom.EndPos>SrcLen+1) then
|
||||||
RaiseException('[TFindDeclarationTool.FindCodeToolForUsedUnit] '
|
RaiseException('[TFindDeclarationTool.FindCodeToolForUsedUnit] '
|
||||||
+'internal error: invalid UnitInFileAtom');
|
+'internal error: invalid UnitInFileAtom');
|
||||||
AnUnitInFilename:=copy(Src,UnitInFileAtom.StartPos,
|
AnUnitInFilename:=copy(Src,UnitInFileAtom.StartPos+1,
|
||||||
UnitInFileAtom.EndPos-UnitInFileAtom.StartPos);
|
UnitInFileAtom.EndPos-UnitInFileAtom.StartPos-2);
|
||||||
end else
|
end else
|
||||||
AnUnitInFilename:='';
|
AnUnitInFilename:='';
|
||||||
NewCode:=FindUnitSource(AnUnitName,AnUnitInFilename);
|
NewCode:=FindUnitSource(AnUnitName,AnUnitInFilename);
|
||||||
|
@ -570,7 +570,8 @@ begin
|
|||||||
ReadPriorUsedUnit(UnitNameAtom, InAtom);
|
ReadPriorUsedUnit(UnitNameAtom, InAtom);
|
||||||
AnUnitName:=GetAtom(UnitNameAtom);
|
AnUnitName:=GetAtom(UnitNameAtom);
|
||||||
if InAtom.StartPos>0 then
|
if InAtom.StartPos>0 then
|
||||||
AnUnitInFilename:=GetAtom(InAtom)
|
AnUnitInFilename:=copy(Src,InAtom.StartPos+1,
|
||||||
|
InAtom.EndPos-InAtom.StartPos-2)
|
||||||
else
|
else
|
||||||
AnUnitInFilename:='';
|
AnUnitInFilename:='';
|
||||||
// find unit file
|
// find unit file
|
||||||
|
Loading…
Reference in New Issue
Block a user