mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-23 08:39:35 +02:00
IDE: added clear all-in-open-files or all-in-current-file bookmarks. Issue #0013428
git-svn-id: trunk@39557 -
This commit is contained in:
parent
f6c4b6b46c
commit
6b37bec961
@ -377,6 +377,8 @@ begin
|
||||
ecAutoCompletion : Result:= srkmecAutoCompletion;
|
||||
ecUserFirst : Result:= srkmecPrevBookmark;
|
||||
ecSetFreeBookmark : Result:= srkmecSetFreeBookmark;
|
||||
ecClearBookmarkForFile : Result:= srkmecClearBookmarkForFile;
|
||||
ecClearAllBookmark : Result:= srkmecClearAllBookmark;
|
||||
ecPrevBookmark : Result:= srkmecPrevBookmark;
|
||||
ecNextBookmark : Result:= srkmecNextBookmark;
|
||||
ecGotoMarker0 ..
|
||||
@ -1019,6 +1021,8 @@ begin
|
||||
|
||||
// marker
|
||||
ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[]);
|
||||
ecClearBookmarkForFile:SetSingle(VK_UNKNOWN,[]);
|
||||
ecClearAllBookmark: SetSingle(VK_UNKNOWN,[]);
|
||||
ecPrevBookmark: SetSingle(VK_UNKNOWN,[]);
|
||||
ecNextBookmark: SetSingle(VK_UNKNOWN,[]);
|
||||
ecGotoMarker0: SetCombo(VK_0,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_0,[]);
|
||||
@ -1465,6 +1469,8 @@ begin
|
||||
|
||||
// marker
|
||||
ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[]);
|
||||
ecClearBookmarkForFile:SetSingle(VK_UNKNOWN,[]);
|
||||
ecClearAllBookmark: SetSingle(VK_UNKNOWN,[]);
|
||||
ecPrevBookmark: SetSingle(VK_UNKNOWN,[]);
|
||||
ecNextBookmark: SetSingle(VK_UNKNOWN,[]);
|
||||
ecGotoMarker0: SetCombo(VK_Q,[ssCtrl],VK_0,[]);
|
||||
@ -2082,6 +2088,8 @@ begin
|
||||
|
||||
// marker
|
||||
ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[]);
|
||||
ecClearBookmarkForFile:SetSingle(VK_UNKNOWN,[]);
|
||||
ecClearAllBookmark: SetSingle(VK_UNKNOWN,[]);
|
||||
ecPrevBookmark: SetSingle(VK_UNKNOWN,[]);
|
||||
ecNextBookmark: SetSingle(VK_UNKNOWN,[]);
|
||||
ecGotoMarker0: SetSingle(VK_0,[ssCtrl]);
|
||||
@ -2647,6 +2655,8 @@ begin
|
||||
// marker - without menu items in the IDE bar
|
||||
C:=Categories[AddCategory('Marker',srkmCatMarker,IDECmdScopeSrcEditOnly)];
|
||||
AddDefault(C, 'Set free Bookmark', lisKMSetFreeBookmark, ecSetFreeBookmark);
|
||||
AddDefault(C, 'Clear Bookmarks for current file', srkmecClearBookmarkForFile, ecClearBookmarkForFile);
|
||||
AddDefault(C, 'Clear all Bookmarks', srkmecClearAllBookmark, ecClearAllBookmark);
|
||||
AddDefault(C, 'Previous Bookmark', srkmecPrevBookmark, ecPrevBookmark);
|
||||
AddDefault(C, 'Next Bookmark', srkmecNextBookmark, ecNextBookmark);
|
||||
AddDefault(C, 'Go to marker 0', lisKMGoToMarker0, ecGotoMarker0);
|
||||
|
@ -2613,6 +2613,8 @@ resourcestring
|
||||
srkmecAutoCompletion = 'Code template completion';
|
||||
srkmecUserFirst = 'User First';
|
||||
srkmecSetFreeBookmark = 'Set a free Bookmark';
|
||||
srkmecClearBookmarkForFile = 'Clear Bookmarks for current file';
|
||||
srkmecClearAllBookmark = 'Clear all Bookmarks';
|
||||
srkmecPrevBookmark = 'Previous Bookmark';
|
||||
srkmecNextBookmark = 'Next Bookmark';
|
||||
lisKMGoToMarker0 = 'Go to marker 0';
|
||||
|
31
ide/main.pp
31
ide/main.pp
@ -447,6 +447,7 @@ type
|
||||
procedure OnSrcNotebookEditorActived(Sender: TObject);
|
||||
procedure OnSrcNotebookEditorPlaceBookmark(Sender: TObject; var Mark: TSynEditMark);
|
||||
procedure OnSrcNotebookEditorClearBookmark(Sender: TObject; var Mark: TSynEditMark);
|
||||
procedure OnSrcNotebookEditorClearBookmarkId(Sender: TObject; ID: Integer);
|
||||
procedure OnSrcNotebookEditorDoSetBookmark(Sender: TObject; ID: Integer; Toggle: Boolean);
|
||||
procedure OnSrcNotebookEditorDoGotoBookmark(Sender: TObject; ID: Integer; Backward: Boolean);
|
||||
procedure OnSrcNotebookEditorChanged(Sender: TObject);
|
||||
@ -2032,6 +2033,7 @@ begin
|
||||
SourceEditorManager.RegisterChangeEvent(semEditorDestroy, @OnSrcNotebookEditorClosed);
|
||||
SourceEditorManager.OnPlaceBookmark := @OnSrcNotebookEditorPlaceBookmark;
|
||||
SourceEditorManager.OnClearBookmark := @OnSrcNotebookEditorClearBookmark;
|
||||
SourceEditorManager.OnClearBookmarkId := @OnSrcNotebookEditorClearBookmarkId;
|
||||
SourceEditorManager.OnSetBookmark := @OnSrcNotebookEditorDoSetBookmark;
|
||||
SourceEditorManager.OnGotoBookmark := @OnSrcNotebookEditorDoGotoBookmark;
|
||||
SourceEditorManager.OnEditorPropertiesClicked := @mnuEnvEditorOptionsClicked;
|
||||
@ -11246,6 +11248,35 @@ begin
|
||||
(Mark.BookmarkNumber);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.OnSrcNotebookEditorClearBookmarkId(Sender: TObject;
|
||||
ID: Integer);
|
||||
var
|
||||
i: Integer;
|
||||
UInfo: TUnitInfo;
|
||||
begin
|
||||
if ID = -1 then begin
|
||||
for i := 0 to 9 do begin
|
||||
//b := Project1.Bookmarks[i];
|
||||
UInfo := TUnitInfo(Project1.Bookmarks.UnitInfoForBookmarkWithIndex(i));
|
||||
if UInfo <> nil then begin
|
||||
if UInfo.OpenEditorInfoCount > 0 then
|
||||
TSourceEditor(UInfo.OpenEditorInfo[0].EditorComponent).EditorComponent.ClearBookMark(i)
|
||||
else
|
||||
UInfo.DeleteBookmark(i);
|
||||
end;
|
||||
end;
|
||||
end
|
||||
else begin
|
||||
UInfo := TUnitInfo(Project1.Bookmarks.UnitInfoForBookmarkWithIndex(Id));
|
||||
if UInfo <> nil then begin
|
||||
if UInfo.OpenEditorInfoCount > 0 then
|
||||
TSourceEditor(UInfo.OpenEditorInfo[0].EditorComponent).EditorComponent.ClearBookMark(Id)
|
||||
else
|
||||
UInfo.DeleteBookmark(Id);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainIDE.OnSrcNotebookEditorDoSetBookmark(Sender: TObject; ID: Integer; Toggle: Boolean);
|
||||
var
|
||||
ActEdit, OldEdit: TSourceEditor;
|
||||
|
@ -87,6 +87,7 @@ type
|
||||
TOnLinesInsertedDeleted = procedure(Sender : TObject;
|
||||
FirstLine,Count : Integer) of Object;
|
||||
TPlaceBookMarkEvent = procedure(Sender: TObject; var Mark: TSynEditMark) of object;
|
||||
TPlaceBookMarkIdEvent = procedure(Sender: TObject; ID: Integer) of object;
|
||||
TBookMarkActionEvent = procedure(Sender: TObject; ID: Integer; Toggle: Boolean) of object;
|
||||
|
||||
TCharSet = set of Char;
|
||||
@ -1091,6 +1092,7 @@ type
|
||||
private
|
||||
FOnAddJumpPoint: TOnAddJumpPoint;
|
||||
FOnClearBookmark: TPlaceBookMarkEvent;
|
||||
FOnClearBookmarkId: TPlaceBookMarkIdEvent;
|
||||
FOnClickLink: TMouseEvent;
|
||||
FOnCloseClicked: TOnCloseSrcEditor;
|
||||
FOnDeleteLastJumpPoint: TNotifyEvent;
|
||||
@ -1144,6 +1146,8 @@ type
|
||||
read FOnPlaceMark write FOnPlaceMark;
|
||||
property OnClearBookmark: TPlaceBookMarkEvent // Bookmark was cleared by SynEdit
|
||||
read FOnClearBookmark write FOnClearBookmark;
|
||||
property OnClearBookmarkId: TPlaceBookMarkIdEvent
|
||||
read FOnClearBookmarkId write FOnClearBookmarkId;
|
||||
property OnSetBookmark: TBookMarkActionEvent // request to set a Bookmark
|
||||
read FOnSetBookmark write FOnSetBookmark;
|
||||
property OnGotoBookmark: TBookMarkActionEvent // request to go to a Bookmark
|
||||
@ -1203,6 +1207,8 @@ var
|
||||
SrcEditMenuNextBookmark: TIDEMenuCommand;
|
||||
SrcEditMenuPrevBookmark: TIDEMenuCommand;
|
||||
SrcEditMenuSetFreeBookmark: TIDEMenuCommand;
|
||||
SrcEditMenuClearFileBookmark: TIDEMenuCommand;
|
||||
SrcEditMenuClearAllBookmark: TIDEMenuCommand;
|
||||
// debugging
|
||||
SrcEditMenuToggleBreakpoint: TIDEMenuCommand;
|
||||
SrcEditMenuRunToCursor: TIDEMenuCommand;
|
||||
@ -1501,6 +1507,10 @@ begin
|
||||
nil, @ExecuteIdeMenuClick);
|
||||
SrcEditMenuSetFreeBookmark:=RegisterIDEMenuCommand
|
||||
(AParent, 'Set a free Bookmark',uemSetFreeBookmark, nil, @ExecuteIdeMenuClick);
|
||||
SrcEditMenuClearFileBookmark:=RegisterIDEMenuCommand
|
||||
(AParent, 'Clear Bookmark for current file',srkmecClearBookmarkForFile, nil, @ExecuteIdeMenuClick);
|
||||
SrcEditMenuClearAllBookmark:=RegisterIDEMenuCommand
|
||||
(AParent, 'Clear all Bookmark',srkmecClearAllBookmark, nil, @ExecuteIdeMenuClick);
|
||||
{%endregion}
|
||||
|
||||
{%region *** Debug Section ***}
|
||||
@ -3120,6 +3130,7 @@ Procedure TSourceEditor.ProcessUserCommand(Sender: TObject;
|
||||
// define all extra keys here, that should not be handled by synedit
|
||||
var
|
||||
Handled: boolean;
|
||||
i,x,y: Integer;
|
||||
Begin
|
||||
//debugln('TSourceEditor.ProcessUserCommand A ',dbgs(Command));
|
||||
FSharedValues.SetActiveSharedEditor(Self);
|
||||
@ -3297,6 +3308,13 @@ Begin
|
||||
EditorMacroForRecording.Stop;
|
||||
end;
|
||||
|
||||
ecClearBookmarkForFile: begin
|
||||
if Assigned(Manager) and Assigned(Manager.OnClearBookmarkId) then
|
||||
for i := 0 to 9 do
|
||||
if EditorComponent.GetBookMark(i,x,y) then
|
||||
Manager.OnClearBookmarkId(Self, i);
|
||||
end;
|
||||
|
||||
else
|
||||
begin
|
||||
Handled:=false;
|
||||
@ -7745,6 +7763,10 @@ begin
|
||||
if Assigned(Manager.OnSetBookmark) then
|
||||
Manager.OnSetBookmark(GetActiveSE, -1, False);
|
||||
|
||||
ecClearAllBookmark:
|
||||
if Assigned(Manager) and Assigned(Manager.OnClearBookmarkId) then
|
||||
Manager.OnClearBookmarkId(Self, -1);
|
||||
|
||||
ecJumpBack:
|
||||
Manager.HistoryJump(Self,jhaBack);
|
||||
|
||||
@ -9357,6 +9379,8 @@ begin
|
||||
SrcEditMenuNextBookmark.Command:=GetCommand(ecNextBookmark);
|
||||
SrcEditMenuPrevBookmark.Command:=GetCommand(ecPrevBookmark);
|
||||
SrcEditMenuSetFreeBookmark.Command:=GetCommand(ecSetFreeBookmark);
|
||||
SrcEditMenuClearFileBookmark.Command:=GetCommand(ecClearBookmarkForFile);
|
||||
SrcEditMenuClearAllBookmark.Command:=GetCommand(ecClearAllBookmark);
|
||||
|
||||
for i:=0 to 9 do begin
|
||||
TIDEMenuCommand(SrcEditSubMenuGotoBookmarks.FindByName('GotoBookmark'+IntToStr(i)))
|
||||
|
@ -231,6 +231,9 @@ const
|
||||
ecSetFreeBookmark = ecFirstLazarus + 381;
|
||||
ecPrevBookmark = ecFirstLazarus + 382;
|
||||
ecNextBookmark = ecFirstLazarus + 383;
|
||||
ecClearBookmarkForFile = ecFirstLazarus + 384;
|
||||
ecClearAllBookmark = ecFirstLazarus + 385;
|
||||
|
||||
|
||||
// Macro
|
||||
ecSynMacroRecord = ecFirstLazarus + 390;
|
||||
@ -1218,7 +1221,7 @@ begin
|
||||
end;
|
||||
|
||||
const
|
||||
IDEEditorCommandStrs: array[0..295] of TIdentMapEntry = (
|
||||
IDEEditorCommandStrs: array[0..297] of TIdentMapEntry = (
|
||||
// search
|
||||
(Value: ecFind; Name: 'ecFind'),
|
||||
(Value: ecFindAgain; Name: 'ecFindAgain'),
|
||||
@ -1396,6 +1399,8 @@ const
|
||||
(Value: ecSetFreeBookmark; Name: 'ecSetFreeBookmark'),
|
||||
(Value: ecPrevBookmark; Name: 'ecPrevBookmark'),
|
||||
(Value: ecNextBookmark; Name: 'ecNextBookmark'),
|
||||
(Value: ecClearBookmarkForFile; Name: 'ecClearBookmarkForFile'),
|
||||
(Value: ecClearAllBookmark; Name: 'ecClearAllBookmark'),
|
||||
|
||||
// Macro
|
||||
(Value: ecSynMacroRecord; Name: 'ecSynMacroRecord'),
|
||||
|
Loading…
Reference in New Issue
Block a user