mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-23 11:19:10 +02:00
SynEdit: refactor plugin key handling / adding syncro edit to component palette.
git-svn-id: trunk@35429 -
This commit is contained in:
parent
e8124edb78
commit
ecd605e5bd
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -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
|
||||
|
@ -24,3 +24,4 @@ tsynvbsyn.png
|
||||
tsynbatsyn.png
|
||||
tsyninisyn.png
|
||||
tsynposyn.png
|
||||
tsynpluginsyncroedit.png
|
||||
|
BIN
components/synedit/design/tsynpluginsyncroedit.png
Normal file
BIN
components/synedit/design/tsynpluginsyncroedit.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 653 B |
@ -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
|
||||
|
@ -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
|
||||
]);
|
||||
|
@ -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);
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user