mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-16 10:59:27 +02:00
IDE: save lpk files: keep eol type and encoding, bug #16224
git-svn-id: trunk@24507 -
This commit is contained in:
parent
653230ad6b
commit
19dd8f0be3
@ -38,8 +38,8 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, LCLProc, LResources, Forms, Controls, Dialogs, FileUtil,
|
||||
Laz_XMLCfg, Laz_XMLWrite, CodeCache, CodeToolManager, AVL_Tree,
|
||||
LazIDEIntf,
|
||||
Laz_XMLCfg, Laz_XMLWrite, CodeToolsConfig, CodeCache, CodeToolManager,
|
||||
AVL_Tree, LazIDEIntf,
|
||||
IDEProcs, LazarusIDEStrConsts, IDEDialogs;
|
||||
|
||||
type
|
||||
@ -78,7 +78,8 @@ function LoadXMLConfigFromCodeBuffer(const Filename: string; Config: TXMLConfig;
|
||||
ShowAbort: boolean
|
||||
): TModalResult;
|
||||
function SaveXMLConfigToCodeBuffer(const Filename: string; Config: TXMLConfig;
|
||||
var ACodeBuffer: TCodeBuffer): TModalResult;
|
||||
var ACodeBuffer: TCodeBuffer;
|
||||
KeepFileAttributes: boolean): TModalResult;
|
||||
function CreateEmptyFile(const Filename: string;
|
||||
ErrorButtons: TMsgDlgButtons): TModalResult;
|
||||
function CheckCreatingFile(const AFilename: string;
|
||||
@ -324,6 +325,8 @@ begin
|
||||
ACodeBuffer.SaveToStream(ms);
|
||||
ms.Position:=0;
|
||||
try
|
||||
if Config is TCodeBufXMLConfig then
|
||||
TCodeBufXMLConfig(Config).KeepFileAttributes:=true;
|
||||
Config.ReadFromStream(ms);
|
||||
except
|
||||
on E: Exception do begin
|
||||
@ -342,12 +345,16 @@ begin
|
||||
end;
|
||||
|
||||
function SaveXMLConfigToCodeBuffer(const Filename: string;
|
||||
Config: TXMLConfig; var ACodeBuffer: TCodeBuffer): TModalResult;
|
||||
Config: TXMLConfig; var ACodeBuffer: TCodeBuffer; KeepFileAttributes: boolean
|
||||
): TModalResult;
|
||||
var
|
||||
ms: TMemoryStream;
|
||||
begin
|
||||
if ACodeBuffer=nil then begin
|
||||
ACodeBuffer:=CodeToolBoss.CreateFile(Filename);
|
||||
if KeepFileAttributes and FileExistsCached(Filename) then
|
||||
ACodeBuffer:=CodeToolBoss.LoadFile(Filename,true,false)
|
||||
else
|
||||
ACodeBuffer:=CodeToolBoss.CreateFile(Filename);
|
||||
if ACodeBuffer=nil then
|
||||
exit(mrCancel);
|
||||
end;
|
||||
|
@ -47,8 +47,8 @@ uses
|
||||
TypInfo, Classes, SysUtils, LCLProc, Forms, Controls, Dialogs, Menus,
|
||||
StringHashList, Translations,
|
||||
// codetools
|
||||
CodeToolManager, CodeCache, NonPascalCodeTools, BasicCodeTools,
|
||||
DefineTemplates, FileProcs, AVL_Tree, Laz_XMLCfg,
|
||||
CodeToolsConfig, CodeToolManager, CodeCache, NonPascalCodeTools,
|
||||
BasicCodeTools, DefineTemplates, FileProcs, AVL_Tree, Laz_XMLCfg,
|
||||
// IDE Interface
|
||||
SrcEditorIntf, IDEExternToolIntf, NewItemIntf, ProjectIntf, PackageIntf, MenuIntf,
|
||||
PropEdits, IDEMsgIntf, MacroIntf, LazIDEIntf,
|
||||
@ -2443,7 +2443,7 @@ begin
|
||||
|
||||
// load the package file
|
||||
try
|
||||
XMLConfig:=TXMLConfig.Create(nil);
|
||||
XMLConfig:=TCodeBufXMLConfig.Create(nil);
|
||||
try
|
||||
APackage.Filename:=AFilename;
|
||||
Result:=LoadXMLConfigFromCodeBuffer(AFilename,XMLConfig,
|
||||
@ -2498,7 +2498,7 @@ end;
|
||||
function TPkgManager.DoSavePackage(APackage: TLazPackage;
|
||||
Flags: TPkgSaveFlags): TModalResult;
|
||||
var
|
||||
XMLConfig: TXMLConfig;
|
||||
XMLConfig: TCodeBufXMLConfig;
|
||||
PkgLink: TPackageLink;
|
||||
Code: TCodeBuffer;
|
||||
begin
|
||||
@ -2513,7 +2513,7 @@ begin
|
||||
// check if package needs saving
|
||||
if (not (psfSaveAs in Flags))
|
||||
and (not APackage.ReadOnly) and (not APackage.Modified)
|
||||
and FileExistsUTF8(APackage.Filename) then begin
|
||||
and FileExistsCached(APackage.Filename) then begin
|
||||
Result:=mrOk;
|
||||
exit;
|
||||
end;
|
||||
@ -2551,12 +2551,13 @@ begin
|
||||
|
||||
// save
|
||||
try
|
||||
XMLConfig:=TXMLConfig.Create(nil);
|
||||
XMLConfig:=TCodeBufXMLConfig.Create(nil);
|
||||
try
|
||||
XMLConfig.Clear;
|
||||
XMLConfig.KeepFileAttributes:=true;
|
||||
APackage.SaveToXMLConfig(XMLConfig,'Package/');
|
||||
Code:=nil;
|
||||
Result:=SaveXMLConfigToCodeBuffer(APackage.Filename,XMLConfig,Code);
|
||||
Result:=SaveXMLConfigToCodeBuffer(APackage.Filename,XMLConfig,Code,true);
|
||||
if Result<>mrOk then exit;
|
||||
APackage.LPKSource:=Code;
|
||||
PkgLink:=PkgLinks.AddUserLink(APackage);
|
||||
|
Loading…
Reference in New Issue
Block a user