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;
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);

View File

@ -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';

View File

@ -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;

View File

@ -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)))

View File

@ -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'),