SynEdit: refactor plugin key handling / adding syncro edit to component palette.

git-svn-id: trunk@35429 -
This commit is contained in:
martin 2012-02-17 17:29:05 +00:00
parent e8124edb78
commit ecd605e5bd
11 changed files with 420 additions and 355 deletions

1
.gitattributes vendored
View File

@ -2294,6 +2294,7 @@ components/synedit/design/tsynmultisyn.png -text svneol=unset#image/png
components/synedit/design/tsynpassyn.png -text svneol=unset#image/png
components/synedit/design/tsynperlsyn.png -text svneol=unset#image/png
components/synedit/design/tsynphpsyn.png -text svneol=unset#image/png
components/synedit/design/tsynpluginsyncroedit.png -text
components/synedit/design/tsynposyn.png -text svneol=unset#image/png
components/synedit/design/tsynpythonsyn.png -text svneol=unset#image/png
components/synedit/design/tsynsqlsyn.png -text svneol=unset#image/png

View File

@ -24,3 +24,4 @@ tsynvbsyn.png
tsynbatsyn.png
tsyninisyn.png
tsynposyn.png
tsynpluginsyncroedit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

View File

@ -927,8 +927,6 @@ function TSynEditKeyStrokes.FindKeycodeEx(Code: word; SS: TShiftState; var Data:
FinishComboOnly: Boolean; ComboStart: TSynEditKeyStrokes): TSynEditorCommand;
var
i: integer;
LK: Word;
LS: TShiftState;
CurComboStart: TSynEditKeyStrokes;
{$IFNDEF SYN_COMPILER_3_UP}
const

View File

@ -488,3 +488,31 @@ LazarusResources.Add('tsynposyn','PNG',[
+#255'5 '#9')'#19#166#233#222'x<'#131'A'#255#4'P'#255#161#166'!G'#212'\'#189
+#226#162#209#196#158#0#0#0#0'IEND'#174'B`'#130
]);
LazarusResources.Add('tsynpluginsyncroedit','PNG',[
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#6#0#0#0#224'w='#248#0
+#0#0#1'sRGB'#0#174#206#28#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#9
+'pHYs'#0#0#14#195#0#0#14#195#1#199'o'#168'd'#0#0#0#6'bKGD'#0#255#0#255#0#255
+#160#189#167#147#0#0#0#7'tIME'#7#215#12#17#20'#'#27#193'Y'#238#237#0#0#1#253
+'IDATHK'#181'V=K'#3'A'#16#157#187#196#255' D'#172'l'#172'S'#248#209'Yj'#23'0'
+#133'"'#10#166'R'#20#236'R'#138#191#192#139#22#162#144'F'#140'H.'#152'N;'#5
+#17#131#144'X'#8#162'b'#17'"'#17#130#160#254#128'$'#156#247'67'#241'>'#178
+#231'%'#198#129'a'#239'nw'#231#205#206#155#183#137'b'#152'F'#255'h'#10#0't='
+#223'7'#136#183#252#172#136#21#137#229'('#30#143#17#1' '#155'=5'#202#229#23
+#225#201#228#14'>'#245'd'#219's'#170#241#249'~c'#220#231'V'#13'<'#195#194'~'
+#169#239#157#213'hef'#144'x'#196#218'D"'#225#217#146'N'#167'I'#155#15#209'R'
+#234#154#170'WGt'#247#244'!'#214#160'2R'#128#137#245'K*'#236'N'#137#133#0#225
+'w'#4'k'#218' B'#230#179';'#248#215#131'N'#181'a'#141'"'#230#156#218'm'#241
+#21'E'#161#176#229#178#224#27#199'?)HO'#128#236#145'5'#27#159#198#222't'#157
+'2'#183#7#199'^_'#14'8'#168#227#148'['#138'x'#213#158'UG'#205'Q'#22'wp_'#0'{'
+#246#142'Sl'#182'dSY'#152'l'#19'*'#11#238#11#192#217#163#131#14#207#31#219
+#132'+'#212':'#1'e'#136#234#141'&'#141#168'E'#145'9k'#137'u'#16'5u '#204'O'#7
+#227'k'#23']'#233#193#173#3#232#203#183'M'#145#128#135'h'#139#131#196#235'r'
+#155#26#153#14#2#149#200#211#198#22#7#7#214'D'#207':@'#230'pp`7('#25#14'-'#4
+#209#129'Th '#25#14#130#25#12'@('#7#28'z'#248#147#14#184#246#139#211#163#226
+#170#176#27#212'l'#18#26'H'#7#191#158#192#29#220#234'<'#170#168'c'#129't '#5
+#224#218'c'#244#136#206#236'$-S'#160'}'#189'H~"C2R'#0#212#30#198'"s'#128#152
+#157#4#14'R'''#183#29#175#7'{9'#187#190'My'#179#253#202'n'#24'uO7'#243#7'_'
+#14#144'5H'#134#241#200#27#209#162'p!&e'#160';'#128'z'#179#149#17#218#148'Iv'
+#147#141'5n'#239#132#210#254#209'/'#149#170#210',z'#157#136'F'#135'H'#0'p'
+#128'~'#254#187#224#152#223#148#134#235'&"*P1'#0#0#0#0'IEND'#174'B`'#130
]);

View File

@ -42,6 +42,7 @@ uses
SynHighlighterCss, SynHighlighterPHP, SynHighlighterTeX, SynHighlighterSQL,
SynHighlighterPython, SynHighlighterVB, SynHighlighterAny, SynHighlighterDiff,
SynHighlighterBat, SynHighlighterIni, SynHighlighterPo,
SynPluginSyncroEdit,
SynPropertyEditObjectList, SynDesignStringConstants,
LazarusPackageIntf, LResources, PropEdits, ComponentEditors;
@ -59,6 +60,11 @@ begin
RegisterComponents('SynEdit',[TSynEdit]);
end;
procedure RegisterSynSyncroEdit;
begin
RegisterComponents('SynEdit',[TSynPluginSyncroEdit]);
end;
procedure RegisterSynExportHTML;
begin
RegisterComponents('SynEdit',[TSynExporterHTML]);
@ -213,6 +219,7 @@ begin
RegisterUnit('SynCompletion',@RegisterSynCompletion);
RegisterUnit('SynMacroRecorder',@RegisterSynMacroRecorder);
RegisterUnit('SynExportHTML',@RegisterSynExportHTML);
RegisterUnit('SynPluginSyncroEdit',@RegisterSynSyncroEdit);
RegisterUnit('SynHighlighterPas',@RegisterSynHighlighterPas);
RegisterUnit('SynHighlighterCPP',@RegisterSynHighlighterCPP);

View File

