diff --git a/components/synedit/synpluginsyncroedit.pp b/components/synedit/synpluginsyncroedit.pp index fbd425230f..68f59da179 100644 --- a/components/synedit/synpluginsyncroedit.pp +++ b/components/synedit/synpluginsyncroedit.pp @@ -287,8 +287,12 @@ const ecSynPSyncroEdCellEnd = ecPluginFirst + 6; ecSynPSyncroEdCellSelect = ecPluginFirst + 7; ecSynPSyncroEdEscape = ecPluginFirst + 8; + ecSynPSyncroEdNextFirstCell = ecPluginFirst + 9; + ecSynPSyncroEdNextFirstCellSel = ecPluginFirst + 10; + ecSynPSyncroEdPrevFirstCell = ecPluginFirst + 11; + ecSynPSyncroEdPrevFirstCellSel = ecPluginFirst + 12; - ecSynPSyncroEdCount = 9; + ecSynPSyncroEdCount = 13; implementation @@ -1023,6 +1027,7 @@ var Line: String; x2, g: Integer; entry: PSynPluginSyncroEditWordsHashEntry; + f: Boolean; begin if FCallQueued then begin FEditModeQueued := True; @@ -1064,16 +1069,19 @@ begin x2 := WordBreaker.NextWordEnd(Line, Pos.x, True); if (Pos.y < EndPos.y) or (x2 <= EndPos.x) then begin entry := FWordIndex.GetWordP(@Line[Pos.x], x2-Pos.x); + f := False; if (entry <> nil) and (entry^.Count > 1) then begin; if (entry^.GrpId = 0) and (g <= MAX_SYNC_ED_WORDS) then begin entry^.GrpId := g; inc(g); + f := True; end; if (entry^.GrpId > 0) then with Cells.AddNew do begin LogStart := Pos; LogEnd := Point(x2, Pos.y); Group := entry^.GrpId; + FirstInGroup := f; end; end; @@ -1393,6 +1401,10 @@ begin ecSynPSyncroEdNextCellSel: NextCell(True, True); ecSynPSyncroEdPrevCell: PreviousCell(False, True); ecSynPSyncroEdPrevCellSel: PreviousCell(True, True); + ecSynPSyncroEdNextFirstCell: NextCell(False, True, True); + ecSynPSyncroEdNextFirstCellSel: NextCell(True, True, True); + ecSynPSyncroEdPrevFirstCell: PreviousCell(False, True, True); + ecSynPSyncroEdPrevFirstCellSel: PreviousCell(True, True, True); ecSynPSyncroEdCellHome: CellCaretHome; ecSynPSyncroEdCellEnd: CellCaretEnd; ecSynPSyncroEdCellSelect: SelectCurrentCell; @@ -1542,16 +1554,20 @@ begin 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') + EditorSyncroCommandStrs: array[0..12] 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'), + (Value: ecSynPSyncroEdNextFirstCell; Name: 'ecSynPSyncroEdNextFirstCell'), + (Value: ecSynPSyncroEdNextFirstCellSel; Name: 'ecSynPSyncroEdNextFirstCellSel'), + (Value: ecSynPSyncroEdPrevFirstCell; Name: 'ecSynPSyncroEdPrevFirstCell'), + (Value: ecSynPSyncroEdPrevFirstCellSel; Name: 'ecSynPSyncroEdPrevFirstCellSel') ); function IdentToSyncroCommand(const Ident: string; var Cmd: longint): boolean; diff --git a/components/synedit/synpluginsyncronizededitbase.pp b/components/synedit/synpluginsyncronizededitbase.pp index 36b96f7441..ff028cd924 100644 --- a/components/synedit/synpluginsyncronizededitbase.pp +++ b/components/synedit/synpluginsyncronizededitbase.pp @@ -36,14 +36,17 @@ type TSynPluginSyncronizedEditCell = class private + FFirstInGroup: Boolean; FLogStart, FLogEnd: TPoint; FGroup: Integer; public + constructor Create; procedure Assign(Src: TSynPluginSyncronizedEditCell); reintroduce; property LogStart: TPoint read FLogStart write FLogStart; property LogEnd: TPoint read FLogEnd write FLogEnd; property Group: Integer read FGroup write FGroup; + property FirstInGroup: Boolean read FFirstInGroup write FFirstInGroup; end; TSynPluginSyncronizedEditCellChangedEvent = procedure(aIndex: Integer; @@ -265,8 +268,8 @@ type property LastCell: Integer read FLastCell; protected procedure SelectCurrentCell(Reverse: Boolean = False); - procedure PreviousCell(SetSelect: Boolean = True; SkipSameIndex: Boolean = False); - procedure NextCell(SetSelect: Boolean = True; SkipSameIndex: Boolean = False); + procedure PreviousCell(SetSelect: Boolean = True; SkipSameIndex: Boolean = False; FirstsOnly: Boolean = False); + procedure NextCell(SetSelect: Boolean = True; SkipSameIndex: Boolean = False; FirstsOnly: Boolean = False); procedure CellCaretHome; procedure CellCaretEnd; public @@ -1136,12 +1139,18 @@ end; { TSynPluginSyncronizedEditCell } +constructor TSynPluginSyncronizedEditCell.Create; +begin + FFirstInGroup := False; +end; + procedure TSynPluginSyncronizedEditCell.Assign(Src: TSynPluginSyncronizedEditCell); begin if Src = nil then exit; FLogStart := Src.FLogStart; FLogEnd := Src.FLogEnd; FGroup := Src.FGroup; + FFirstInGroup := Src.FFirstInGroup; end; { TSynPluginCustomSyncroEdit } @@ -1301,7 +1310,8 @@ begin end; end; -procedure TSynPluginCustomSyncroEdit.PreviousCell(SetSelect: Boolean; SkipSameIndex: Boolean = False); +procedure TSynPluginCustomSyncroEdit.PreviousCell(SetSelect: Boolean; SkipSameIndex: Boolean; + FirstsOnly: Boolean); var i, j, x: Integer; Pos: TPoint; @@ -1326,8 +1336,10 @@ begin if i < 0 then i := Cells.Count - 1; until (j > Cells.Count) or - ((Cells[i].Group >= 0) and - ((not SkipSameIndex) or (Cells[i].Group <> x)) ); + ( (Cells[i].Group >= 0) and + ((not SkipSameIndex) or (Cells[i].Group <> x)) and + ((not FirstsOnly) or (Cells[i].FirstInGroup)) + ); CurrentCell := i; if CurrentCell < 0 then @@ -1339,7 +1351,8 @@ begin Editor.BlockBegin := Cells[CurrentCell].LogEnd; end; -procedure TSynPluginCustomSyncroEdit.NextCell(SetSelect: Boolean; SkipSameIndex: Boolean = False); +procedure TSynPluginCustomSyncroEdit.NextCell(SetSelect: Boolean; SkipSameIndex: Boolean; + FirstsOnly: Boolean); var Pos: TPoint; i, j, x: Integer; @@ -1365,8 +1378,10 @@ begin if i >= Cells.Count then i := 0 until (j > Cells.Count) or - ((Cells[i].Group >= 0) and - ((not SkipSameIndex) or (Cells[i].Group <> x)) ); + ( (Cells[i].Group >= 0) and + ((not SkipSameIndex) or (Cells[i].Group <> x)) and + ((not FirstsOnly) or (Cells[i].FirstInGroup)) + ); CurrentCell := i; if CurrentCell < 0 then exit; diff --git a/components/synedit/synplugintemplateedit.pp b/components/synedit/synplugintemplateedit.pp index b4bfb6e20d..2326bade21 100644 --- a/components/synedit/synplugintemplateedit.pp +++ b/components/synedit/synplugintemplateedit.pp @@ -66,7 +66,7 @@ type var Handled: boolean; var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer; HandlerData: pointer); - procedure NextCellOrFinal(SetSelect: Boolean = True); + procedure NextCellOrFinal(SetSelect: Boolean = True; FirstsOnly: Boolean = False); procedure SetFinalCaret; public constructor Create(AOwner: TComponent); override; @@ -97,8 +97,14 @@ const ecSynPTmplEdCellSelect = ecPluginFirst + 8; ecSynPTmplEdFinish = ecPluginFirst + 9; ecSynPTmplEdEscape = ecPluginFirst + 10; + ecSynPTmplEdNextFirstCell = ecPluginFirst + 11; + ecSynPTmplEdNextFirstCellSel = ecPluginFirst + 12; + ecSynPTmplEdNextFirstCellRotate = ecPluginFirst + 13; + ecSynPTmplEdNextFirstCellSelRotate = ecPluginFirst + 14; + ecSynPTmplEdPrevFirstCell = ecPluginFirst + 15; + ecSynPTmplEdPrevFirstCellSel = ecPluginFirst + 16; - ecSynPTmplEdCount = 10; + ecSynPTmplEdCount = 17; implementation @@ -222,6 +228,12 @@ begin ecSynPTmplEdNextCellSelRotate: NextCell(True); ecSynPTmplEdPrevCell: PreviousCell(False); ecSynPTmplEdPrevCellSel: PreviousCell(True); + ecSynPTmplEdNextFirstCell: NextCellOrFinal(False, True); + ecSynPTmplEdNextFirstCellSel: NextCellOrFinal(True, True); + ecSynPTmplEdNextFirstCellRotate: NextCell(False, False, True); + ecSynPTmplEdNextFirstCellSelRotate: NextCell(True, False, True); + ecSynPTmplEdPrevFirstCell: PreviousCell(False, False, True); + ecSynPTmplEdPrevFirstCellSel: PreviousCell(True, False, True); ecSynPTmplEdCellHome: CellCaretHome; ecSynPTmplEdCellEnd: CellCaretEnd; ecSynPTmplEdCellSelect: SelectCurrentCell; @@ -236,7 +248,7 @@ begin end; end; -procedure TSynPluginTemplateEdit.NextCellOrFinal(SetSelect: Boolean); +procedure TSynPluginTemplateEdit.NextCellOrFinal(SetSelect: Boolean; FirstsOnly: Boolean); var Pos: TPoint; i: Integer; @@ -257,7 +269,8 @@ begin SetFinalCaret; exit; end; - until (Cells[i].Group >= 0); + until (Cells[i].Group >= 0) and + ((not FirstsOnly) or (Cells[i].FirstInGroup)); CurrentCell := i; if CurrentCell < 0 then exit; @@ -332,6 +345,7 @@ begin LogStart := CellStart; LogEnd := Point(k +XOffs, CellStart.y); Group := grp; + FirstInGroup := True; end; inc(grp); CellStart.x := -1; diff --git a/ide/codetemplatesdlg.pas b/ide/codetemplatesdlg.pas index 9921d6fd6b..49e5d1c1bd 100644 --- a/ide/codetemplatesdlg.pas +++ b/ide/codetemplatesdlg.pas @@ -693,8 +693,10 @@ begin with TLazSynPluginSyncronizedEditCell(p.EditCellList.AddNew) do begin LogStart := Point(p.DestPosX, p.DestPosY); LogEnd := Point(p.DestPosX + length(Value), p.DestPosY); - if g < 0 then - Group := p.EditCellList.Count + if g < 0 then begin + Group := p.EditCellList.Count; + FirstInGroup := True; + end else Group := g; CellValue := Value; diff --git a/ide/keymapping.pp b/ide/keymapping.pp index 22245b8546..753a86c169 100644 --- a/ide/keymapping.pp +++ b/ide/keymapping.pp @@ -646,47 +646,67 @@ begin ecSynMacroPlay : Result:= srkmecSynMacroPlay; // 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; + ecIdePTmplEdNextCell: Result := srkmecSynPTmplEdNextCell; + ecIdePTmplEdNextCellSel: Result := srkmecSynPTmplEdNextCellSel; + ecIdePTmplEdNextCellRotate: Result := srkmecSynPTmplEdNextCellRotate; + ecIdePTmplEdNextCellSelRotate: Result := srkmecSynPTmplEdNextCellSelRotate; + ecIdePTmplEdPrevCell: Result := srkmecSynPTmplEdPrevCell; + ecIdePTmplEdPrevCellSel: Result := srkmecSynPTmplEdPrevCellSel; + ecIdePTmplEdNextFirstCell: Result := srkmecSynPTmplEdNextFirstCell; + ecIdePTmplEdNextFirstCellSel: Result := srkmecSynPTmplEdNextFirstCellSel; + ecIdePTmplEdNextFirstCellRotate: Result := srkmecSynPTmplEdNextFirstCellRotate; + ecIdePTmplEdNextFirstCellSelRotate: Result := srkmecSynPTmplEdNextFirstCellSelRotate; + ecIdePTmplEdPrevFirstCell: Result := srkmecSynPTmplEdPrevFirstCell; + ecIdePTmplEdPrevFirstCellSel: Result := srkmecSynPTmplEdPrevFirstCellSel; + 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; + ecIdePTmplEdOutNextCell: Result := srkmecSynPTmplEdNextCell; + ecIdePTmplEdOutNextCellSel: Result := srkmecSynPTmplEdNextCellSel; + ecIdePTmplEdOutNextCellRotate: Result := srkmecSynPTmplEdNextCellRotate; + ecIdePTmplEdOutNextCellSelRotate: Result := srkmecSynPTmplEdNextCellSelRotate; + ecIdePTmplEdOutPrevCell: Result := srkmecSynPTmplEdPrevCell; + ecIdePTmplEdOutPrevCellSel: Result := srkmecSynPTmplEdPrevCellSel; + ecIdePTmplEdOutNextFirstCell: Result := srkmecSynPTmplEdNextFirstCell; + ecIdePTmplEdOutNextFirstCellSel: Result := srkmecSynPTmplEdNextFirstCellSel; + ecIdePTmplEdOutNextFirstCellRotate: Result := srkmecSynPTmplEdNextFirstCellRotate; + ecIdePTmplEdOutNextFirstCellSelRotate: Result := srkmecSynPTmplEdNextFirstCellSelRotate; + ecIdePTmplEdOutPrevFirstCell: Result := srkmecSynPTmplEdPrevFirstCell; + ecIdePTmplEdOutPrevFirstCellSel: Result := srkmecSynPTmplEdPrevFirstCellSel; + 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; + ecIdePSyncroEdNextCell: Result := srkmecSynPSyncroEdNextCell; + ecIdePSyncroEdNextCellSel: Result := srkmecSynPSyncroEdNextCellSel; + ecIdePSyncroEdPrevCell: Result := srkmecSynPSyncroEdPrevCell; + ecIdePSyncroEdPrevCellSel: Result := srkmecSynPSyncroEdPrevCellSel; + ecIdePSyncroEdNextFirstCell: Result := srkmecSynPSyncroEdNextFirstCell; + ecIdePSyncroEdNextFirstCellSel: Result := srkmecSynPSyncroEdNextFirstCellSel; + ecIdePSyncroEdPrevFirstCell: Result := srkmecSynPSyncroEdPrevFirstCell; + ecIdePSyncroEdPrevFirstCellSel: Result := srkmecSynPSyncroEdPrevFirstCellSel; + 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; + ecIdePSyncroEdOutNextCell: Result := srkmecSynPSyncroEdNextCell; + ecIdePSyncroEdOutNextCellSel: Result := srkmecSynPSyncroEdNextCellSel; + ecIdePSyncroEdOutPrevCell: Result := srkmecSynPSyncroEdPrevCell; + ecIdePSyncroEdOutPrevCellSel: Result := srkmecSynPSyncroEdPrevCellSel; + ecIdePSyncroEdOutNextFirstCell: Result := srkmecSynPSyncroEdNextFirstCell; + ecIdePSyncroEdOutNextFirstCellSel: Result := srkmecSynPSyncroEdNextFirstCellSel; + ecIdePSyncroEdOutPrevFirstCell: Result := srkmecSynPSyncroEdPrevFirstCell; + ecIdePSyncroEdOutPrevFirstCellSel: Result := srkmecSynPSyncroEdPrevFirstCellSel; + ecIdePSyncroEdOutCellHome: Result := srkmecSynPSyncroEdCellHome; + ecIdePSyncroEdOutCellEnd: Result := srkmecSynPSyncroEdCellEnd; + ecIdePSyncroEdOutCellSelect: Result := srkmecSynPSyncroEdCellSelect; + ecIdePSyncroEdOutEscape: Result := srkmecSynPSyncroEdEscape; // SyncroEdit, during selection ecIdePSyncroEdSelStart: Result := srkmecSynPSyncroEdStart; @@ -2645,6 +2665,12 @@ begin 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 Next First Cell', srkmecSynPTmplEdNextFirstCell, ecIdePTmplEdNextFirstCell); + AddDefault(C, 'Edit Template Next First Cell (all selected)', srkmecSynPTmplEdNextFirstCellSel, ecIdePTmplEdNextFirstCellSel); + AddDefault(C, 'Edit Template Next First Cell (rotate)', srkmecSynPTmplEdNextFirstCellRotate, ecIdePTmplEdNextFirstCellRotate); + AddDefault(C, 'Edit Template Next First Cell (rotate / all selected)', srkmecSynPTmplEdNextFirstCellSelRotate, ecIdePTmplEdNextFirstCellSelRotate); + AddDefault(C, 'Edit Template Previous First Cell', srkmecSynPTmplEdPrevFirstCell, ecIdePTmplEdPrevFirstCell); + AddDefault(C, 'Edit Template Previous First Cell (all selected)', srkmecSynPTmplEdPrevFirstCellSel, ecIdePTmplEdPrevFirstCellSel); 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); @@ -2659,6 +2685,12 @@ begin 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) Next First Cell', srkmecSynPTmplEdNextFirstCell, ecIdePTmplEdOutNextFirstCell); + AddDefault(C, 'Edit Template (off) Next First Cell (all selected)', srkmecSynPTmplEdNextFirstCellSel, ecIdePTmplEdOutNextFirstCellSel); + AddDefault(C, 'Edit Template (off) Next First Cell (rotate)', srkmecSynPTmplEdNextFirstCellRotate, ecIdePTmplEdOutNextFirstCellRotate); + AddDefault(C, 'Edit Template (off) Next First Cell (rotate / all selected)', srkmecSynPTmplEdNextFirstCellSelRotate, ecIdePTmplEdOutNextFirstCellSelRotate); + AddDefault(C, 'Edit Template (off) Previous First Cell', srkmecSynPTmplEdPrevFirstCell, ecIdePTmplEdOutPrevFirstCell); + AddDefault(C, 'Edit Template (off) Previous First Cell (all selected)', srkmecSynPTmplEdPrevFirstCellSel, ecIdePTmplEdOutPrevFirstCellSel); 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); @@ -2671,6 +2703,10 @@ begin 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 Next First Cell', srkmecSynPSyncroEdNextFirstCell, ecIdePSyncroEdNextFirstCell); + AddDefault(C, 'Edit Syncro Next First Cell (all selected)', srkmecSynPSyncroEdNextFirstCellSel, ecIdePSyncroEdNextFirstCellSel); + AddDefault(C, 'Edit Syncro First Previous Cell', srkmecSynPSyncroEdPrevFirstCell, ecIdePSyncroEdPrevFirstCell); + AddDefault(C, 'Edit Syncro First Previous Cell (all selected)', srkmecSynPSyncroEdPrevFirstCellSel, ecIdePSyncroEdPrevFirstCellSel); 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); @@ -2682,6 +2718,10 @@ begin 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) Next First Cell', srkmecSynPSyncroEdNextFirstCell, ecIdePSyncroEdOutNextFirstCell); + AddDefault(C, 'Edit Syncro (off) Next First Cell (all selected)', srkmecSynPSyncroEdNextFirstCellSel, ecIdePSyncroEdOutNextFirstCellSel); + AddDefault(C, 'Edit Syncro (off) Previous First Cell', srkmecSynPSyncroEdPrevFirstCell, ecIdePSyncroEdOutPrevFirstCell); + AddDefault(C, 'Edit Syncro (off) Previous First Cell (all selected)', srkmecSynPSyncroEdPrevFirstCellSel, ecIdePSyncroEdOutPrevFirstCellSel); 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); diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index 822a4da51a..6ef97195f5 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -2769,6 +2769,12 @@ resourcestring srkmecSynPTmplEdNextCellSelRotate = 'Next Cell (rotate / all selected)'; srkmecSynPTmplEdPrevCell = 'Previous Cell'; srkmecSynPTmplEdPrevCellSel = 'Previous Cell (all selected)'; + srkmecSynPTmplEdNextFirstCell = 'Next Cell (firsts only)'; + srkmecSynPTmplEdNextFirstCellSel = 'Next Cell (all selected / firsts only)'; + srkmecSynPTmplEdNextFirstCellRotate = 'Next Cell (rotate / firsts only)'; + srkmecSynPTmplEdNextFirstCellSelRotate = 'Next Cell (rotate / all selected / firsts only)'; + srkmecSynPTmplEdPrevFirstCell = 'Previous Cell (firsts only)'; + srkmecSynPTmplEdPrevFirstCellSel = 'Previous Cell (all selected / firsts only)'; srkmecSynPTmplEdCellHome = 'Goto first pos in cell'; srkmecSynPTmplEdCellEnd = 'Goto last pos in cell'; srkmecSynPTmplEdCellSelect = 'Select cell'; @@ -2776,15 +2782,19 @@ resourcestring srkmecSynPTmplEdEscape = 'Escape'; // Plugin Syncro Edit - srkmecSynPSyncroEdNextCell = 'Next Cell'; - srkmecSynPSyncroEdNextCellSel = 'Next Cell (all selected)'; - srkmecSynPSyncroEdPrevCell = 'Previous Cell'; - srkmecSynPSyncroEdPrevCellSel = 'Previous Cell (all selected)'; - srkmecSynPSyncroEdCellHome = 'Goto first pos in cell'; - srkmecSynPSyncroEdCellEnd = 'Goto last pos in cell'; - srkmecSynPSyncroEdCellSelect = 'Select Cell'; - srkmecSynPSyncroEdEscape = 'Escape'; - srkmecSynPSyncroEdStart = 'Start Syncro edit'; + srkmecSynPSyncroEdNextCell = 'Next Cell'; + srkmecSynPSyncroEdNextCellSel = 'Next Cell (all selected)'; + srkmecSynPSyncroEdPrevCell = 'Previous Cell'; + srkmecSynPSyncroEdPrevCellSel = 'Previous Cell (all selected)'; + srkmecSynPSyncroEdNextFirstCell = 'Next Cell (firsts only)'; + srkmecSynPSyncroEdNextFirstCellSel = 'Next Cell (all selected / firsts only)'; + srkmecSynPSyncroEdPrevFirstCell = 'Previous Cell (firsts only)'; + srkmecSynPSyncroEdPrevFirstCellSel = 'Previous Cell (all selected / firsts only)'; + srkmecSynPSyncroEdCellHome = 'Goto first pos in cell'; + srkmecSynPSyncroEdCellEnd = 'Goto last pos in cell'; + srkmecSynPSyncroEdCellSelect = 'Select Cell'; + srkmecSynPSyncroEdEscape = 'Escape'; + srkmecSynPSyncroEdStart = 'Start Syncro edit'; // run menu srkmecCompile = 'compile program/project'; diff --git a/ideintf/idecommands.pas b/ideintf/idecommands.pas index eba39b4c95..6808638384 100644 --- a/ideintf/idecommands.pas +++ b/ideintf/idecommands.pas @@ -354,6 +354,12 @@ const ecIdePTmplEdCellSelect = ecFirstPlugin + 8; ecIdePTmplEdFinish = ecFirstPlugin + 9; ecIdePTmplEdEscape = ecFirstPlugin + 10; + ecIdePTmplEdNextFirstCell = ecFirstPlugin + 11; + ecIdePTmplEdNextFirstCellSel = ecFirstPlugin + 12; + ecIdePTmplEdNextFirstCellRotate = ecFirstPlugin + 13; + ecIdePTmplEdNextFirstCellSelRotate = ecFirstPlugin + 14; + ecIdePTmplEdPrevFirstCell = ecFirstPlugin + 15; + ecIdePTmplEdPrevFirstCellSel = ecFirstPlugin + 16; // TSynPluginTemplateEdit - Out off Cell ecIdePTmplEdOutNextCell = ecFirstPlugin + 20; @@ -367,6 +373,12 @@ const ecIdePTmplEdOutCellSelect = ecFirstPlugin + 28; ecIdePTmplEdOutFinish = ecFirstPlugin + 29; ecIdePTmplEdOutEscape = ecFirstPlugin + 30; + ecIdePTmplEdOutNextFirstCell = ecFirstPlugin + 31; + ecIdePTmplEdOutNextFirstCellSel = ecFirstPlugin + 32; + ecIdePTmplEdOutNextFirstCellRotate = ecFirstPlugin + 33; + ecIdePTmplEdOutNextFirstCellSelRotate = ecFirstPlugin + 34; + ecIdePTmplEdOutPrevFirstCell = ecFirstPlugin + 35; + ecIdePTmplEdOutPrevFirstCellSel = ecFirstPlugin + 36; // TSynPluginSyncroEdit - in celll ecIdePSyncroEdNextCell = ecFirstPlugin + 50; @@ -377,6 +389,10 @@ const ecIdePSyncroEdCellEnd = ecFirstPlugin + 55; ecIdePSyncroEdCellSelect = ecFirstPlugin + 56; ecIdePSyncroEdEscape = ecFirstPlugin + 57; + ecIdePSyncroEdNextFirstCell = ecFirstPlugin + 58; + ecIdePSyncroEdNextFirstCellSel = ecFirstPlugin + 59; + ecIdePSyncroEdPrevFirstCell = ecFirstPlugin + 60; + ecIdePSyncroEdPrevFirstCellSel = ecFirstPlugin + 61; // TSynPluginSyncroEdit - Out off cell ecIdePSyncroEdOutNextCell = ecFirstPlugin + 70; @@ -387,6 +403,10 @@ const ecIdePSyncroEdOutCellEnd = ecFirstPlugin + 75; ecIdePSyncroEdOutCellSelect = ecFirstPlugin + 76; ecIdePSyncroEdOutEscape = ecFirstPlugin + 77; + ecIdePSyncroEdOutNextFirstCell = ecFirstPlugin + 78; + ecIdePSyncroEdOutNextFirstCellSel = ecFirstPlugin + 79; + ecIdePSyncroEdOutPrevFirstCell = ecFirstPlugin + 80; + ecIdePSyncroEdOutPrevFirstCellSel = ecFirstPlugin + 81; // TSynPluginSyncroEdit - selecting ecIdePSyncroEdSelStart = ecFirstPlugin + 90;