IDE/SynEdit: macro recorder, ignore certain commands

git-svn-id: trunk@35461 -
This commit is contained in:
martin 2012-02-18 17:46:22 +00:00
parent d09a026ad1
commit a3467f2bc3
2 changed files with 64 additions and 0 deletions

View File

@ -73,6 +73,21 @@ type
property RepeatCount : Byte read fRepeatCount write fRepeatCount;
end;
{ TSynIgnoredEvent }
TSynIgnoredEvent = class(TSynMacroEvent)
protected
function GetAsString : string; override;
procedure InitEventParameters(aStr : string); override;
public
procedure Initialize(aCmd: TSynEditorCommand;
const aChar: TUTF8Char;
aData: Pointer); override;
procedure LoadFromStream(aStream: TStream); override;
procedure SaveToStream(aStream: TStream); override;
procedure Playback(aEditor: TCustomSynEdit); override;
end;
TSynBasicEvent = class(TSynMacroEvent)
protected
fCommand: TSynEditorCommand;
@ -264,6 +279,39 @@ type
implementation
{ TSynIgnoredEvent }
function TSynIgnoredEvent.GetAsString: string;
begin
Result := '';
end;
procedure TSynIgnoredEvent.InitEventParameters(aStr: string);
begin
//
end;
procedure TSynIgnoredEvent.Initialize(aCmd: TSynEditorCommand; const aChar: TUTF8Char;
aData: Pointer);
begin
//
end;
procedure TSynIgnoredEvent.LoadFromStream(aStream: TStream);
begin
//
end;
procedure TSynIgnoredEvent.SaveToStream(aStream: TStream);
begin
//
end;
procedure TSynIgnoredEvent.Playback(aEditor: TCustomSynEdit);
begin
//
end;
{ TSynDataEvent }
procedure TSynDataEvent.Initialize(aCmd: TSynEditorCommand; const aChar: TUTF8Char;

View File

@ -920,6 +920,8 @@ type
FMacroRecorder: TSynMacroRecorder;
FOnCurrentCodeBufferChanged: TNotifyEvent;
procedure DoMacroRecorderState(Sender: TObject);
procedure DoMacroRecorderUserCommand(aSender: TCustomSynMacroRecorder;
aCmd: TSynEditorCommand; var aEvent: TSynMacroEvent);
public
property OnCurrentCodeBufferChanged: TNotifyEvent
read FOnCurrentCodeBufferChanged write FOnCurrentCodeBufferChanged;
@ -7684,6 +7686,19 @@ begin
TSourceNotebook(SourceWindows[i]).UpdateStatusBar;
end;
procedure TSourceEditorManagerBase.DoMacroRecorderUserCommand(aSender: TCustomSynMacroRecorder;
aCmd: TSynEditorCommand; var aEvent: TSynMacroEvent);
begin
case aCmd of
ecToggleFormUnit..ecViewThreads, ecViewHistory,
ecNextEditor, ecPrevEditor, ecNextWindow, ecPrevWindow,
ecGotoEditor1..ecGotoEditor0:
aEvent := TSynIgnoredEvent.Create;
else
;//
end;
end;
procedure TSourceEditorManagerBase.FreeSourceWindows;
var
s: TSourceEditorWindowInterface;
@ -8115,6 +8130,7 @@ var
begin
FMacroRecorder := TSynMacroRecorder.Create(nil);
FMacroRecorder.OnStateChange := @DoMacroRecorderState;
FMacroRecorder.OnUserCommand := @DoMacroRecorderUserCommand;
FMacroRecorder.RecordCommandID := ecSynMacroRecord;
FMacroRecorder.PlaybackCommandID := ecSynMacroPlay;
FMacroRecorder.RecordShortCut := 0;