@ -245,14 +245,11 @@ type
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property GutterGlyph: TBitmap read FGutterGlyph write SetGutterGlyph;
class function ConvertCommandToBase(Command: TSynEditorCommand): TSynEditorCommand;
class function ConvertBaseToCommand(Command: TSynEditorCommand): TSynEditorCommand;
class function ConvertCommandToBaseOff(Command: TSynEditorCommand): TSynEditorCommand;
class function ConvertBaseToCommandOff(Command: TSynEditorCommand): TSynEditorCommand;
class function ConvertCommandToBaseSel(Command: TSynEditorCommand): TSynEditorCommand;
class function ConvertBaseToCommandSel(Command: TSynEditorCommand): TSynEditorCommand;
published
property GutterGlyph: TBitmap read FGutterGlyph write SetGutterGlyph;
property KeystrokesSelecting: TSynEditKeyStrokes
read FKeystrokesSelecting write SetKeystrokesSelecting;
property Keystrokes: TSynEditKeyStrokes
@ -262,6 +259,16 @@ type
property OnModeChange: TNotifyEvent read FOnModeChange write FOnModeChange;
property OnBeginEdit: TNotifyEvent read FOnBeginEdit write FOnBeginEdit;
property OnEndEdit: TNotifyEvent read FOnEndEdit write FOnEndEdit;
published
property Enabled;
property MarkupInfo;
property MarkupInfoCurrent;
property MarkupInfoSync;
property MarkupInfoArea;
property OnActivate;
property OnDeactivate;
property Editor;
end;
const
@ -269,25 +276,23 @@ const
emcSynPSyncroEdCount = 1;
ecSynPSyncroEdNextCell = ecPluginFirst + 0;
ecSynPSyncroEdNextCellSel = ecPluginFirst + 1;
ecSynPSyncroEdPrevCell = ecPluginFirst + 2;
ecSynPSyncroEdPrevCellSel = ecPluginFirst + 3;
ecSynPSyncroEdCellHome = ecPluginFirst + 4;
ecSynPSyncroEdCellEnd = ecPluginFirst + 5;
ecSynPSyncroEdCellSelect = ecPluginFirst + 6;
ecSynPSyncroEdEscape = ecPluginFirst + 7;
ecSynPSyncroEdCount = 8;
ecSynPSyncroEdStart = ecPluginFirst + 0;
ecSynPSyncroEdSelModeCount = 1;
ecSynPSyncroEdNextCell = ecPluginFirst + 1;
ecSynPSyncroEdNextCellSel = ecPluginFirst + 2;
ecSynPSyncroEdPrevCell = ecPluginFirst + 3;
ecSynPSyncroEdPrevCellSel = ecPluginFirst + 4;
ecSynPSyncroEdCellHome = ecPluginFirst + 5;
ecSynPSyncroEdCellEnd = ecPluginFirst + 6;
ecSynPSyncroEdCellSelect = ecPluginFirst + 7;
ecSynPSyncroEdEscape = ecPluginFirst + 8;
ecSynPSyncroEdCount = 9;
implementation
var
MouseOffset, KeyOffsetSel, KeyOffset, KeyOffsetOff: integer;
MouseOffset, KeyOffset: integer;
const
MAX_CACHE = 50; // Amount of lower-cased lines cached
@ -1086,7 +1091,8 @@ end;
procedure TSynPluginSyncroEdit.DoImageChanged(Sender: TObject);
begin
Markup.GutterGlyph := FGutterGlyph;
if Markup <> nil then
Markup.GutterGlyph := FGutterGlyph;
end;
function TSynPluginSyncroEdit.CreateMarkup: TSynPluginSyncronizedEditMarkup;
@ -1362,7 +1368,7 @@ begin
if Mode = spseSelecting then begin
// todo: finish word-hash calculations / check if any cells exist
Cmd := ConvertCommandToBaseSel(Command);
Cmd := ConvertCommandToBase(Command);
Handled := True;
case Cmd of
ecSynPSyncroEdStart: StartSyncroMode;
@ -1373,8 +1379,6 @@ begin
if Mode = spseEditing then begin
Cmd := ConvertCommandToBase(Command);
if Cmd = ecNone then
Cmd := ConvertCommandToBaseOff(Command);
Handled := True;
case Cmd of
@ -1410,11 +1414,11 @@ begin
FKeyStrokesOffCell := TSynEditSyncroEditKeyStrokesOffCell.Create(self);
FKeyStrokesOffCell.ResetDefaults;
FKeyStrokesOffCell.PluginOffset := KeyOffsetOff;
FKeyStrokesOffCell.PluginOffset := KeyOffset;
FKeystrokesSelecting := TSynEditSyncroEditKeyStrokesSelecting.Create(Self);
FKeystrokesSelecting.ResetDefaults;
FKeystrokesSelecting.PluginOffset := KeyOffsetSel;
FKeystrokesSelecting.PluginOffset := KeyOffset;
FGutterGlyph := TBitMap.Create;
FGutterGlyph.OnChange := @DoImageChanged;
@ -1455,36 +1459,6 @@ begin
else Result := ecNone;
end;
class function TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command: TSynEditorCommand): TSynEditorCommand;
begin
if (Command >= ecPluginFirst + KeyOffsetOff) and
(Command <= ecPluginFirst + KeyOffsetOff + ecSynPSyncroEdCount)
then Result := Command - KeyOffsetOff
else Result := ecNone;
end;
class function TSynPluginSyncroEdit.ConvertBaseToCommandOff(Command: TSynEditorCommand): TSynEditorCommand;
begin
if (Command >= ecPluginFirst) and (Command <= ecPluginFirst + ecSynPSyncroEdCount)
then Result := Command + KeyOffsetOff
else Result := ecNone;
end;
class function TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command: TSynEditorCommand): TSynEditorCommand;
begin
if (Command >= ecPluginFirst + KeyOffsetSel) and
(Command <= ecPluginFirst + KeyOffsetSel + ecSynPSyncroEdSelModeCount)
then Result := Command - KeyOffsetSel
else Result := ecNone;
end;
class function TSynPluginSyncroEdit.ConvertBaseToCommandSel(Command: TSynEditorCommand): TSynEditorCommand;
begin
if (Command >= ecPluginFirst) and (Command <= ecPluginFirst + ecSynPSyncroEdSelModeCount)
then Result := Command + KeyOffsetSel
else Result := ecNone;
end;
{ TSynPluginSyncroEditMouseActions }
procedure TSynPluginSyncroEditMouseActions.ResetDefaults;
@ -1560,11 +1534,39 @@ begin
AddKey(ecSynPSyncroEdEscape, VK_ESCAPE, []);
end;
const
EditorSyncroCommandStrs: array[0..8] of TIdentMapEntry = (
(Value: ecSynPSyncroEdStart; Name: 'ecSynPSyncroEdStart'),
(Value: ecSynPSyncroEdNextCell; Name: 'ecSynPSyncroEdNextCell'),
(Value: ecSynPSyncroEdNextCellSel; Name: 'ecSynPSyncroEdNextCellSel'),
(Value: ecSynPSyncroEdPrevCell; Name: 'ecSynPSyncroEdPrevCell'),
(Value: ecSynPSyncroEdPrevCellSel; Name: 'ecSynPSyncroEdPrevCellSel'),
(Value: ecSynPSyncroEdCellHome; Name: 'ecSynPSyncroEdCellHome'),
(Value: ecSynPSyncroEdCellEnd; Name: 'ecSynPSyncroEdCellEnd'),
(Value: ecSynPSyncroEdCellSelect; Name: 'ecSynPSyncroEdCellSelect'),
(Value: ecSynPSyncroEdEscape; Name: 'ecSynPSyncroEdEscape')
);
function IdentToSyncroCommand(const Ident: string; var Cmd: longint): boolean;
begin
Result := IdentToInt(Ident, Cmd, EditorSyncroCommandStrs);
if Result then inc(Cmd, KeyOffset);
end;
function SyncroCommandToIdent(Cmd: longint; var Ident: string): boolean;
begin
Result := (Cmd - ecPluginFirst >= KeyOffset) and (Cmd - ecPluginFirst < KeyOffset + ecSynPSyncroEdCount);
if not Result then exit;
Result := IntToIdent(Cmd - KeyOffset, Ident, EditorSyncroCommandStrs);
end;
initialization
MouseOffset := AllocatePluginMouseRange(emcSynPSyncroEdCount);
KeyOffsetSel := AllocatePluginKeyRange(ecSynPSyncroEdSelModeCount);
KeyOffset := AllocatePluginKeyRange(ecSynPSyncroEdCount);
KeyOffsetOff := AllocatePluginKeyRange(ecSynPSyncroEdCount);
RegisterKeyCmdIdentProcs({$IFDEF FPC}@{$ENDIF}IdentToSyncroCommand,
{$IFDEF FPC}@{$ENDIF}SyncroCommandToIdent);
end.

View File

