Bo Berglund wrote 37 lines
On Sun, 11 Apr 2021 11:29:36 +0200, Bo Berglund via lazarus
wrote:
>I have installed AutoSave from the OnlinePackageManager on all of my numerous
>Lazarus installations and in general it works well.
>I started to do this following several Lazarus crashes where I lost modified
>code and had to try restoring from memory...
>
>However, when I write console (simple program) applications I have noted that
>AutoSave does not save the lpr file! And when looking closely the lpi file in
>GUI apps is also not saved.
>
>Since lpr is the only file in simple programs AutoSave does not help from
>disaster if a crash happens.
>Is there a way to configure or modify AutoSave so it also saves the main project
>files?
>
Reviving this thread in order to find a solution (did not get a single reply).
------------------------------------------------------------------------------
I am relying heavily on AutoSave when programming in Lazarus on a remote
RaspberryPi via VNC connection. In this situation it happens way too often that
Lazarus suddenly just unloads from memory and I see a blank desktop.
Thanks to AutoSave in most cases I have just to start Lazarus again to be back
in business, at worst with the last 5 seconds of typing lost.
But that does not hold true if I am working in the lpr file because that is not
saved automatically!!!
It just happened to me again and it causes problems trying to re-create the last
hour or so of work done on this file. :(
So I would REALLY be happy if someone who understands the workings of AutoSave
can make it include the project file among the files saved by AutoSave!
I have never ever looked at stuff that integrate within Lazarus itself so I
could not fix it....
Now I have looked at the GitHub code, but am none the wiser (or a little bit wiser)...
Show quoted text 5 lines
For a console program maybe I should create a mainprogram.pas file and put
*everything* now located in the lpr file into that instead?
Just leave a bare minimum in the lpr file...
Pity to be forced to do that though.
As Juha Manninen suggested I have looked at the Autosave code in GitHub and I found this to be where the action is triggered:
The file is: https://github.com/lainz/LazAutoSave/blob/master/autosave_main.pas
And this is the function that does the job (starts at line #107):
procedure TAutoSave.OnTimer(Sender: TObject);
begin
if Settings = nil then
begin
if LazarusIDE nil then //wait until IDE startup
begin
Settings :=
TSettings.Create(AppendPathDelim(LazarusIDE.GetPrimaryConfigPath) +
cAutoSaveConfigFile);
FTimer.StopTimer;
FTimer.Interval := Settings.AutoSaveInteval*1000;
FTimer.StartTimer;
end;
end
else
begin
if Settings.EnableAutoSave then
LazarusIDE.DoSaveAll([sfDoNotSaveVirtualFiles, sfCanAbort,
sfQuietUnitCheck]); //<== Does *not* save the project lpr file!
end;
end;
Notice that it calls LazarusIDE itself and I have no idea how to make Lazarus include the lpr file into the ones being saved by this call...
There *must* be some setting for this in Lazarus, right?
So how can I tell Lazarus to include the lpr file in the saved files when it is called this way?
I am still experiencing these regular crashes in Lazarus even when using the version 2.2.6 with Fpc 3.2.2 on a RaspberryPi4B 8GB device. I access the desktop with VNC, which may be why the crash happens.
Typically Lazarus disappears when I accidentally click the mouse on something in the IDE, but I don't understand exactly what is clicked. Could be some border in the editor or such, but Lazarus instantly disappears and I look at a blank desktop...
However, Autosave has saved the day for me because when it happens I can just start Lazarus again and I am back where I left off.
Except of course if I am doing a command line program with all code in the lpr file, then everything is lost when the crash happens.
Bo Berglund
Developer in Sweden