mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-13 02:49:06 +02:00
bookmarks are now saved also for closed files and merged when possible
git-svn-id: trunk@2880 -
This commit is contained in:
parent
ad8d3ebf53
commit
4ff03d4682
75
ide/main.pp
75
ide/main.pp
@ -386,6 +386,7 @@ type
|
|||||||
// methods for 'save project'
|
// methods for 'save project'
|
||||||
procedure GetMainUnit(var MainUnitInfo: TUnitInfo;
|
procedure GetMainUnit(var MainUnitInfo: TUnitInfo;
|
||||||
var MainUnitSrcEdit: TSourceEditor; UpdateModified: boolean);
|
var MainUnitSrcEdit: TSourceEditor; UpdateModified: boolean);
|
||||||
|
procedure SaveSrcEditorProjectSpecificSettings(AnUnitInfo: TUnitInfo);
|
||||||
procedure SaveSourceEditorProjectSpecificSettings;
|
procedure SaveSourceEditorProjectSpecificSettings;
|
||||||
function DoShowSaveProjectAsDialog: TModalResult;
|
function DoShowSaveProjectAsDialog: TModalResult;
|
||||||
|
|
||||||
@ -3215,18 +3216,16 @@ end;
|
|||||||
|
|
||||||
procedure TMainIDE.DoRestoreBookMarks(AnUnitInfo: TUnitInfo;
|
procedure TMainIDE.DoRestoreBookMarks(AnUnitInfo: TUnitInfo;
|
||||||
ASrcEdit: TSourceEditor);
|
ASrcEdit: TSourceEditor);
|
||||||
var BookmarkID, i: integer;
|
var
|
||||||
|
BookmarkID, i: integer;
|
||||||
begin
|
begin
|
||||||
|
Project1.MergeBookmarks(AnUnitInfo);
|
||||||
for BookmarkID:=0 to 9 do begin
|
for BookmarkID:=0 to 9 do begin
|
||||||
i:=Project1.Bookmarks.IndexOfID(BookmarkID);
|
i:=Project1.Bookmarks.IndexOfID(BookmarkID);
|
||||||
if (i>=0) and (Project1.Bookmarks[i].EditorIndex=AnUnitInfo.EditorIndex)
|
if i<0 then continue;
|
||||||
then begin
|
if (Project1.Bookmarks[i].EditorIndex=AnUnitInfo.EditorIndex) then begin
|
||||||
ASrcEdit.EditorComponent.SetBookmark(BookmarkID,
|
ASrcEdit.EditorComponent.SetBookmark(BookmarkID,
|
||||||
Project1.Bookmarks[i].CursorPos.X,Project1.Bookmarks[i].CursorPos.Y);
|
Project1.Bookmarks[i].CursorPos.X,Project1.Bookmarks[i].CursorPos.Y);
|
||||||
while i>=0 do begin
|
|
||||||
Project1.Bookmarks.Delete(i);
|
|
||||||
i:=Project1.Bookmarks.IndexOfID(BookmarkID);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -3379,32 +3378,38 @@ begin
|
|||||||
MainUnitInfo:=nil;
|
MainUnitInfo:=nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.SaveSourceEditorProjectSpecificSettings;
|
procedure TMainIDE.SaveSrcEditorProjectSpecificSettings(AnUnitInfo: TUnitInfo);
|
||||||
var i, BookmarkID, BookmarkX, BookmarkY: integer;
|
var
|
||||||
AnUnitInfo: TUnitInfo;
|
BookmarkID, BookmarkX, BookmarkY: integer;
|
||||||
ASrcEdit: TSourceEditor;
|
ASrcEdit: TSourceEditor;
|
||||||
begin
|
begin
|
||||||
Project1.Bookmarks.Clear;
|
Project1.Bookmarks.DeleteAllWithEditorIndex(AnUnitInfo.EditorIndex);
|
||||||
for i:=0 to Project1.UnitCount-1 do begin
|
ASrcEdit:=
|
||||||
AnUnitInfo:=Project1.Units[i];
|
SourceNoteBook.FindSourceEditorWithPageIndex(AnUnitInfo.EditorIndex);
|
||||||
if (not AnUnitInfo.Loaded) or (AnUnitInfo.EditorIndex<0) then continue;
|
if ASrcEdit=nil then exit;
|
||||||
{$IFDEF IDE_DEBUG}
|
|
||||||
writeln('TMainIDE.SaveSourceEditorProjectSpecificSettings AnUnitInfo.Filename=',AnUnitInfo.Filename);
|
|
||||||
{$ENDIF}
|
|
||||||
ASrcEdit:=SourceNoteBook.FindSourceEditorWithPageIndex(
|
|
||||||
AnUnitInfo.EditorIndex);
|
|
||||||
if ASrcEdit=nil then continue;
|
|
||||||
AnUnitInfo.TopLine:=ASrcEdit.EditorComponent.TopLine;
|
AnUnitInfo.TopLine:=ASrcEdit.EditorComponent.TopLine;
|
||||||
AnUnitInfo.CursorPos:=ASrcEdit.EditorComponent.CaretXY;
|
AnUnitInfo.CursorPos:=ASrcEdit.EditorComponent.CaretXY;
|
||||||
|
// bookmarks
|
||||||
|
AnUnitInfo.Bookmarks.Clear;
|
||||||
for BookmarkID:=0 to 9 do begin
|
for BookmarkID:=0 to 9 do begin
|
||||||
if (ASrcEdit.EditorComponent.GetBookMark(
|
if (ASrcEdit.EditorComponent.GetBookMark(BookmarkID,BookmarkX,BookmarkY))
|
||||||
BookmarkID,BookmarkX,BookmarkY))
|
then begin
|
||||||
and (Project1.Bookmarks.IndexOfID(BookmarkID)<0) then begin
|
Project1.SetBookmark(AnUnitInfo,BookmarkX,BookmarkY,BookmarkID);
|
||||||
Project1.Bookmarks.Add(TProjectBookmark.Create(BookmarkX,BookmarkY,
|
|
||||||
AnUnitInfo.EditorIndex,BookmarkID));
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TMainIDE.SaveSourceEditorProjectSpecificSettings;
|
||||||
|
var
|
||||||
|
AnUnitInfo: TUnitInfo;
|
||||||
|
begin
|
||||||
|
Project1.Bookmarks.Clear;
|
||||||
|
AnUnitInfo:=Project1.FirstUnitWithEditorIndex;
|
||||||
|
while AnUnitInfo<>nil do begin
|
||||||
|
if (not AnUnitInfo.Loaded) then continue;
|
||||||
|
SaveSrcEditorProjectSpecificSettings(AnUnitInfo);
|
||||||
|
AnUnitInfo:=AnUnitInfo.NextUnitWithEditorIndex;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TMainIDE.DoShowSaveProjectAsDialog: TModalResult;
|
function TMainIDE.DoShowSaveProjectAsDialog: TModalResult;
|
||||||
@ -3639,6 +3644,10 @@ begin
|
|||||||
|
|
||||||
if (not (ofRevert in Flags)) or (PageIndex<0) then begin
|
if (not (ofRevert in Flags)) or (PageIndex<0) then begin
|
||||||
// create a new source editor
|
// create a new source editor
|
||||||
|
|
||||||
|
// update marks and cursor positions in Project1, so that merging the old
|
||||||
|
// settings during restoration will work
|
||||||
|
SaveSourceEditorProjectSpecificSettings;
|
||||||
SourceNotebook.NewFile(CreateSrcEditPageName(AnUnitInfo.UnitName,
|
SourceNotebook.NewFile(CreateSrcEditPageName(AnUnitInfo.UnitName,
|
||||||
AFilename,-1),AnUnitInfo.Source);
|
AFilename,-1),AnUnitInfo.Source);
|
||||||
NewSrcEdit:=SourceNotebook.GetActiveSE;
|
NewSrcEdit:=SourceNotebook.GetActiveSE;
|
||||||
@ -3654,17 +3663,13 @@ begin
|
|||||||
NewSrcEditorCreated:=false;
|
NewSrcEditorCreated:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if ofProjectLoading in Flags then begin
|
|
||||||
// reloading the project -> restore marks
|
|
||||||
DoRestoreBookMarks(AnUnitInfo,NewSrcEdit);
|
|
||||||
end;
|
|
||||||
|
|
||||||
// update editor indices in project
|
// update editor indices in project
|
||||||
if (not (ofProjectLoading in Flags)) and NewSrcEditorCreated then
|
if (not (ofProjectLoading in Flags)) and NewSrcEditorCreated then
|
||||||
Project1.InsertEditorIndex(SourceNotebook.NoteBook.PageIndex);
|
Project1.InsertEditorIndex(SourceNotebook.NoteBook.PageIndex);
|
||||||
AnUnitInfo.EditorIndex:=SourceNotebook.FindPageWithEditor(NewSrcEdit);
|
AnUnitInfo.EditorIndex:=SourceNotebook.FindPageWithEditor(NewSrcEdit);
|
||||||
|
|
||||||
// restore source editor settings
|
// restore source editor settings
|
||||||
|
DoRestoreBookMarks(AnUnitInfo,NewSrcEdit);
|
||||||
NewSrcEdit.SyntaxHighlighterType:=AnUnitInfo.SyntaxHighlighter;
|
NewSrcEdit.SyntaxHighlighterType:=AnUnitInfo.SyntaxHighlighter;
|
||||||
NewSrcEdit.EditorComponent.CaretXY:=AnUnitInfo.CursorPos;
|
NewSrcEdit.EditorComponent.CaretXY:=AnUnitInfo.CursorPos;
|
||||||
NewSrcEdit.EditorComponent.TopLine:=AnUnitInfo.TopLine;
|
NewSrcEdit.EditorComponent.TopLine:=AnUnitInfo.TopLine;
|
||||||
@ -3893,8 +3898,7 @@ begin
|
|||||||
FLastFormActivated:=nil;
|
FLastFormActivated:=nil;
|
||||||
|
|
||||||
// save some meta data of the source
|
// save some meta data of the source
|
||||||
ActiveUnitInfo.TopLine:=ActiveSrcEdit.EditorComponent.TopLine;
|
SaveSrcEditorProjectSpecificSettings(ActiveUnitInfo);
|
||||||
ActiveUnitInfo.CursorPos:=ActiveSrcEdit.EditorComponent.CaretXY;
|
|
||||||
|
|
||||||
// if SaveFirst then save the source
|
// if SaveFirst then save the source
|
||||||
if (cfSaveFirst in Flags) and (not ActiveUnitInfo.ReadOnly)
|
if (cfSaveFirst in Flags) and (not ActiveUnitInfo.ReadOnly)
|
||||||
@ -4624,8 +4628,8 @@ begin
|
|||||||
{$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.DoOpenProjectFile B');{$ENDIF}
|
{$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.DoOpenProjectFile B');{$ENDIF}
|
||||||
Project1:=TProject.Create(ptProgram);
|
Project1:=TProject.Create(ptProgram);
|
||||||
Project1.OnFileBackup:=@DoBackupFile;
|
Project1.OnFileBackup:=@DoBackupFile;
|
||||||
// read project info file
|
|
||||||
|
|
||||||
|
// read project info file
|
||||||
{$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.DoOpenProjectFile B3');{$ENDIF}
|
{$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.DoOpenProjectFile B3');{$ENDIF}
|
||||||
Project1.ReadProject(AFilename);
|
Project1.ReadProject(AFilename);
|
||||||
{$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.DoOpenProjectFile B4');{$ENDIF}
|
{$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.DoOpenProjectFile B4');{$ENDIF}
|
||||||
@ -4669,7 +4673,7 @@ begin
|
|||||||
Result:=DoOpenEditorFile(Project1.Units[LowestUnitIndex].Filename,-1,
|
Result:=DoOpenEditorFile(Project1.Units[LowestUnitIndex].Filename,-1,
|
||||||
[ofProjectLoading,ofOnlyIfExists]);
|
[ofProjectLoading,ofOnlyIfExists]);
|
||||||
if Result=mrAbort then begin
|
if Result=mrAbort then begin
|
||||||
// mark all files, that are left to load as unloaded:
|
// mark all files, that are left to open as unloaded:
|
||||||
for i:=0 to Project1.UnitCount-1 do begin
|
for i:=0 to Project1.UnitCount-1 do begin
|
||||||
if Project1.Units[i].Loaded
|
if Project1.Units[i].Loaded
|
||||||
and (Project1.Units[i].EditorIndex>LastEditorIndex) then begin
|
and (Project1.Units[i].EditorIndex>LastEditorIndex) then begin
|
||||||
@ -7783,6 +7787,9 @@ end.
|
|||||||
|
|
||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.471 2003/02/28 15:38:00 mattias
|
||||||
|
bookmarks are now saved also for closed files and merged when possible
|
||||||
|
|
||||||
Revision 1.470 2003/02/28 10:14:28 mattias
|
Revision 1.470 2003/02/28 10:14:28 mattias
|
||||||
started package system (packager)
|
started package system (packager)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user