@ -72,8 +72,6 @@ type
destructor Destroy; override;
class function ConvertCommandToBase(Command: TSynEditorCommand): TSynEditorCommand;
class function ConvertBaseToCommand(Command: TSynEditorCommand): TSynEditorCommand;
class function ConvertCommandToBaseOff(Command: TSynEditorCommand): TSynEditorCommand;
class function ConvertBaseToCommandOff(Command: TSynEditorCommand): TSynEditorCommand;
procedure SetTemplate(aTmpl: String; aCaretPos: TPoint); // Replaces current selection
// Coords relativ to the template. base (1, 1)
@ -104,7 +102,7 @@ const
implementation
var
KeyOffset, KeyOffsetOff: integer;
KeyOffset: integer;
{ TSynPluginTemplateEdit }
@ -115,7 +113,7 @@ begin
FKeystrokes.PluginOffset := KeyOffset;
FKeyStrokesOffCell := TSynEditTemplateEditKeyStrokesOffCell.Create(self);
FKeyStrokesOffCell.ResetDefaults;
FKeyStrokesOffCell.PluginOffset := KeyOffsetOff;
FKeyStrokesOffCell.PluginOffset := KeyOffset;
inherited Create(AOwner);
CellParserEnabled := True;
end;
@ -143,22 +141,6 @@ begin
else Result := ecNone;
end;
class function TSynPluginTemplateEdit.ConvertCommandToBaseOff
(Command: TSynEditorCommand): TSynEditorCommand;
begin
if (Command >= ecPluginFirst + KeyOffsetOff) and
(Command <= ecPluginFirst + KeyOffsetOff + ecSynPTmplEdCount)
then Result := Command - KeyOffsetOff
else Result := ecNone;
end;
class function TSynPluginTemplateEdit.ConvertBaseToCommandOff(Command: TSynEditorCommand): TSynEditorCommand;
begin
if (Command >= ecPluginFirst) and (Command <= ecPluginFirst + ecSynPTmplEdCount)
then Result := Command + KeyOffsetOff
else Result := ecNone;
end;
procedure TSynPluginTemplateEdit.SetEditor(const AValue: TCustomSynEdit);
begin
if Editor = AValue then exit;
@ -226,8 +208,6 @@ var
begin
if Handled or AfterProcessing or not Active then exit;
Cmd := ConvertCommandToBase(Command);
if Cmd = ecNone then
Cmd := ConvertCommandToBaseOff(Command);
Handled := True;
case Cmd of
@ -499,7 +479,6 @@ end;
initialization
KeyOffset := AllocatePluginKeyRange(ecSynPTmplEdCount + 1);
KeyOffsetOff := AllocatePluginKeyRange(ecSynPTmplEdCount + 1);
end.

View File

@ -4247,8 +4247,10 @@ begin
TSynPluginTemplateEdit(ASynEdit.Plugin[c]).KeystrokesOffCell.Assign(
TSynPluginTemplateEdit(SimilarEdit.Plugin[i]).KeystrokesOffCell);
end else begin
KeyMap.AssignTo(TSynPluginTemplateEdit(ASynEdit.Plugin[c]).Keystrokes, TLazSynPluginTemplateEditForm);
KeyMap.AssignTo(TSynPluginTemplateEdit(ASynEdit.Plugin[c]).KeystrokesOffCell, TLazSynPluginTemplateEditFormOff);
KeyMap.AssignTo(TSynPluginTemplateEdit(ASynEdit.Plugin[c]).Keystrokes,
TLazSynPluginTemplateEditForm, ecIdePTmplOffset);
KeyMap.AssignTo(TSynPluginTemplateEdit(ASynEdit.Plugin[c]).KeystrokesOffCell,
TLazSynPluginTemplateEditFormOff, ecIdePTmplOutOffset);
end;
end;
@ -4264,9 +4266,12 @@ begin
TSynPluginSyncroEdit(ASynEdit.Plugin[c]).KeystrokesOffCell.Assign(
TSynPluginSyncroEdit(SimilarEdit.Plugin[i]).KeystrokesOffCell);
end else begin
KeyMap.AssignTo(TSynPluginSyncroEdit(ASynEdit.Plugin[c]).KeystrokesSelecting, TLazSynPluginSyncroEditFormSel);
KeyMap.AssignTo(TSynPluginSyncroEdit(ASynEdit.Plugin[c]).Keystrokes, TLazSynPluginSyncroEditForm);
KeyMap.AssignTo(TSynPluginSyncroEdit(ASynEdit.Plugin[c]).KeystrokesOffCell, TLazSynPluginSyncroEditFormOff);
KeyMap.AssignTo(TSynPluginSyncroEdit(ASynEdit.Plugin[c]).KeystrokesSelecting,
TLazSynPluginSyncroEditFormSel, ecIdePSyncroSelOffset);
KeyMap.AssignTo(TSynPluginSyncroEdit(ASynEdit.Plugin[c]).Keystrokes,
TLazSynPluginSyncroEditForm, ecIdePSyncroOffset);
KeyMap.AssignTo(TSynPluginSyncroEdit(ASynEdit.Plugin[c]).KeystrokesOffCell,
TLazSynPluginSyncroEditFormOff, ecIdePSyncroOutOffset);
end;
end;

View File

