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:
martin 2012-12-16 06:09:49 +00:00
parent f6c4b6b46c
commit 6b37bec961
5 changed files with 73 additions and 1 deletions

View File

@ -377,6 +377,8 @@ begin
ecAutoCompletion : Result:= srkmecAutoCompletion; ecAutoCompletion : Result:= srkmecAutoCompletion;
ecUserFirst : Result:= srkmecPrevBookmark; ecUserFirst : Result:= srkmecPrevBookmark;
ecSetFreeBookmark : Result:= srkmecSetFreeBookmark; ecSetFreeBookmark : Result:= srkmecSetFreeBookmark;
ecClearBookmarkForFile : Result:= srkmecClearBookmarkForFile;
ecClearAllBookmark : Result:= srkmecClearAllBookmark;
ecPrevBookmark : Result:= srkmecPrevBookmark; ecPrevBookmark : Result:= srkmecPrevBookmark;
ecNextBookmark : Result:= srkmecNextBookmark; ecNextBookmark : Result:= srkmecNextBookmark;
ecGotoMarker0 .. ecGotoMarker0 ..
@ -1019,6 +1021,8 @@ begin
// marker // marker
ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[]); ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[]);
ecClearBookmarkForFile:SetSingle(VK_UNKNOWN,[]);
ecClearAllBookmark: SetSingle(VK_UNKNOWN,[]);
ecPrevBookmark: SetSingle(VK_UNKNOWN,[]); ecPrevBookmark: SetSingle(VK_UNKNOWN,[]);
ecNextBookmark: SetSingle(VK_UNKNOWN,[]); ecNextBookmark: SetSingle(VK_UNKNOWN,[]);
ecGotoMarker0: SetCombo(VK_0,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_0,[]); ecGotoMarker0: SetCombo(VK_0,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_0,[]);
@ -1465,6 +1469,8 @@ begin
// marker // marker
ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[]); ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[]);
ecClearBookmarkForFile:SetSingle(VK_UNKNOWN,[]);
ecClearAllBookmark: SetSingle(VK_UNKNOWN,[]);
ecPrevBookmark: SetSingle(VK_UNKNOWN,[]); ecPrevBookmark: SetSingle(VK_UNKNOWN,[]);
ecNextBookmark: SetSingle(VK_UNKNOWN,[]); ecNextBookmark: SetSingle(VK_UNKNOWN,[]);
ecGotoMarker0: SetCombo(VK_Q,[ssCtrl],VK_0,[]); ecGotoMarker0: SetCombo(VK_Q,[ssCtrl],VK_0,[]);
@ -2082,6 +2088,8 @@ begin
// marker // marker
ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[]); ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[]);
ecClearBookmarkForFile:SetSingle(VK_UNKNOWN,[]);
ecClearAllBookmark: SetSingle(VK_UNKNOWN,[]);
ecPrevBookmark: SetSingle(VK_UNKNOWN,[]); ecPrevBookmark: SetSingle(VK_UNKNOWN,[]);
ecNextBookmark: SetSingle(VK_UNKNOWN,[]); ecNextBookmark: SetSingle(VK_UNKNOWN,[]);
ecGotoMarker0: SetSingle(VK_0,[ssCtrl]); ecGotoMarker0: SetSingle(VK_0,[ssCtrl]);
@ -2647,6 +2655,8 @@ begin
// marker - without menu items in the IDE bar // marker - without menu items in the IDE bar
C:=Categories[AddCategory('Marker',srkmCatMarker,IDECmdScopeSrcEditOnly)]; C:=Categories[AddCategory('Marker',srkmCatMarker,IDECmdScopeSrcEditOnly)];
AddDefault(C, 'Set free Bookmark', lisKMSetFreeBookmark, ecSetFreeBookmark); 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, 'Previous Bookmark', srkmecPrevBookmark, ecPrevBookmark);
AddDefault(C, 'Next Bookmark', srkmecNextBookmark, ecNextBookmark); AddDefault(C, 'Next Bookmark', srkmecNextBookmark, ecNextBookmark);
AddDefault(C, 'Go to marker 0', lisKMGoToMarker0, ecGotoMarker0); AddDefault(C, 'Go to marker 0', lisKMGoToMarker0, ecGotoMarker0);

