Converter: Improve messages. Show urgency, file name, coordinates. Relevant file now opens when clicking a message.

git-svn-id: trunk@51674 -
This commit is contained in:
juha 2016-02-21 14:05:42 +00:00
parent 1a992ed303
commit f42ebf10a7
6 changed files with 141 additions and 91 deletions

View File

@ -40,8 +40,10 @@ uses
CodeCache, SourceChanger, CustomCodeTool, CodeToolsStructs,
// LazUtils
LazFileUtils,
// IdeIntf
LazIDEIntf, IDEExternToolIntf,
// IDE
LazIDEIntf, IDEExternToolIntf, FormEditor, LazarusIDEStrConsts,
FormEditor, LazarusIDEStrConsts,
// Converter
ConverterTypes, ConvertSettings, ReplaceNamesUnit, ReplaceFuncsUnit;
@ -252,6 +254,7 @@ function TConvDelphiCodeTool.RenameUnitIfNeeded: boolean;
// Change the unit name to match the disk name unless the disk name is all lowercase.
var
NamePos: TAtomPosition;
CaretPos: TCodeXYPosition;
DiskNm, UnitNm: String;
begin
Result:=false;
@ -265,7 +268,10 @@ begin
SrcCache.MainScanner:=CodeTool.Scanner;
SrcCache.Replace(gtNone, gtNone, NamePos.StartPos, NamePos.EndPos, DiskNm);
if not SrcCache.Apply then exit;
fSettings.AddLogLine(Format(lisConvFixedUnitName, [UnitNm, DiskNm]));
if CodeTool.CleanPosToCaret(NamePos.StartPos, CaretPos) then
fSettings.AddLogLine(mluNote,
Format(lisConvFixedUnitName, [UnitNm, DiskNm]), fCode.Filename,
CaretPos.Y, CaretPos.X);
end;
end;
end;
@ -496,6 +502,7 @@ var
var
FuncInfo: TFuncReplacement;
CaretPos: TCodeXYPosition;
PossibleCommentPos: Integer; // Start looking for comments here.
i: Integer;
s, NewFunc, Comment: String;
@ -510,24 +517,29 @@ begin
ReplacementParams.Clear;
PossibleCommentPos:=ParseReplacementParams(FuncInfo.ReplFunc);
// Replace only if the params match somehow, so eg. a variable is not replaced.
if (FuncInfo.Params.Count>0) or (ReplacementParams.Count=0) then begin
if (FuncInfo.Params.Count>0) or (ReplacementParams.Count=0) then
with fCTLink do
begin
NewFunc:=InsertParams2Replacement(FuncInfo);
// Separate function body
NewFunc:=NewFunc+FuncInfo.InclEmptyBrackets+FuncInfo.InclSemiColon;
if fCTLink.fSettings.FuncReplaceComment then
if fSettings.FuncReplaceComment then
NewFunc:=NewFunc+Format(lisConvConvertedFrom, [FuncInfo.FuncName]);
Comment:=GetComment(FuncInfo.ReplFunc, PossibleCommentPos);
if Comment<>'' then // Possible comment from the configuration
NewFunc:=NewFunc+' { ' +Comment+' }';
// Old function call with params for IDE message output.
s:=copy(fCTLink.CodeTool.Src, FuncInfo.StartPos, FuncInfo.EndPos-FuncInfo.StartPos);
s:=copy(CodeTool.Src, FuncInfo.StartPos, FuncInfo.EndPos-FuncInfo.StartPos);
s:=StringReplace(s, #10, '', [rfReplaceAll]);
s:=StringReplace(s, #13, '', [rfReplaceAll]);
// Now replace it.
fCTLink.ResetMainScanner;
if not fCTLink.SrcCache.Replace(gtNone, gtNone,
ResetMainScanner;
if not SrcCache.Replace(gtNone, gtNone,
FuncInfo.StartPos, FuncInfo.EndPos, NewFunc) then exit;
fCTLink.fSettings.AddLogLine(Format(lisConvReplacedCall, [s, NewFunc]));
if CodeTool.CleanPosToCaret(FuncInfo.StartPos, CaretPos) then
fSettings.AddLogLine(mluNote,
Format(lisConvReplacedCall, [s, NewFunc]), fCode.Filename,
CaretPos.Y, CaretPos.X);
// Add the required unit name to uses section if needed.
if Assigned(AddUnitEvent) and (FuncInfo.UnitName<>'') then
AddUnitEvent(FuncInfo.UnitName);

View File

@ -39,7 +39,7 @@ uses
// LazUtils
LConvEncoding, FileUtil, LazFileUtils, LazUTF8, LazUTF8Classes,
// IDEIntf
ComponentReg, LazIDEIntf, PackageIntf, ProjectIntf, IDEDialogs,
ComponentReg, LazIDEIntf, PackageIntf, ProjectIntf, IDEDialogs, IDEExternToolIntf,
// IDE
IDEProcs, DialogProcs, EditorOptions, CompilerOptions,
ProjPackBase, Project, ProjectDefs, PackageDefs, PackageSystem, PackageEditor,
@ -461,7 +461,8 @@ begin
fLazFileExt:='';
fUnitInfo:=nil;
if not LazarusIDE.BeginCodeTools then
fOwnerConverter.fSettings.AddLogLine(lisConvDelphiBeginCodeToolsFailed);
fOwnerConverter.fSettings.AddLogLine(mluFatal,
lisConvDelphiBeginCodeToolsFailed, fLazUnitFilename);
fCTLink:=Nil; // Will be created later.
fUsedUnitsTool:=Nil;
end;
@ -490,8 +491,6 @@ function TDelphiUnit.CopyAndLoadFile: TModalResult;
var
CodeOk, CodeFixed: Boolean;
begin
fOwnerConverter.fSettings.AddLogLine(Format(lisConvDelphiConvertingFile,
[fOrigUnitFilename]));
// Convert unit in place. File must be writable.
Result:=CheckFileIsWritable(fOrigUnitFilename,[mbAbort]);
if Result<>mrOK then exit;
@ -509,8 +508,9 @@ begin
if Result<>mrOK then exit;
// Change encoding to UTF-8
if fPascalBuffer.DiskEncoding<>EncodingUTF8 then begin
fOwnerConverter.fSettings.AddLogLine(Format(lisConvDelphiChangedEncodingToUTF8,
[fPascalBuffer.DiskEncoding]));
fOwnerConverter.fSettings.AddLogLine(mluNote,
Format(lisConvDelphiChangedEncodingToUTF8, [fPascalBuffer.DiskEncoding]),
fLazUnitFilename);
fPascalBuffer.DiskEncoding:=EncodingUTF8; // Takes effect when buffer is saved.
end;
// Create a shared link for codetools.
@ -604,8 +604,9 @@ begin
// Change encoding to UTF-8
if TempLFMBuffer.DiskEncoding<>EncodingUTF8 then
begin
fOwnerConverter.fSettings.AddLogLine(Format(lisConvDelphiChangedEncodingToUTF8,
[TempLFMBuffer.DiskEncoding]));
fOwnerConverter.fSettings.AddLogLine(mluNote,
Format(lisConvDelphiChangedEncodingToUTF8, [TempLFMBuffer.DiskEncoding]),
fLazUnitFilename);
TempLFMBuffer.DiskEncoding:=EncodingUTF8;
TempLFMBuffer.Save;
end;
@ -675,8 +676,6 @@ var
begin
// Fix the LFM file and the pascal unit, updates fPascalBuffer and fLFMBuffer.
if fLFMBuffer<>nil then begin
fOwnerConverter.fSettings.AddLogLine(Format(lisConvDelphiRepairingFormFile,
[fLFMBuffer.Filename]));
LfmFixer:=TLFMFixer.Create(fCTLink,fLFMBuffer);
try
LfmFixer.Settings:=fOwnerConverter.fSettings;
@ -698,8 +697,6 @@ begin
if Result<>mrOK then exit;
end;
// After other changes: add, remove, fix and comment out units in uses sections.
fOwnerConverter.fSettings.AddLogLine(Format(lisConvDelphiFixingUsedUnits,
[fOrigUnitFilename]));
Result:=fUsedUnitsTool.ConvertUsed;
if Result<>mrOK then exit;
Result:=mrOK;
@ -780,6 +777,7 @@ begin
if CodeTool.FixIncludeFilenames(Code,SrcCache,FoundIncludeFiles,MissingIncludeFilesCodeXYPos)
then begin
if Assigned(FoundIncludeFiles) then begin
// List the include files in log.
Msg:=lisConvRepairingIncludeFiles;
for i:=0 to FoundIncludeFiles.Count-1 do begin
fSettings.MaybeBackupFile(FoundIncludeFiles[i]);
@ -788,7 +786,7 @@ begin
Msg:=Msg+'; ';
Msg:=Msg+s;
end;
fSettings.AddLogLine(Msg);
fSettings.AddLogLine(mluNote, Msg, fLazUnitFilename);
end;
end
else begin
@ -797,7 +795,7 @@ begin
CodePos:=PCodeXYPosition(MissingIncludeFilesCodeXYPos[i]);
Msg:=Format(lisConvDelphiMissingIncludeFile,
[CodePos^.Code.Filename,IntToStr(CodePos^.y),IntToStr(CodePos^.x)]);
fSettings.AddLogLine(Msg);
fSettings.AddLogLine(mluError, Msg, fLazUnitFilename);
end;
end;
fErrorMsg:=Format(lisConvProblemsFixingIncludeFile, [fOrigUnitFilename]);
@ -862,13 +860,13 @@ function TConvertDelphiPBase.EndConvert(AStatus: TModalResult): Boolean;
begin
// Show ending message
if AStatus=mrOK then
fSettings.AddLogLine(lisConvDelphiConversionReady)
fSettings.AddLogLine(mluImportant, lisConvDelphiConversionReady)
else begin
if fErrorMsg<>'' then
fSettings.AddLogLine(Format(lisConvDelphiError,[fErrorMsg]))
fSettings.AddLogLine(mluError, Format(lisConvDelphiError,[fErrorMsg]))
else if CodeToolBoss.ErrorMessage<>'' then
fSettings.AddLogLine(Format(lisConvDelphiError,[CodeToolBoss.ErrorMessage]));
fSettings.AddLogLine(lisConvDelphiConversionAborted);
fSettings.AddLogLine(mluError, Format(lisConvDelphiError,[CodeToolBoss.ErrorMessage]));
fSettings.AddLogLine(mluFatal, lisConvDelphiConversionAborted);
end;
// Save log messages to file.
Result:=fSettings.SaveLog;
@ -917,7 +915,7 @@ begin
for i:=0 to fSettings.MainFilenames.Count-1 do begin
Application.ProcessMessages;
if i>0 then
fSettings.AddLogLine('');
fSettings.AddLogLine(mluImportant, '');
DelphiUnit:=TDelphiUnit.Create(Self, fSettings.MainFilenames[i], []);
with DelphiUnit do
try
@ -1031,7 +1029,7 @@ begin
EndTime:=Now;
s:=FormatDateTime('hh:nn:ss', EndTime-StartTime);
if (Result<>mrAbort) and (s<>'00:00:00') then
fSettings.AddLogLine(Format(lisConvDelphiConversionTook, [s]));
fSettings.AddLogLine(mluProgress, Format(lisConvDelphiConversionTook,[s]));
EndConvert(Result);
end;
end;
@ -1095,8 +1093,8 @@ var
i: Integer;
begin
if not fSettings.SameDfmFile then begin
fSettings.AddLogLine('');
fSettings.AddLogLine(lisConvDelphiRepairingFormFiles);
fSettings.AddLogLine(mluImportant, '');
fSettings.AddLogLine(mluImportant, lisConvDelphiRepairingFormFiles);
DebugLn('');
DebugLn('TConvertDelphiProjPack.ConvertAllFormFiles: '+lisConvDelphiRepairingFormFiles);
end;
@ -1163,7 +1161,9 @@ var
if System.Pos(';'+lowercase(DelphiPkgName)+';',
';'+lowercase(DelphiPkgNames)+';')>0 then begin
fProjPack.AddPackageDependency(LazarusPkgName);
fSettings.AddLogLine(Format(lisConvDelphiAddedPackageDependency,[LazarusPkgName]));
fSettings.AddLogLine(mluNote,
Format(lisConvDelphiAddedPackageDependency,[LazarusPkgName]),
fLazPMainFilename);
end;
end;
@ -1315,7 +1315,8 @@ begin
// PUREPASCAL is defined by some code to not use x86 assembly code.
s:='-dBorland -dVer150 -dDelphi7 -dCompiler6_Up -dPUREPASCAL';
Options.CustomOptions:=s;
fSettings.AddLogLine(Format(lisConvDelphiAddedCustomOptionDefines, [s]));
fSettings.AddLogLine(mluNote, Format(lisConvDelphiAddedCustomOptionDefines,[s]),
fLazPMainFilename);
end;
end;
@ -1383,7 +1384,7 @@ begin
if not DeleteFileUTF8(s) then
exit(mrCancel);
//fFilesToDelete.Delete(i);
fSettings.AddLogLine(Format(lisConvDeletedFile,[s]));
fSettings.AddLogLine(mluNote, Format(lisConvDeletedFile,[s]));
end;
end;
Result:=mrOK;
@ -1431,7 +1432,8 @@ begin
Dep:=FindDependencyByName(s);
if not Assigned(Dep) then begin
fProjPack.AddPackageDependency(s);
fSettings.AddLogLine(Format(lisConvDelphiAddedPackageDependency, [s]));
fSettings.AddLogLine(mluNote, Format(lisConvDelphiAddedPackageDependency,[s]),
fLazPMainFilename);
Dep:=FindDependencyByName(s);
if Assigned(Dep) then
PackageGraph.OpenDependency(Dep,false);
@ -1454,7 +1456,8 @@ begin
Result:=CheckPackageDep(AUnitName);
if not Result then
// Package was not found. Add a message about a package that must be installed.
fSettings.AddLogLine(Format(lisConvDelphiPackageRequired, [ADefaultPkgName]));
fSettings.AddLogLine(mluWarning,
Format(lisConvDelphiPackageRequired, [ADefaultPkgName]));
end;
end;
end;
@ -1563,7 +1566,8 @@ begin
if fSettings.OmitProjUnits.Contains(PureUnitName) then
begin
fMainUnitConverter.fUsedUnitsTool.Remove(PureUnitName);
fSettings.AddLogLine(Format(lisConvDelphiProjOmittedUnit,[PureUnitName]));
fSettings.AddLogLine(mluNote, Format(lisConvDelphiProjOmittedUnit,[PureUnitName]),
fLazPMainFilename);
TryAddPackageDep(PureUnitName, fSettings.OmitProjUnits[PureUnitName]);
end
else begin
@ -1606,7 +1610,7 @@ begin
exit(mrCancel);
end;
try // Add all units to the project
fSettings.AddLogLine(lisConvDelphiFoundAllUnitFiles);
fSettings.AddLogLine(mluProgress, lisConvDelphiFoundAllUnitFiles);
DebugLn('TConvertDelphiProject.FindAllUnits: '+lisConvDelphiFoundAllUnitFiles);
for i:=0 to FoundUnits.Count-1 do begin
CurFilename:=FoundUnits[i];
@ -1684,8 +1688,8 @@ begin
try
try
// convert all units and fix .lfm files
fSettings.AddLogLine('');
fSettings.AddLogLine(lisConvDelphiConvertingProjPackUnits);
fSettings.AddLogLine(mluImportant, '');
fSettings.AddLogLine(mluImportant, lisConvDelphiConvertingProjPackUnits);
for i:=0 to LazProject.UnitCount-1 do begin
CurUnitInfo:=LazProject.Units[i];
Application.ProcessMessages;
@ -1698,8 +1702,8 @@ begin
end;
// During conversion there were more units added to be converted.
if fUnitsToAddToProject.Count > 0 then begin
fSettings.AddLogLine('');
fSettings.AddLogLine(lisConvDelphiConvertingFoundUnits);
fSettings.AddLogLine(mluImportant, '');
fSettings.AddLogLine(mluImportant, lisConvDelphiConvertingFoundUnits);
end;
for i:=0 to fUnitsToAddToProject.Count-1 do begin
Application.ProcessMessages;
@ -1719,9 +1723,9 @@ begin
end;
end;
except
fSettings.AddLogLine('');
fSettings.AddLogLine('- '+lisConvDelphiExceptionDuringConversion);
DebugLn('- '+lisConvDelphiExceptionDuringConversion);
fSettings.AddLogLine(mluImportant, '');
fSettings.AddLogLine(mluError, lisConvDelphiExceptionDuringConversion);
DebugLn(lisConvDelphiExceptionDuringConversion);
raise;
end;
finally
@ -1885,7 +1889,8 @@ begin
if CodeToolBoss.HasInterfaceRegisterProc(CodeBuffer, HasRegisterProc) then
if HasRegisterProc then begin
Include(Flags, pffHasRegisterProc);
fSettings.AddLogLine(Format(lisConvAddingFlagForRegister, [PureUnitName]));
fSettings.AddLogLine(mluNote, Format(lisConvAddingFlagForRegister,[PureUnitName]),
fLazPMainFilename);
end;
// Add new unit to package
LazPackage.AddFile(AFileName, PureUnitName, pftUnit, Flags, cpNormal);
@ -1912,7 +1917,7 @@ begin
exit(mrCancel);
end;
try
fSettings.AddLogLine(lisConvDelphiFoundAllUnitFiles);
fSettings.AddLogLine(mluProgress, lisConvDelphiFoundAllUnitFiles);
DebugLn('TConvertDelphiPackage.FindAllUnits: '+lisConvDelphiFoundAllUnitFiles);
// Add all units to the package
for i:=0 to FoundUnits.Count-1 do begin
@ -1996,8 +2001,8 @@ begin
try
try
// Convert all units and fix .lfm files
fSettings.AddLogLine('');
fSettings.AddLogLine(lisConvDelphiConvertingProjPackUnits);
fSettings.AddLogLine(mluImportant, '');
fSettings.AddLogLine(mluImportant, lisConvDelphiConvertingProjPackUnits);
for i:=0 to LazPackage.FileCount-1 do begin
PkgFile:=LazPackage.Files[i];
Application.ProcessMessages;
@ -2007,8 +2012,8 @@ begin
end;
// During conversion there were more units added to be converted.
if fUnitsToAddToProject.Count > 0 then begin
fSettings.AddLogLine('');
fSettings.AddLogLine(lisConvDelphiConvertingFoundUnits);
fSettings.AddLogLine(mluImportant, '');
fSettings.AddLogLine(mluImportant, lisConvDelphiConvertingFoundUnits);
end;
{ ToDo: add more units
for i:=0 to fUnitsToAddToProject.Count-1 do begin
@ -2024,9 +2029,9 @@ begin
end;
}
except
fSettings.AddLogLine('');
fSettings.AddLogLine('- '+lisConvDelphiExceptionDuringConversion);
DebugLn('- '+lisConvDelphiExceptionDuringConversion);
fSettings.AddLogLine(mluImportant, '');
fSettings.AddLogLine(mluError, lisConvDelphiExceptionDuringConversion);
DebugLn(lisConvDelphiExceptionDuringConversion);
raise;
end;
finally

View File

@ -30,10 +30,17 @@ unit ConvertSettings;
interface
uses
Classes, SysUtils, Forms, Controls, Dialogs, IDEProcs, StdCtrls, Buttons,
ButtonPanel, ComCtrls, DialogProcs, FileUtil, LazFileUtils,
LazarusIDEStrConsts, CodeToolsStructs, CodeToolManager, CodeCache,
DividerBevel, BaseIDEIntf, IDEMsgIntf, IDEExternToolIntf, AVL_Tree,
Classes, SysUtils, AVL_Tree,
Forms, Controls, Dialogs, StdCtrls, Buttons, ButtonPanel, ComCtrls,
// LazUtils
FileUtil, LazFileUtils, DividerBevel,
// CodeTools
CodeToolsStructs, CodeToolManager, CodeCache,
// IdeIntf
BaseIDEIntf, IDEMsgIntf, IDEExternToolIntf,
// IDE
IDEProcs, DialogProcs, LazarusIDEStrConsts,
// Converter
LazConfigStorage, ConverterTypes, ReplaceNamesUnit, ReplaceFuncsUnit;
const
@ -118,7 +125,8 @@ type
out LazFilename: string; LowercaseFilename: Boolean): TModalResult; overload;
function MaybeBackupFile(const AFilename: string): TModalResult;
procedure ClearLog;
function AddLogLine(const ALine: string; Urgency: TMessageLineUrgency = mluHint): integer;
procedure AddLogLine(Urgency: TMessageLineUrgency; const Msg: string;
const Filename: string=''; LineNumber: integer=0; Column: integer=0);
function SaveLog: Boolean;
public
property MainFilenames: TStringlist read fMainFilenames;
@ -772,11 +780,20 @@ begin
fLog.Clear;
end;
function TConvertSettings.AddLogLine(
const ALine: string; Urgency: TMessageLineUrgency): integer;
procedure TConvertSettings.AddLogLine(Urgency: TMessageLineUrgency;
const Msg: string; const Filename: string; LineNumber: integer; Column: integer);
var
FN, Coords, Urg: String;
begin
IDEMessagesWindow.AddCustomMessage(Urgency,aLine); // Show in message window
Result:=fLog.Add(MessageLineUrgencyNames[Urgency]+': '+ALine);// and store for log.
// Show in message window
IDEMessagesWindow.AddCustomMessage(Urgency, Msg, Filename, LineNumber, Column);
// and store for log.
FN := ExtractFileName(Filename);
if (LineNumber<>0) or (Column<>0) then
Coords := Format('(%d,%d)', [LineNumber, Column]);
if Urgency <> mluImportant then
Urg := MessageLineUrgencyNames[Urgency];
fLog.Add(FN + Coords + ' ' + Urg + ': ' + Msg);
end;
function TConvertSettings.SaveLog: Boolean;

View File

@ -40,8 +40,9 @@ uses
SynHighlighterLFM, SynEdit, SynEditMiscClasses, LFMTrees,
// codetools
CodeCache, CodeToolManager, CodeToolsStructs, CodeCompletionTool,
// IdeIntf
ComponentReg, PackageIntf, IDEWindowIntf, IDEExternToolIntf,
// IDE
ComponentReg, PackageIntf, IDEWindowIntf,
CustomFormEditor, LazarusIDEStrConsts, IDEProcs,
EditorOptions, CheckLFMDlg, Project, SourceMarks,
// Converter
@ -161,15 +162,20 @@ end;
function TDFMConverter.Convert(const DfmFilename: string): TModalResult;
var
s: String;
Urgency: TMessageLineUrgency;
begin
Result:=ConvertDfmToLfm(DfmFilename);
if Result=mrOK then begin
if fOrigFormat=sofBinary then
s:=Format(lisFileSIsConvertedToTextFormat, [DfmFilename])
else
if fOrigFormat=sofBinary then begin
s:=Format(lisFileSIsConvertedToTextFormat, [DfmFilename]);
Urgency:=mluHint;
end
else begin
s:=Format(lisFileSHasIncorrectSyntax, [DfmFilename]);
Urgency:=mluError;
end;
if Assigned(fSettings) then
fSettings.AddLogLine(s)
fSettings.AddLogLine(Urgency, s, DfmFilename)
else
ShowMessage(s);
end;
@ -416,8 +422,9 @@ begin
NewIdent:=ObjNode.Name+':'+ObjNode.TypeName;
fCTLink.CodeTool.AddClassInsertion(UpperCase(ObjNode.Name),
NewIdent+';', ObjNode.Name, ncpPublishedVars);
fSettings.AddLogLine(Format(lisAddedMissingObjectSToPascalSource,
[NewIdent]));
fSettings.AddLogLine(mluNote,
Format(lisAddedMissingObjectSToPascalSource, [NewIdent]),
fUsedUnitsTool.Filename);
end
else if IsMissingType(CurError) then
begin
@ -429,8 +436,9 @@ begin
if NewIdent<>'' then begin
StartPos:=ObjNode.TypeNamePosition;
EndPos:=StartPos+Length(OldIdent);
fSettings.AddLogLine(Format(lisReplacedTypeSWithS,
[OldIdent, NewIdent]));
fSettings.AddLogLine(mluNote,
Format(lisReplacedTypeSWithS, [OldIdent, NewIdent]),
fUsedUnitsTool.Filename);
AddReplacement(ChgEntryRepl,StartPos,EndPos,NewIdent);
Result:=mrRetry;
end;
@ -444,11 +452,12 @@ begin
// Delete the whole property line if no replacement.
if NewIdent='' then begin
FindNiceNodeBounds(TheNode,StartPos,EndPos);
fSettings.AddLogLine(Format(lisRemovedPropertyS, [OldIdent]));
fSettings.AddLogLine(mluNote, Format(lisRemovedPropertyS, [OldIdent]),
fUsedUnitsTool.Filename);
end
else
fSettings.AddLogLine(Format(lisReplacedPropertySWithS,
[OldIdent, NewIdent]));
fSettings.AddLogLine(mluNote,
Format(lisReplacedPropertySWithS, [OldIdent, NewIdent]));
AddReplacement(ChgEntryRepl,StartPos,EndPos,NewIdent);
Result:=mrRetry;
end;
@ -501,8 +510,9 @@ begin
if NewNum<0 then
NewNum:=0;
fLFMBuffer.Replace(TopOffs.StartPos, Len, IntToStr(NewNum));
fSettings.AddLogLine(Format(lisChangedSCoordOfSFromDToDInsideS,
[TopOffs.PropName, TopOffs.ChildType, OldNum, NewNum, TopOffs.ParentType]));
fSettings.AddLogLine(mluNote, Format(lisChangedSCoordOfSFromDToDInsideS,
[TopOffs.PropName, TopOffs.ChildType, OldNum, NewNum, TopOffs.ParentType]),
fUsedUnitsTool.Filename);
end;
end;
end;
@ -518,8 +528,9 @@ begin
Entry:=TAddPropEntry(aNewProps[i]);
fLFMBuffer.Replace(Entry.StartPos, Entry.EndPos-Entry.StartPos,
Entry.NewPrefix+Entry.NewText);
fSettings.AddLogLine(Format(lisAddedPropertySForS,
[Entry.NewText, Entry.ParentType]));
fSettings.AddLogLine(mluNote,
Format(lisAddedPropertySForS, [Entry.NewText, Entry.ParentType]),
fUsedUnitsTool.Filename);
end;
end;

View File

@ -31,12 +31,13 @@ unit UsedUnits;
interface
uses
Classes, SysUtils, Forms, Controls, Dialogs,
Classes, SysUtils, AVL_Tree, Forms, Controls, Dialogs,
// IDE
LazarusIDEStrConsts, IDEExternToolIntf,
// codetools
CodeToolManager, StdCodeTools, CodeTree, CodeToolsStructs, AVL_Tree,
LinkScanner, KeywordFuncLists, SourceChanger, CodeAtom, CodeToolsStrConsts, FileProcs,
CodeToolManager, StdCodeTools, CustomCodeTool, CodeTree, CodeAtom, CodeCache,
LinkScanner, KeywordFuncLists, SourceChanger, CodeToolsStrConsts, CodeToolsStructs,
FileProcs,
// Converter
ConverterTypes, ConvCodeTool, ConvertSettings, ReplaceNamesUnit;
@ -137,6 +138,7 @@ type
procedure AddUnitIfNeeded(aUnitName: string);
function AddThreadSupport: TModalResult;
public
property Filename: string read fFilename;
property IsMainFile: Boolean read fIsMainFile write fIsMainFile;
property IsConsoleApp: Boolean read fIsConsoleApp write fIsConsoleApp;
property MainUsedUnits: TUsedUnits read fMainUsedUnits;
@ -214,6 +216,7 @@ function TUsedUnits.FindMissingUnits: boolean;
var
UsesNode: TCodeTreeNode;
InAtom, UnitNameAtom: TAtomPosition;
CaretPos: TCodeXYPosition;
OldUnitName, OldInFilename: String;
NewUnitName, NewInFilename: String;
FullFileN, LowFileN: String;
@ -247,8 +250,10 @@ begin
if NewUnitName<>OldUnitName then begin
// Character case differs, fix it.
fUnitsToFixCase[OldUnitName]:=NewUnitName;
Settings.AddLogLine(Format(lisConvDelphiFixedUnitCase,
[OldUnitName, NewUnitName]));
if CodeTool.CleanPosToCaret(UnitNameAtom.StartPos, CaretPos) then
Settings.AddLogLine(mluNote,
Format(lisConvDelphiFixedUnitCase, [OldUnitName, NewUnitName]),
fOwnerTool.fFilename, CaretPos.Y, CaretPos.X);
end;
// Report Windows specific units as missing if target is CrossPlatform.
// Needed if work-platform is Windows.
@ -309,8 +314,9 @@ begin
fUnitsToRename[AOldName]:=ANewName;
fUnitsToRenameKeys.Add(AOldName);
fUnitsToRenameVals.AddStrings(sl);
fCTLink.Settings.AddLogLine(Format(lisConvDelphiReplacedUnitInUsesSection,
[AOldName, ANewName]));
fCTLink.Settings.AddLogLine(mluNote,
Format(lisConvDelphiReplacedUnitInUsesSection, [AOldName, ANewName]),
fOwnerTool.fFilename);
end;
finally
sl.Free;
@ -322,8 +328,9 @@ begin
AOldName:=Copy(AOldName, 1, i-1); // Strip the file name part.
if fUnitsToRemove.IndexOf(AOldName)=-1 then
fUnitsToRemove.Add(AOldName);
fCTLink.Settings.AddLogLine(Format(lisConvDelphiRemovedUnitInUsesSection,
[AOldName]));
fCTLink.Settings.AddLogLine(mluNote,
Format(lisConvDelphiRemovedUnitInUsesSection, [AOldName]),
fOwnerTool.fFilename);
end;
end;
@ -776,7 +783,8 @@ procedure TUsedUnitsTool.AddUnitIfNeeded(aUnitName: string);
begin
if not HasUnit(aUnitName) then begin
fMainUsedUnits.fUnitsToAdd.Add(aUnitName);
fCTLink.Settings.AddLogLine(Format(lisConvAddedUnitToUsesSection, [aUnitName]));
fCTLink.Settings.AddLogLine(mluNote,
Format(lisConvAddedUnitToUsesSection,[aUnitName]), fFilename);
MaybeOpenPackage(aUnitName);
end;
end;

View File

@ -5795,9 +5795,6 @@ resourcestring
lisConvDelphiRepairingFormFiles = '*** Fixing used units and Repairing form files ***';
lisConvDelphiConvertingProjPackUnits = '*** Converting unit files belonging to project/package ***';
lisConvDelphiConvertingFoundUnits = '*** Converting unit files found during conversion ***';
lisConvDelphiRepairingFormFile = '* Repairing form file %s *';
lisConvDelphiConvertingFile = '* Converting file %s *';
lisConvDelphiFixingUsedUnits = '* Fixing used units for file %s *';
lisConvDelphiChangedEncodingToUTF8 = 'Changed encoding from %s to UTF-8';
lisConvDelphiAllSubDirsScanned = 'All sub-directories will be scanned for unit files';
lisConvDelphiMissingIncludeFile = '%s(%s,%s) missing include file';