@ -56,6 +56,16 @@ const
'Custom'
);
(* SynEdit Plugins
Offsets for the fixed ec... commands, defined in IDECommands
Used in EditorOptions
*)
ecIdePTmplOffset = ecSynPTmplEdNextCell - ecIdePTmplEdNextCell;
ecIdePTmplOutOffset = ecSynPTmplEdNextCell - ecIdePTmplEdOutNextCell;
ecIdePSyncroOffset = ecSynPSyncroEdNextCell - ecIdePSyncroEdNextCell;
ecIdePSyncroOutOffset = ecSynPSyncroEdNextCell - ecIdePSyncroEdOutNextCell;
ecIdePSyncroSelOffset = ecSynPSyncroEdStart - ecIdePSyncroEdSelStart;
type
//---------------------------------------------------------------------------
// TKeyCommandCategory is used to divide the key commands in handy packets
@ -155,7 +165,8 @@ type
function LoadFromXMLConfig(XMLConfig:TXMLConfig; const Path: String):boolean;
function SaveToXMLConfig(XMLConfig:TXMLConfig; const Path: String):boolean;
procedure AssignTo(ASynEditKeyStrokes:TSynEditKeyStrokes;
IDEWindowClass: TCustomFormClass);
IDEWindowClass: TCustomFormClass;
ACommandOffsetOffset: Integer = 0);
procedure Assign(List: TKeyCommandRelationList);
procedure LoadScheme(const SchemeName: string);
function CreateUniqueCategoryName(const AName: string): string;
@ -628,64 +639,54 @@ begin
ecDesignerForwardOne : Result:= lisDsgOrderForwardOne;
ecDesignerBackOne : Result:= lisDsgOrderBackOne;
// Edit template
ecIdePTmplEdNextCell: Result := srkmecSynPTmplEdNextCell;
ecIdePTmplEdNextCellSel: Result := srkmecSynPTmplEdNextCellSel;
ecIdePTmplEdNextCellRotate: Result := srkmecSynPTmplEdNextCellRotate;
ecIdePTmplEdNextCellSelRotate: Result := srkmecSynPTmplEdNextCellSelRotate;
ecIdePTmplEdPrevCell: Result := srkmecSynPTmplEdPrevCell;
ecIdePTmplEdPrevCellSel: Result := srkmecSynPTmplEdPrevCellSel;
ecIdePTmplEdCellHome: Result := srkmecSynPTmplEdCellHome;
ecIdePTmplEdCellEnd: Result := srkmecSynPTmplEdCellEnd;
ecIdePTmplEdCellSelect: Result := srkmecSynPTmplEdCellSelect;
ecIdePTmplEdFinish: Result := srkmecSynPTmplEdFinish;
ecIdePTmplEdEscape: Result := srkmecSynPTmplEdEscape;
// Edit template
ecIdePTmplEdOutNextCell: Result := srkmecSynPTmplEdNextCell;
ecIdePTmplEdOutNextCellSel: Result := srkmecSynPTmplEdNextCellSel;
ecIdePTmplEdOutNextCellRotate: Result := srkmecSynPTmplEdNextCellRotate;
ecIdePTmplEdOutNextCellSelRotate: Result := srkmecSynPTmplEdNextCellSelRotate;
ecIdePTmplEdOutPrevCell: Result := srkmecSynPTmplEdPrevCell;
ecIdePTmplEdOutPrevCellSel: Result := srkmecSynPTmplEdPrevCellSel;
ecIdePTmplEdOutCellHome: Result := srkmecSynPTmplEdCellHome;
ecIdePTmplEdOutCellEnd: Result := srkmecSynPTmplEdCellEnd;
ecIdePTmplEdOutCellSelect: Result := srkmecSynPTmplEdCellSelect;
ecIdePTmplEdOutFinish: Result := srkmecSynPTmplEdFinish;
ecIdePTmplEdOutEscape: Result := srkmecSynPTmplEdEscape;
// SyncroEdit
ecIdePSyncroEdNextCell: Result := srkmecSynPSyncroEdNextCell;
ecIdePSyncroEdNextCellSel: Result := srkmecSynPSyncroEdNextCellSel;
ecIdePSyncroEdPrevCell: Result := srkmecSynPSyncroEdPrevCell;
ecIdePSyncroEdPrevCellSel: Result := srkmecSynPSyncroEdPrevCellSel;
ecIdePSyncroEdCellHome: Result := srkmecSynPSyncroEdCellHome;
ecIdePSyncroEdCellEnd: Result := srkmecSynPSyncroEdCellEnd;
ecIdePSyncroEdCellSelect: Result := srkmecSynPSyncroEdCellSelect;
ecIdePSyncroEdEscape: Result := srkmecSynPSyncroEdEscape;
// SyncroEdit
ecIdePSyncroEdOutNextCell: Result := srkmecSynPSyncroEdNextCell;
ecIdePSyncroEdOutNextCellSel: Result := srkmecSynPSyncroEdNextCellSel;
ecIdePSyncroEdOutPrevCell: Result := srkmecSynPSyncroEdPrevCell;
ecIdePSyncroEdOutPrevCellSel: Result := srkmecSynPSyncroEdPrevCellSel;
ecIdePSyncroEdOutCellHome: Result := srkmecSynPSyncroEdCellHome;
ecIdePSyncroEdOutCellEnd: Result := srkmecSynPSyncroEdCellEnd;
ecIdePSyncroEdOutCellSelect: Result := srkmecSynPSyncroEdCellSelect;
ecIdePSyncroEdOutEscape: Result := srkmecSynPSyncroEdEscape;
// SyncroEdit, during selection
ecIdePSyncroEdSelStart: Result := srkmecSynPSyncroEdStart;
else
begin
Result:= srkmecunknown;
case TSynPluginTemplateEdit.ConvertCommandToBase(cmd) of
// Edit template
ecSynPTmplEdNextCell: Result := srkmecSynPTmplEdNextCell;
ecSynPTmplEdNextCellSel: Result := srkmecSynPTmplEdNextCellSel;
ecSynPTmplEdNextCellRotate: Result := srkmecSynPTmplEdNextCellRotate;
ecSynPTmplEdNextCellSelRotate: Result := srkmecSynPTmplEdNextCellSelRotate;
ecSynPTmplEdPrevCell: Result := srkmecSynPTmplEdPrevCell;
ecSynPTmplEdPrevCellSel: Result := srkmecSynPTmplEdPrevCellSel;
ecSynPTmplEdCellHome: Result := srkmecSynPTmplEdCellHome;
ecSynPTmplEdCellEnd: Result := srkmecSynPTmplEdCellEnd;
ecSynPTmplEdCellSelect: Result := srkmecSynPTmplEdCellSelect;
ecSynPTmplEdFinish: Result := srkmecSynPTmplEdFinish;
ecSynPTmplEdEscape: Result := srkmecSynPTmplEdEscape;
end;
case TSynPluginTemplateEdit.ConvertCommandToBaseOff(cmd) of
// Edit template
ecSynPTmplEdNextCell: Result := srkmecSynPTmplEdNextCell;
ecSynPTmplEdNextCellSel: Result := srkmecSynPTmplEdNextCellSel;
ecSynPTmplEdNextCellRotate: Result := srkmecSynPTmplEdNextCellRotate;
ecSynPTmplEdNextCellSelRotate: Result := srkmecSynPTmplEdNextCellSelRotate;
ecSynPTmplEdPrevCell: Result := srkmecSynPTmplEdPrevCell;
ecSynPTmplEdPrevCellSel: Result := srkmecSynPTmplEdPrevCellSel;
ecSynPTmplEdCellHome: Result := srkmecSynPTmplEdCellHome;
ecSynPTmplEdCellEnd: Result := srkmecSynPTmplEdCellEnd;
ecSynPTmplEdCellSelect: Result := srkmecSynPTmplEdCellSelect;
ecSynPTmplEdFinish: Result := srkmecSynPTmplEdFinish;
ecSynPTmplEdEscape: Result := srkmecSynPTmplEdEscape;
end;
case TSynPluginSyncroEdit.ConvertCommandToBase(cmd) of
// SyncroEdit
ecSynPSyncroEdNextCell: Result := srkmecSynPSyncroEdNextCell;
ecSynPSyncroEdNextCellSel: Result := srkmecSynPSyncroEdNextCellSel;
ecSynPSyncroEdPrevCell: Result := srkmecSynPSyncroEdPrevCell;
ecSynPSyncroEdPrevCellSel: Result := srkmecSynPSyncroEdPrevCellSel;
ecSynPSyncroEdCellHome: Result := srkmecSynPSyncroEdCellHome;
ecSynPSyncroEdCellEnd: Result := srkmecSynPSyncroEdCellEnd;
ecSynPSyncroEdCellSelect: Result := srkmecSynPSyncroEdCellSelect;
ecSynPSyncroEdEscape: Result := srkmecSynPSyncroEdEscape;
end;
case TSynPluginSyncroEdit.ConvertCommandToBaseOff(cmd) of
// SyncroEdit
ecSynPSyncroEdNextCell: Result := srkmecSynPSyncroEdNextCell;
ecSynPSyncroEdNextCellSel: Result := srkmecSynPSyncroEdNextCellSel;
ecSynPSyncroEdPrevCell: Result := srkmecSynPSyncroEdPrevCell;
ecSynPSyncroEdPrevCellSel: Result := srkmecSynPSyncroEdPrevCellSel;
ecSynPSyncroEdCellHome: Result := srkmecSynPSyncroEdCellHome;
ecSynPSyncroEdCellEnd: Result := srkmecSynPSyncroEdCellEnd;
ecSynPSyncroEdCellSelect: Result := srkmecSynPSyncroEdCellSelect;
ecSynPSyncroEdEscape: Result := srkmecSynPSyncroEdEscape;
end;
case TSynPluginSyncroEdit.ConvertCommandToBaseSel(cmd) of
// SyncroEdit, during selection
ecSynPSyncroEdStart: Result := srkmecSynPSyncroEdStart;
end;
end;
end;
@ -1214,63 +1215,54 @@ begin
ecDesignerForwardOne: SetSingle(VK_PRIOR,[ssCtrl]);
ecDesignerBackOne: SetSingle(VK_NEXT,[ssCtrl]);
ecIdePTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecIdePTmplEdNextCellSel: SetSingle(VK_TAB,[]);
ecIdePTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecIdePTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecIdePTmplEdCellHome: SetSingle(VK_HOME,[]);
ecIdePTmplEdCellEnd: SetSingle(VK_END,[]);
ecIdePTmplEdCellSelect: SetSingle(VK_A,[ssCtrl]);
ecIdePTmplEdFinish: SetSingle(VK_RETURN,[]);
ecIdePTmplEdEscape: SetSingle(VK_ESCAPE,[]);
// Edit template
ecIdePTmplEdOutNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecIdePTmplEdOutNextCellSel: SetSingle(VK_TAB,[]);
ecIdePTmplEdOutNextCellRotate: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecIdePTmplEdOutPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecIdePTmplEdOutCellHome: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutCellEnd: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutCellSelect: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutFinish: SetSingle(VK_RETURN,[]);
ecIdePTmplEdOutEscape: SetSingle(VK_ESCAPE,[]);
// SyncroEdit
ecIdePSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecIdePSyncroEdNextCellSel: SetSingle(VK_TAB,[]);
ecIdePSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecIdePSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecIdePSyncroEdCellHome: SetSingle(VK_HOME,[]);
ecIdePSyncroEdCellEnd: SetSingle(VK_END,[]);
ecIdePSyncroEdCellSelect: SetSingle(VK_A,[ssCtrl]);
ecIdePSyncroEdEscape: SetSingle(VK_ESCAPE,[]);
// SyncroEdit
ecIdePSyncroEdOutNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecIdePSyncroEdOutNextCellSel: SetSingle(VK_TAB,[]);
ecIdePSyncroEdOutPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecIdePSyncroEdOutPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecIdePSyncroEdOutCellHome: SetSingle(VK_UNKNOWN,[]);
ecIdePSyncroEdOutCellEnd: SetSingle(VK_UNKNOWN,[]);
ecIdePSyncroEdOutCellSelect: SetSingle(VK_UNKNOWN,[]);
ecIdePSyncroEdOutEscape: SetSingle(VK_ESCAPE,[]);
// SyncroEdit, during selection
ecIdePSyncroEdSelStart: SetSingle(VK_J,[ssCtrl]);
else
begin
SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]);
case TSynPluginTemplateEdit.ConvertCommandToBase(Command) of
// Edit template
ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecSynPTmplEdNextCellSel: SetSingle(VK_TAB,[]);
ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecSynPTmplEdCellHome: SetSingle(VK_HOME,[]);
ecSynPTmplEdCellEnd: SetSingle(VK_END,[]);
ecSynPTmplEdCellSelect: SetSingle(VK_A,[ssCtrl]);
ecSynPTmplEdFinish: SetSingle(VK_RETURN,[]);
ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[]);
end;
case TSynPluginTemplateEdit.ConvertCommandToBaseOff(Command) of
// Edit template
ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecSynPTmplEdNextCellSel: SetSingle(VK_TAB,[]);
ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecSynPTmplEdCellHome: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdCellEnd: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdCellSelect: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdFinish: SetSingle(VK_RETURN,[]);
ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[]);
end;
case TSynPluginSyncroEdit.ConvertCommandToBase(Command) of
// SyncroEdit
ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB,[]);
ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecSynPSyncroEdCellHome: SetSingle(VK_HOME,[]);
ecSynPSyncroEdCellEnd: SetSingle(VK_END,[]);
ecSynPSyncroEdCellSelect: SetSingle(VK_A,[ssCtrl]);
ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[]);
end;
case TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command) of
// SyncroEdit
ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB,[]);
ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecSynPSyncroEdCellHome: SetSingle(VK_UNKNOWN,[]);
ecSynPSyncroEdCellEnd: SetSingle(VK_UNKNOWN,[]);
ecSynPSyncroEdCellSelect: SetSingle(VK_UNKNOWN,[]);
ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[]);
end;
case TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command) of
// SyncroEdit, during selection
ecSynPSyncroEdStart: SetSingle(VK_J,[ssCtrl]);
end;
end;
end;
end;
@ -1643,63 +1635,54 @@ begin
ecDesignerForwardOne: SetSingle(VK_PRIOR,[ssCtrl]);
ecDesignerBackOne: SetSingle(VK_NEXT,[ssCtrl]);
// Edit template
ecIdePTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecIdePTmplEdNextCellSel: SetSingle(VK_TAB,[]);
ecIdePTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecIdePTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecIdePTmplEdCellHome: SetSingle(VK_HOME,[]);
ecIdePTmplEdCellEnd: SetSingle(VK_END,[]);
ecIdePTmplEdCellSelect: SetSingle(VK_A,[ssCtrl]);
ecIdePTmplEdFinish: SetSingle(VK_RETURN,[]);
ecIdePTmplEdEscape: SetSingle(VK_ESCAPE,[]);
// Edit template
ecIdePTmplEdOutNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecIdePTmplEdOutNextCellSel: SetSingle(VK_TAB,[]);
ecIdePTmplEdOutNextCellRotate: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecIdePTmplEdOutPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecIdePTmplEdOutCellHome: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutCellEnd: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutCellSelect: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutFinish: SetSingle(VK_RETURN,[]);
ecIdePTmplEdOutEscape: SetSingle(VK_ESCAPE,[]);
// SyncroEdit
ecIdePSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecIdePSyncroEdNextCellSel: SetSingle(VK_TAB,[]);
ecIdePSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecIdePSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecIdePSyncroEdCellHome: SetSingle(VK_HOME,[]);
ecIdePSyncroEdCellEnd: SetSingle(VK_END,[]);
ecIdePSyncroEdCellSelect: SetSingle(VK_A,[ssCtrl]);
ecIdePSyncroEdEscape: SetSingle(VK_ESCAPE,[]);
// SyncroEdit
ecIdePSyncroEdOutNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecIdePSyncroEdOutNextCellSel: SetSingle(VK_TAB,[]);
ecIdePSyncroEdOutPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecIdePSyncroEdOutPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecIdePSyncroEdOutCellHome: SetSingle(VK_UNKNOWN,[]);
ecIdePSyncroEdOutCellEnd: SetSingle(VK_UNKNOWN,[]);
ecIdePSyncroEdOutCellSelect: SetSingle(VK_UNKNOWN,[]);
ecIdePSyncroEdOutEscape: SetSingle(VK_ESCAPE,[]);
// SyncroEdit, during selection
ecIdePSyncroEdSelStart: SetSingle(VK_J,[ssCtrl]);
else
begin
SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]);
case TSynPluginTemplateEdit.ConvertCommandToBase(Command) of
// Edit template
ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecSynPTmplEdNextCellSel: SetSingle(VK_TAB,[]);
ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecSynPTmplEdCellHome: SetSingle(VK_HOME,[]);
ecSynPTmplEdCellEnd: SetSingle(VK_END,[]);
ecSynPTmplEdCellSelect: SetSingle(VK_A,[ssCtrl]);
ecSynPTmplEdFinish: SetSingle(VK_RETURN,[]);
ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[]);
end;
case TSynPluginTemplateEdit.ConvertCommandToBaseOff(Command) of
// Edit template
ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecSynPTmplEdNextCellSel: SetSingle(VK_TAB,[]);
ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecSynPTmplEdCellHome: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdCellEnd: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdCellSelect: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdFinish: SetSingle(VK_RETURN,[]);
ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[]);
end;
case TSynPluginSyncroEdit.ConvertCommandToBase(Command) of
// SyncroEdit
ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB,[]);
ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecSynPSyncroEdCellHome: SetSingle(VK_HOME,[]);
ecSynPSyncroEdCellEnd: SetSingle(VK_END,[]);
ecSynPSyncroEdCellSelect: SetSingle(VK_A,[ssCtrl]);
ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[]);
end;
case TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command) of
// SyncroEdit
ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB,[]);
ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecSynPSyncroEdCellHome: SetSingle(VK_UNKNOWN,[]);
ecSynPSyncroEdCellEnd: SetSingle(VK_UNKNOWN,[]);
ecSynPSyncroEdCellSelect: SetSingle(VK_UNKNOWN,[]);
ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[]);
end;
case TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command) of
// SyncroEdit, during selection
ecSynPSyncroEdStart: SetSingle(VK_J,[ssCtrl]);
end;
end;
end;
(*//F1 Topic Search
@ -2257,63 +2240,54 @@ begin
ecDesignerForwardOne: SetSingle(VK_PRIOR,[ssMeta]);
ecDesignerBackOne: SetSingle(VK_NEXT,[ssMeta]);
// Edit template
ecIdePTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecIdePTmplEdNextCellSel: SetSingle(VK_TAB,[]);
ecIdePTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecIdePTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecIdePTmplEdCellHome: SetSingle(VK_HOME,[]);
ecIdePTmplEdCellEnd: SetSingle(VK_END,[]);
ecIdePTmplEdCellSelect: SetSingle(VK_A,[ssCtrl]);
ecIdePTmplEdFinish: SetSingle(VK_RETURN,[]);
ecIdePTmplEdEscape: SetSingle(VK_ESCAPE,[]);
// Edit template
ecIdePTmplEdOutNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecIdePTmplEdOutNextCellSel: SetSingle(VK_TAB,[]);
ecIdePTmplEdOutNextCellRotate: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecIdePTmplEdOutPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecIdePTmplEdOutCellHome: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutCellEnd: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutCellSelect: SetSingle(VK_UNKNOWN,[]);
ecIdePTmplEdOutFinish: SetSingle(VK_RETURN,[]);
ecIdePTmplEdOutEscape: SetSingle(VK_ESCAPE,[]);
// SyncroEdit
ecIdePSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecIdePSyncroEdNextCellSel: SetSingle(VK_TAB,[]);
ecIdePSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecIdePSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecIdePSyncroEdCellHome: SetSingle(VK_HOME,[]);
ecIdePSyncroEdCellEnd: SetSingle(VK_END,[]);
ecIdePSyncroEdCellSelect: SetSingle(VK_A,[ssCtrl]);
ecIdePSyncroEdEscape: SetSingle(VK_ESCAPE,[]);
// SyncroEdit
ecIdePSyncroEdOutNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecIdePSyncroEdOutNextCellSel: SetSingle(VK_TAB,[]);
ecIdePSyncroEdOutPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecIdePSyncroEdOutPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecIdePSyncroEdOutCellHome: SetSingle(VK_UNKNOWN,[]);
ecIdePSyncroEdOutCellEnd: SetSingle(VK_UNKNOWN,[]);
ecIdePSyncroEdOutCellSelect: SetSingle(VK_UNKNOWN,[]);
ecIdePSyncroEdOutEscape: SetSingle(VK_ESCAPE,[]);
// SyncroEdit, during selection
ecIdePSyncroEdSelStart: SetSingle(VK_J,[ssCtrl]);
else
begin
SetSingle(VK_UNKNOWN,[]);
case TSynPluginTemplateEdit.ConvertCommandToBase(Command) of
// Edit template
ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecSynPTmplEdNextCellSel: SetSingle(VK_TAB,[]);
ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecSynPTmplEdCellHome: SetSingle(VK_HOME,[]);
ecSynPTmplEdCellEnd: SetSingle(VK_END,[]);
ecSynPTmplEdCellSelect: SetSingle(VK_A,[ssCtrl]);
ecSynPTmplEdFinish: SetSingle(VK_RETURN,[]);
ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[]);
end;
case TSynPluginTemplateEdit.ConvertCommandToBaseOff(Command) of
// Edit template
ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecSynPTmplEdNextCellSel: SetSingle(VK_TAB,[]);
ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecSynPTmplEdCellHome: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdCellEnd: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdCellSelect: SetSingle(VK_UNKNOWN,[]);
ecSynPTmplEdFinish: SetSingle(VK_RETURN,[]);
ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[]);
end;
case TSynPluginSyncroEdit.ConvertCommandToBase(Command) of
// SyncroEdit
ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB,[]);
ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecSynPSyncroEdCellHome: SetSingle(VK_HOME,[]);
ecSynPSyncroEdCellEnd: SetSingle(VK_END,[]);
ecSynPSyncroEdCellSelect: SetSingle(VK_A,[ssCtrl]);
ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[]);
end;
case TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command) of
// SyncroEdit
ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]);
ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB,[]);
ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]);
ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]);
ecSynPSyncroEdCellHome: SetSingle(VK_UNKNOWN,[]);
ecSynPSyncroEdCellEnd: SetSingle(VK_UNKNOWN,[]);
ecSynPSyncroEdCellSelect: SetSingle(VK_UNKNOWN,[]);
ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[]);
end;
case TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command) of
// SyncroEdit, during selection
ecSynPSyncroEdStart: SetSingle(VK_J,[ssCtrl]);
end;
end;
end;
end;
@ -2396,7 +2370,6 @@ procedure TKeyCommandRelationList.CreateDefaultMapping;
// create default keymapping
var
C: TIDECommandCategory;
o: LongInt;
begin
Clear;
// moving
@ -2637,62 +2610,57 @@ begin
// Template editing
C:=Categories[AddCategory('Edit Template', srkmCatTemplateEdit, IDECmdScopeSrcEditOnlyTmplEdit)];
o := TSynPluginTemplateEdit.ConvertBaseToCommand(ecPluginFirst) - ecPluginFirst;
AddDefault(C, 'Edit Template Next Cell', srkmecSynPTmplEdNextCell, ecSynPTmplEdNextCell + o);
AddDefault(C, 'Edit Template Next Cell (all selected)', srkmecSynPTmplEdNextCellSel, ecSynPTmplEdNextCellSel + o);
AddDefault(C, 'Edit Template Next Cell (rotate)', srkmecSynPTmplEdNextCellRotate, ecSynPTmplEdNextCellRotate + o);
AddDefault(C, 'Edit Template Next Cell (rotate / all selected)', srkmecSynPTmplEdNextCellSelRotate, ecSynPTmplEdNextCellSelRotate + o);
AddDefault(C, 'Edit Template Previous Cell', srkmecSynPTmplEdPrevCell, ecSynPTmplEdPrevCell + o);
AddDefault(C, 'Edit Template Previous Cell (all selected)', srkmecSynPTmplEdPrevCellSel, ecSynPTmplEdPrevCellSel + o);
AddDefault(C, 'Edit Template Goto first pos in cell', srkmecSynPTmplEdCellHome, ecSynPTmplEdCellHome + o);
AddDefault(C, 'Edit Template Goto last pos in cell', srkmecSynPTmplEdCellEnd, ecSynPTmplEdCellEnd + o);
AddDefault(C, 'Edit Template Select cell', srkmecSynPTmplEdCellSelect, ecSynPTmplEdCellSelect + o);
AddDefault(C, 'Edit Template Finish', srkmecSynPTmplEdFinish, ecSynPTmplEdFinish + o);
AddDefault(C, 'Edit Template Escape', srkmecSynPTmplEdEscape, ecSynPTmplEdEscape + o);
AddDefault(C, 'Edit Template Next Cell', srkmecSynPTmplEdNextCell, ecIdePTmplEdNextCell);
AddDefault(C, 'Edit Template Next Cell (all selected)', srkmecSynPTmplEdNextCellSel, ecIdePTmplEdNextCellSel);
AddDefault(C, 'Edit Template Next Cell (rotate)', srkmecSynPTmplEdNextCellRotate, ecIdePTmplEdNextCellRotate);
AddDefault(C, 'Edit Template Next Cell (rotate / all selected)', srkmecSynPTmplEdNextCellSelRotate, ecIdePTmplEdNextCellSelRotate);
AddDefault(C, 'Edit Template Previous Cell', srkmecSynPTmplEdPrevCell, ecIdePTmplEdPrevCell);
AddDefault(C, 'Edit Template Previous Cell (all selected)', srkmecSynPTmplEdPrevCellSel, ecIdePTmplEdPrevCellSel);
AddDefault(C, 'Edit Template Goto first pos in cell', srkmecSynPTmplEdCellHome, ecIdePTmplEdCellHome);
AddDefault(C, 'Edit Template Goto last pos in cell', srkmecSynPTmplEdCellEnd, ecIdePTmplEdCellEnd);
AddDefault(C, 'Edit Template Select cell', srkmecSynPTmplEdCellSelect, ecIdePTmplEdCellSelect);
AddDefault(C, 'Edit Template Finish', srkmecSynPTmplEdFinish, ecIdePTmplEdFinish);
AddDefault(C, 'Edit Template Escape', srkmecSynPTmplEdEscape, ecIdePTmplEdEscape);
// Template editing not in cell
C:=Categories[AddCategory('Edit Template Off', srkmCatTemplateEditOff, IDECmdScopeSrcEditOnlyTmplEditOff)];
o := TSynPluginTemplateEdit.ConvertBaseToCommandOff(ecPluginFirst) - ecPluginFirst;
AddDefault(C, 'Edit Template (off) Next Cell', srkmecSynPTmplEdNextCell, ecSynPTmplEdNextCell + o);
AddDefault(C, 'Edit Template (off) Next Cell (all selected)', srkmecSynPTmplEdNextCellSel, ecSynPTmplEdNextCellSel + o);
AddDefault(C, 'Edit Template (off) Next Cell (rotate)', srkmecSynPTmplEdNextCellRotate, ecSynPTmplEdNextCellRotate + o);
AddDefault(C, 'Edit Template (off) Next Cell (rotate / all selected)', srkmecSynPTmplEdNextCellSelRotate, ecSynPTmplEdNextCellSelRotate + o);
AddDefault(C, 'Edit Template (off) Previous Cell', srkmecSynPTmplEdPrevCell, ecSynPTmplEdPrevCell + o);
AddDefault(C, 'Edit Template (off) Previous Cell (all selected)', srkmecSynPTmplEdPrevCellSel, ecSynPTmplEdPrevCellSel + o);
AddDefault(C, 'Edit Template (off) Goto first pos in cell', srkmecSynPTmplEdCellHome, ecSynPTmplEdCellHome + o);
AddDefault(C, 'Edit Template (off) Goto last pos in cell', srkmecSynPTmplEdCellEnd, ecSynPTmplEdCellEnd + o);
AddDefault(C, 'Edit Template (off) Select cell', srkmecSynPTmplEdCellSelect, ecSynPTmplEdCellSelect + o);
AddDefault(C, 'Edit Template (off) Finish', srkmecSynPTmplEdFinish, ecSynPTmplEdFinish + o);
AddDefault(C, 'Edit Template (off) Escape', srkmecSynPTmplEdEscape, ecSynPTmplEdEscape + o);
AddDefault(C, 'Edit Template (off) Next Cell', srkmecSynPTmplEdNextCell, ecIdePTmplEdOutNextCell);
AddDefault(C, 'Edit Template (off) Next Cell (all selected)', srkmecSynPTmplEdNextCellSel, ecIdePTmplEdOutNextCellSel);
AddDefault(C, 'Edit Template (off) Next Cell (rotate)', srkmecSynPTmplEdNextCellRotate, ecIdePTmplEdOutNextCellRotate);
AddDefault(C, 'Edit Template (off) Next Cell (rotate / all selected)', srkmecSynPTmplEdNextCellSelRotate, ecIdePTmplEdOutNextCellSelRotate);
AddDefault(C, 'Edit Template (off) Previous Cell', srkmecSynPTmplEdPrevCell, ecIdePTmplEdOutPrevCell);
AddDefault(C, 'Edit Template (off) Previous Cell (all selected)', srkmecSynPTmplEdPrevCellSel, ecIdePTmplEdOutPrevCellSel);
AddDefault(C, 'Edit Template (off) Goto first pos in cell', srkmecSynPTmplEdCellHome, ecIdePTmplEdOutCellHome);
AddDefault(C, 'Edit Template (off) Goto last pos in cell', srkmecSynPTmplEdCellEnd, ecIdePTmplEdOutCellEnd);
AddDefault(C, 'Edit Template (off) Select cell', srkmecSynPTmplEdCellSelect, ecIdePTmplEdOutCellSelect);
AddDefault(C, 'Edit Template (off) Finish', srkmecSynPTmplEdFinish, ecIdePTmplEdOutFinish);
AddDefault(C, 'Edit Template (off) Escape', srkmecSynPTmplEdEscape, ecIdePTmplEdOutEscape);
// Syncro editing
C:=Categories[AddCategory('Syncro Edit', srkmCatSyncroEdit, IDECmdScopeSrcEditOnlySyncroEdit)];
o := TSynPluginSyncroEdit.ConvertBaseToCommand(ecPluginFirst) - ecPluginFirst;
AddDefault(C, 'Edit Syncro Next Cell', srkmecSynPSyncroEdNextCell, ecSynPSyncroEdNextCell + o);
AddDefault(C, 'Edit Syncro Next Cell (all selected)', srkmecSynPSyncroEdNextCellSel, ecSynPSyncroEdNextCellSel + o);
AddDefault(C, 'Edit Syncro Previous Cell', srkmecSynPSyncroEdPrevCell, ecSynPSyncroEdPrevCell + o);
AddDefault(C, 'Edit Syncro Previous Cell (all selected)', srkmecSynPSyncroEdPrevCellSel, ecSynPSyncroEdPrevCellSel + o);
AddDefault(C, 'Edit Syncro Goto first pos in cell', srkmecSynPSyncroEdCellHome, ecSynPSyncroEdCellHome + o);
AddDefault(C, 'Edit Syncro Goto last pos in cell', srkmecSynPSyncroEdCellEnd, ecSynPSyncroEdCellEnd + o);
AddDefault(C, 'Edit Syncro Select cell', srkmecSynPSyncroEdCellSelect, ecSynPSyncroEdCellSelect + o);
AddDefault(C, 'Edit Syncro Escape', srkmecSynPSyncroEdEscape, ecSynPSyncroEdEscape + o);
AddDefault(C, 'Edit Syncro Next Cell', srkmecSynPSyncroEdNextCell, ecIdePSyncroEdNextCell);
AddDefault(C, 'Edit Syncro Next Cell (all selected)', srkmecSynPSyncroEdNextCellSel, ecIdePSyncroEdNextCellSel);
AddDefault(C, 'Edit Syncro Previous Cell', srkmecSynPSyncroEdPrevCell, ecIdePSyncroEdPrevCell);
AddDefault(C, 'Edit Syncro Previous Cell (all selected)', srkmecSynPSyncroEdPrevCellSel, ecIdePSyncroEdPrevCellSel);
AddDefault(C, 'Edit Syncro Goto first pos in cell', srkmecSynPSyncroEdCellHome, ecIdePSyncroEdCellHome);
AddDefault(C, 'Edit Syncro Goto last pos in cell', srkmecSynPSyncroEdCellEnd, ecIdePSyncroEdCellEnd);
AddDefault(C, 'Edit Syncro Select cell', srkmecSynPSyncroEdCellSelect, ecIdePSyncroEdCellSelect);
AddDefault(C, 'Edit Syncro Escape', srkmecSynPSyncroEdEscape, ecIdePSyncroEdEscape);
// Syncro editing not in cell
C:=Categories[AddCategory('Syncro Edit Off', srkmCatSyncroEditOff, IDECmdScopeSrcEditOnlySyncroEditOff)];
o := TSynPluginSyncroEdit.ConvertBaseToCommandOff(ecPluginFirst) - ecPluginFirst;
AddDefault(C, 'Edit Syncro (off) Next Cell', srkmecSynPSyncroEdNextCell, ecSynPSyncroEdNextCell + o);
AddDefault(C, 'Edit Syncro (off) Next Cell (all selected)', srkmecSynPSyncroEdNextCellSel, ecSynPSyncroEdNextCellSel + o);
AddDefault(C, 'Edit Syncro (off) Previous Cell', srkmecSynPSyncroEdPrevCell, ecSynPSyncroEdPrevCell + o);
AddDefault(C, 'Edit Syncro (off) Previous Cell (all selected)', srkmecSynPSyncroEdPrevCellSel, ecSynPSyncroEdPrevCellSel + o);
AddDefault(C, 'Edit Syncro (off) Goto first pos in cell', srkmecSynPSyncroEdCellHome, ecSynPSyncroEdCellHome + o);
AddDefault(C, 'Edit Syncro (off) Goto last pos in cell', srkmecSynPSyncroEdCellEnd, ecSynPSyncroEdCellEnd + o);
AddDefault(C, 'Edit Syncro (off) Select cell', srkmecSynPSyncroEdCellSelect, ecSynPSyncroEdCellSelect + o);
AddDefault(C, 'Edit Syncro (off) Escape', srkmecSynPSyncroEdEscape, ecSynPSyncroEdEscape + o);
AddDefault(C, 'Edit Syncro (off) Next Cell', srkmecSynPSyncroEdNextCell, ecIdePSyncroEdOutNextCell);
AddDefault(C, 'Edit Syncro (off) Next Cell (all selected)', srkmecSynPSyncroEdNextCellSel, ecIdePSyncroEdOutNextCellSel);
AddDefault(C, 'Edit Syncro (off) Previous Cell', srkmecSynPSyncroEdPrevCell, ecIdePSyncroEdOutPrevCell);
AddDefault(C, 'Edit Syncro (off) Previous Cell (all selected)', srkmecSynPSyncroEdPrevCellSel, ecIdePSyncroEdOutPrevCellSel);
AddDefault(C, 'Edit Syncro (off) Goto first pos in cell', srkmecSynPSyncroEdCellHome, ecIdePSyncroEdOutCellHome);
AddDefault(C, 'Edit Syncro (off) Goto last pos in cell', srkmecSynPSyncroEdCellEnd, ecIdePSyncroEdOutCellEnd);
AddDefault(C, 'Edit Syncro (off) Select cell', srkmecSynPSyncroEdCellSelect, ecIdePSyncroEdOutCellSelect);
AddDefault(C, 'Edit Syncro (off) Escape', srkmecSynPSyncroEdEscape, ecIdePSyncroEdOutEscape);
// Syncro editing still selecting
C:=Categories[AddCategory('Syncro Edit Sel', srkmCatSyncroEditSel, IDECmdScopeSrcEditOnlySyncroEditSel)];
o := TSynPluginSyncroEdit.ConvertBaseToCommandSel(ecPluginFirst) - ecPluginFirst;
AddDefault(C, 'Edit Syncro (sel) Start', srkmecSynPSyncroEdStart, ecSynPSyncroEdStart + o);
AddDefault(C, 'Edit Syncro (sel) Start', srkmecSynPSyncroEdStart, ecIdePSyncroEdSelStart);
// source notebook - without menu items in the IDE bar
C:=Categories[AddCategory('SourceNotebook',srkmCatSrcNoteBook,IDECmdScopeSrcEdit)];
@ -3284,15 +3252,26 @@ begin
end;
end;
procedure TKeyCommandRelationList.AssignTo(
ASynEditKeyStrokes: TSynEditKeyStrokes; IDEWindowClass: TCustomFormClass);
procedure TKeyCommandRelationList.AssignTo(ASynEditKeyStrokes: TSynEditKeyStrokes;
IDEWindowClass: TCustomFormClass; ACommandOffsetOffset: Integer = 0);
var
i,j,MaxKeyCnt,KeyCnt:integer;
Key: TSynEditKeyStroke;
CurRelation: TKeyCommandRelation;
ccid: Word;
POUsed: Boolean;
begin
(* ACommandOffsetOffset
The IDE defines int's own fixed value command-id for plugins.
Map them to the plugin ID
- ecIdePTmplEdOutNextCell and ecIdePTmplEdNextCell both map to ecSynPTmplEdNextCell
- which maps to "ecPluginFirst + n", as many others.
But the IDE requires unique values.
The unique values in the plugin (+ KeyOffset) can not be used, a they are not at fixed numbers
*)
POUsed := ASynEditKeyStrokes.UsePluginOffset;
try
ASynEditKeyStrokes.UsePluginOffset := True;
ASynEditKeyStrokes.UsePluginOffset := False;
for i:=0 to FRelations.Count-1 do begin
CurRelation:=Relations[i];
if (CurRelation.ShortcutA.Key1=VK_UNKNOWN)
@ -3309,7 +3288,10 @@ begin
// replace keys
while j>=0 do begin
Key:=ASynEditKeyStrokes[j];
if Key.Command=CurRelation.Command then begin
ccid := CurRelation.Command;
if (ccid >= ecFirstPlugin) and (ccid < ecLastPlugin) then
ccid := ccid + ACommandOffsetOffset;
if Key.Command=ccid then begin
if KeyCnt>MaxKeyCnt then begin
// All keys with this command are already defined
// -> delete this one
@ -3354,7 +3336,10 @@ begin
// add missing keys
while KeyCnt<=MaxKeyCnt do begin
Key:=ASynEditKeyStrokes.Add;
Key.Command:=CurRelation.Command;
ccid := CurRelation.Command;
if (ccid >= ecFirstPlugin) and (ccid < ecLastPlugin) then
ccid := ccid + ACommandOffsetOffset;
Key.Command:=ccid;
if KeyCnt=1 then begin
Key.Key:=CurRelation.ShortcutA.Key1;
Key.Shift:=CurRelation.ShortcutA.Shift1;
@ -3370,7 +3355,7 @@ begin
end;
end;
finally
ASynEditKeyStrokes.UsePluginOffset := False;
ASynEditKeyStrokes.UsePluginOffset := POUsed;
end;
end;