View File

@ -2613,6 +2613,8 @@ resourcestring
srkmecAutoCompletion = 'Code template completion'; srkmecAutoCompletion = 'Code template completion';
srkmecUserFirst = 'User First'; srkmecUserFirst = 'User First';
srkmecSetFreeBookmark = 'Set a free Bookmark'; srkmecSetFreeBookmark = 'Set a free Bookmark';
srkmecClearBookmarkForFile = 'Clear Bookmarks for current file';
srkmecClearAllBookmark = 'Clear all Bookmarks';
srkmecPrevBookmark = 'Previous Bookmark'; srkmecPrevBookmark = 'Previous Bookmark';
srkmecNextBookmark = 'Next Bookmark'; srkmecNextBookmark = 'Next Bookmark';
lisKMGoToMarker0 = 'Go to marker 0'; lisKMGoToMarker0 = 'Go to marker 0';

View File

@ -447,6 +447,7 @@ type
procedure OnSrcNotebookEditorActived(Sender: TObject); procedure OnSrcNotebookEditorActived(Sender: TObject);
procedure OnSrcNotebookEditorPlaceBookmark(Sender: TObject; var Mark: TSynEditMark); procedure OnSrcNotebookEditorPlaceBookmark(Sender: TObject; var Mark: TSynEditMark);
procedure OnSrcNotebookEditorClearBookmark(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 OnSrcNotebookEditorDoSetBookmark(Sender: TObject; ID: Integer; Toggle: Boolean);
procedure OnSrcNotebookEditorDoGotoBookmark(Sender: TObject; ID: Integer; Backward: Boolean); procedure OnSrcNotebookEditorDoGotoBookmark(Sender: TObject; ID: Integer; Backward: Boolean);
procedure OnSrcNotebookEditorChanged(Sender: TObject); procedure OnSrcNotebookEditorChanged(Sender: TObject);
@ -2032,6 +2033,7 @@ begin
SourceEditorManager.RegisterChangeEvent(semEditorDestroy, @OnSrcNotebookEditorClosed); SourceEditorManager.RegisterChangeEvent(semEditorDestroy, @OnSrcNotebookEditorClosed);
SourceEditorManager.OnPlaceBookmark := @OnSrcNotebookEditorPlaceBookmark; SourceEditorManager.OnPlaceBookmark := @OnSrcNotebookEditorPlaceBookmark;
SourceEditorManager.OnClearBookmark := @OnSrcNotebookEditorClearBookmark; SourceEditorManager.OnClearBookmark := @OnSrcNotebookEditorClearBookmark;
SourceEditorManager.OnClearBookmarkId := @OnSrcNotebookEditorClearBookmarkId;
SourceEditorManager.OnSetBookmark := @OnSrcNotebookEditorDoSetBookmark; SourceEditorManager.OnSetBookmark := @OnSrcNotebookEditorDoSetBookmark;
SourceEditorManager.OnGotoBookmark := @OnSrcNotebookEditorDoGotoBookmark; SourceEditorManager.OnGotoBookmark := @OnSrcNotebookEditorDoGotoBookmark;
SourceEditorManager.OnEditorPropertiesClicked := @mnuEnvEditorOptionsClicked; SourceEditorManager.OnEditorPropertiesClicked := @mnuEnvEditorOptionsClicked;
@ -11246,6 +11248,35 @@ begin
(Mark.BookmarkNumber); (Mark.BookmarkNumber);
end; 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); procedure TMainIDE.OnSrcNotebookEditorDoSetBookmark(Sender: TObject; ID: Integer; Toggle: Boolean);
var var
ActEdit, OldEdit: TSourceEditor; ActEdit, OldEdit: TSourceEditor;

View File

