Hello (Mattias)!

Project groups are saving my LPI files upon loading the project group. This is a problem because they resave LPIs without BOM and then all LPIs are marked as modified in SVN because they were saved with BOM. (Lazarus IDE saves my project files with BOM.)

I searched the reason and found out that TXMLConfig is the problem. There are 2 issues:

1.) TXMLConfig should keep the original encoding along with BOM.
2.) Project groups should never save LPIs.

About 2.:
The problem is:
constructor TXMLConfig.CreateClean(const AFilename: String);
begin
  //DebugLn(['TXMLConfig.CreateClean ',AFilename]);
  fDoNotLoadFromFile:=true;
  Create(AFilename);
  FModified:=FileExistsCached(AFilename);
end;

FModified gets True here - why? Is there a reason why the config should be set as Modified on create and consequently be resaved on Free when FileExistsCached returns true?

Setting the Modified flag to False in TIDECompileTarget.LoadProject before xml.Free is definitely a fix but IMO it should be fixed within TXMLConfig.

---
The above code could be a cause for another problem as well - when the currently open LPI project file is modified externally (e.g. SVN update), Lazarus IDE asks to reload the project but sometimes the LPI file is rewritten by the IDE and the new external changes get lost. I experienced this issue before installing Project groups but could not find clear steps-to-reproduce and could not find the reason for it.

Ondrej

--
_______________________________________________
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to