View File

@ -323,8 +323,67 @@ const
ecDesignerForwardOne = ecFirstLazarus + 1006;
ecDesignerBackOne = ecFirstLazarus + 1007;
(* SynEdit Plugins
Define fixed values for the IDE. Must be mapped to plugincommands,
when assigned to KeyMap.
Offsets are defined in KeyMapping
See: TKeyCommandRelationList.AssignTo
*)
ecFirstPlugin = ecFirstLazarus + 5000; // 6001
ecLastPlugin = ecFirstLazarus + 6000; // 6001
// custom commands
ecLazarusLast = ecFirstLazarus + 2000;
ecLazarusLast = ecLastPlugin;
// TSynPluginTemplateEdit - In cell
ecIdePTmplEdNextCell = ecFirstPlugin + 0;
ecIdePTmplEdNextCellSel = ecFirstPlugin + 1;
ecIdePTmplEdNextCellRotate = ecFirstPlugin + 2;
ecIdePTmplEdNextCellSelRotate = ecFirstPlugin + 3;
ecIdePTmplEdPrevCell = ecFirstPlugin + 4;
ecIdePTmplEdPrevCellSel = ecFirstPlugin + 5;
ecIdePTmplEdCellHome = ecFirstPlugin + 6;
ecIdePTmplEdCellEnd = ecFirstPlugin + 7;
ecIdePTmplEdCellSelect = ecFirstPlugin + 8;
ecIdePTmplEdFinish = ecFirstPlugin + 9;
ecIdePTmplEdEscape = ecFirstPlugin + 10;
// TSynPluginTemplateEdit - Out off Cell
ecIdePTmplEdOutNextCell = ecFirstPlugin + 20;
ecIdePTmplEdOutNextCellSel = ecFirstPlugin + 21;
ecIdePTmplEdOutNextCellRotate = ecFirstPlugin + 22;
ecIdePTmplEdOutNextCellSelRotate = ecFirstPlugin + 23;
ecIdePTmplEdOutPrevCell = ecFirstPlugin + 24;
ecIdePTmplEdOutPrevCellSel = ecFirstPlugin + 25;
ecIdePTmplEdOutCellHome = ecFirstPlugin + 26;
ecIdePTmplEdOutCellEnd = ecFirstPlugin + 27;
ecIdePTmplEdOutCellSelect = ecFirstPlugin + 28;
ecIdePTmplEdOutFinish = ecFirstPlugin + 29;
ecIdePTmplEdOutEscape = ecFirstPlugin + 30;
// TSynPluginSyncroEdit - in celll
ecIdePSyncroEdNextCell = ecFirstPlugin + 50;
ecIdePSyncroEdNextCellSel = ecFirstPlugin + 51;
ecIdePSyncroEdPrevCell = ecFirstPlugin + 52;
ecIdePSyncroEdPrevCellSel = ecFirstPlugin + 53;
ecIdePSyncroEdCellHome = ecFirstPlugin + 54;
ecIdePSyncroEdCellEnd = ecFirstPlugin + 55;
ecIdePSyncroEdCellSelect = ecFirstPlugin + 56;
ecIdePSyncroEdEscape = ecFirstPlugin + 57;
// TSynPluginSyncroEdit - Out off cell
ecIdePSyncroEdOutNextCell = ecFirstPlugin + 70;
ecIdePSyncroEdOutNextCellSel = ecFirstPlugin + 71;
ecIdePSyncroEdOutPrevCell = ecFirstPlugin + 72;
ecIdePSyncroEdOutPrevCellSel = ecFirstPlugin + 73;
ecIdePSyncroEdOutCellHome = ecFirstPlugin + 74;
ecIdePSyncroEdOutCellEnd = ecFirstPlugin + 75;
ecIdePSyncroEdOutCellSelect = ecFirstPlugin + 76;
ecIdePSyncroEdOutEscape = ecFirstPlugin + 77;
// TSynPluginSyncroEdit - selecting
ecIdePSyncroEdSelStart = ecFirstPlugin + 90;
type
TIDECommand = class;