@ -87,6 +87,7 @@ type
TOnLinesInsertedDeleted = procedure(Sender : TObject; TOnLinesInsertedDeleted = procedure(Sender : TObject;
FirstLine,Count : Integer) of Object; FirstLine,Count : Integer) of Object;
TPlaceBookMarkEvent = procedure(Sender: TObject; var Mark: TSynEditMark) 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; TBookMarkActionEvent = procedure(Sender: TObject; ID: Integer; Toggle: Boolean) of object;
TCharSet = set of Char; TCharSet = set of Char;
@ -1091,6 +1092,7 @@ type
private private
FOnAddJumpPoint: TOnAddJumpPoint; FOnAddJumpPoint: TOnAddJumpPoint;
FOnClearBookmark: TPlaceBookMarkEvent; FOnClearBookmark: TPlaceBookMarkEvent;
FOnClearBookmarkId: TPlaceBookMarkIdEvent;
FOnClickLink: TMouseEvent; FOnClickLink: TMouseEvent;
FOnCloseClicked: TOnCloseSrcEditor; FOnCloseClicked: TOnCloseSrcEditor;
FOnDeleteLastJumpPoint: TNotifyEvent; FOnDeleteLastJumpPoint: TNotifyEvent;
@ -1144,6 +1146,8 @@ type
read FOnPlaceMark write FOnPlaceMark; read FOnPlaceMark write FOnPlaceMark;
property OnClearBookmark: TPlaceBookMarkEvent // Bookmark was cleared by SynEdit property OnClearBookmark: TPlaceBookMarkEvent // Bookmark was cleared by SynEdit
read FOnClearBookmark write FOnClearBookmark; read FOnClearBookmark write FOnClearBookmark;
property OnClearBookmarkId: TPlaceBookMarkIdEvent
read FOnClearBookmarkId write FOnClearBookmarkId;
property OnSetBookmark: TBookMarkActionEvent // request to set a Bookmark property OnSetBookmark: TBookMarkActionEvent // request to set a Bookmark
read FOnSetBookmark write FOnSetBookmark; read FOnSetBookmark write FOnSetBookmark;
property OnGotoBookmark: TBookMarkActionEvent // request to go to a Bookmark property OnGotoBookmark: TBookMarkActionEvent // request to go to a Bookmark
@ -1203,6 +1207,8 @@ var
SrcEditMenuNextBookmark: TIDEMenuCommand; SrcEditMenuNextBookmark: TIDEMenuCommand;
SrcEditMenuPrevBookmark: TIDEMenuCommand; SrcEditMenuPrevBookmark: TIDEMenuCommand;
SrcEditMenuSetFreeBookmark: TIDEMenuCommand; SrcEditMenuSetFreeBookmark: TIDEMenuCommand;
SrcEditMenuClearFileBookmark: TIDEMenuCommand;
SrcEditMenuClearAllBookmark: TIDEMenuCommand;
// debugging // debugging
SrcEditMenuToggleBreakpoint: TIDEMenuCommand; SrcEditMenuToggleBreakpoint: TIDEMenuCommand;
SrcEditMenuRunToCursor: TIDEMenuCommand; SrcEditMenuRunToCursor: TIDEMenuCommand;
@ -1501,6 +1507,10 @@ begin
nil, @ExecuteIdeMenuClick); nil, @ExecuteIdeMenuClick);
SrcEditMenuSetFreeBookmark:=RegisterIDEMenuCommand SrcEditMenuSetFreeBookmark:=RegisterIDEMenuCommand
(AParent, 'Set a free Bookmark',uemSetFreeBookmark, nil, @ExecuteIdeMenuClick); (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} {%endregion}
{%region *** Debug Section ***} {%region *** Debug Section ***}
@ -3120,6 +3130,7 @@ Procedure TSourceEditor.ProcessUserCommand(Sender: TObject;
// define all extra keys here, that should not be handled by synedit // define all extra keys here, that should not be handled by synedit
var var
Handled: boolean; Handled: boolean;
i,x,y: Integer;
Begin Begin
//debugln('TSourceEditor.ProcessUserCommand A ',dbgs(Command)); //debugln('TSourceEditor.ProcessUserCommand A ',dbgs(Command));
FSharedValues.SetActiveSharedEditor(Self); FSharedValues.SetActiveSharedEditor(Self);
@ -3297,6 +3308,13 @@ Begin
EditorMacroForRecording.Stop; EditorMacroForRecording.Stop;
end; 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 else
begin begin
Handled:=false; Handled:=false;
@ -7745,6 +7763,10 @@ begin
if Assigned(Manager.OnSetBookmark) then if Assigned(Manager.OnSetBookmark) then
Manager.OnSetBookmark(GetActiveSE, -1, False); Manager.OnSetBookmark(GetActiveSE, -1, False);
ecClearAllBookmark:
if Assigned(Manager) and Assigned(Manager.OnClearBookmarkId) then
Manager.OnClearBookmarkId(Self, -1);
ecJumpBack: ecJumpBack:
Manager.HistoryJump(Self,jhaBack); Manager.HistoryJump(Self,jhaBack);
@ -9357,6 +9379,8 @@ begin
SrcEditMenuNextBookmark.Command:=GetCommand(ecNextBookmark); SrcEditMenuNextBookmark.Command:=GetCommand(ecNextBookmark);
SrcEditMenuPrevBookmark.Command:=GetCommand(ecPrevBookmark); SrcEditMenuPrevBookmark.Command:=GetCommand(ecPrevBookmark);
SrcEditMenuSetFreeBookmark.Command:=GetCommand(ecSetFreeBookmark); SrcEditMenuSetFreeBookmark.Command:=GetCommand(ecSetFreeBookmark);
SrcEditMenuClearFileBookmark.Command:=GetCommand(ecClearBookmarkForFile);
SrcEditMenuClearAllBookmark.Command:=GetCommand(ecClearAllBookmark);
for i:=0 to 9 do begin for i:=0 to 9 do begin
TIDEMenuCommand(SrcEditSubMenuGotoBookmarks.FindByName('GotoBookmark'+IntToStr(i))) TIDEMenuCommand(SrcEditSubMenuGotoBookmarks.FindByName('GotoBookmark'+IntToStr(i)))

View File

@ -231,6 +231,9 @@ const
ecSetFreeBookmark = ecFirstLazarus + 381; ecSetFreeBookmark = ecFirstLazarus + 381;
ecPrevBookmark = ecFirstLazarus + 382; ecPrevBookmark = ecFirstLazarus + 382;
ecNextBookmark = ecFirstLazarus + 383; ecNextBookmark = ecFirstLazarus + 383;
ecClearBookmarkForFile = ecFirstLazarus + 384;
ecClearAllBookmark = ecFirstLazarus + 385;
// Macro // Macro
ecSynMacroRecord = ecFirstLazarus + 390; ecSynMacroRecord = ecFirstLazarus + 390;
@ -1218,7 +1221,7 @@ begin
end; end;
const const
IDEEditorCommandStrs: array[0..295] of TIdentMapEntry = ( IDEEditorCommandStrs: array[0..297] of TIdentMapEntry = (
// search // search
(Value: ecFind; Name: 'ecFind'), (Value: ecFind; Name: 'ecFind'),
(Value: ecFindAgain; Name: 'ecFindAgain'), (Value: ecFindAgain; Name: 'ecFindAgain'),
@ -1396,6 +1399,8 @@ const
(Value: ecSetFreeBookmark; Name: 'ecSetFreeBookmark'), (Value: ecSetFreeBookmark; Name: 'ecSetFreeBookmark'),
(Value: ecPrevBookmark; Name: 'ecPrevBookmark'), (Value: ecPrevBookmark; Name: 'ecPrevBookmark'),
(Value: ecNextBookmark; Name: 'ecNextBookmark'), (Value: ecNextBookmark; Name: 'ecNextBookmark'),
(Value: ecClearBookmarkForFile; Name: 'ecClearBookmarkForFile'),
(Value: ecClearAllBookmark; Name: 'ecClearAllBookmark'),
// Macro // Macro
(Value: ecSynMacroRecord; Name: 'ecSynMacroRecord'), (Value: ecSynMacroRecord; Name: 'ecSynMacroRecord'),