166
121
property Ranges[Index: Pointer]: TSynManagedStorageMem read GetRange write PutRange;
171
TSynEditStrings = class(TSynEditStringsBase)
173
FSenderUpdateCount: Integer;
174
FLogPhysConvertor :TSynLogicalPhysicalConvertor;
177
function GetIsUtf8 : Boolean; virtual;
178
procedure SetIsUtf8(const AValue : Boolean); virtual;
180
function GetExpandedString(Index: integer): string; virtual; abstract;
181
function GetLengthOfLongestLine: integer; virtual; abstract;
182
procedure SetTextStr(const Value: string); override;
183
function GetTextChangeStamp: int64; virtual; abstract;
184
function GetViewChangeStamp: int64; virtual;
186
function GetUndoList: TSynEditUndoList; virtual; abstract;
187
function GetRedoList: TSynEditUndoList; virtual; abstract;
188
function GetCurUndoList: TSynEditUndoList; virtual; abstract;
189
procedure SetIsUndoing(const AValue: Boolean); virtual; abstract;
190
function GetIsUndoing: Boolean; virtual; abstract;
191
procedure SetIsRedoing(const AValue: Boolean); virtual; abstract;
192
function GetIsRedoing: Boolean; virtual; abstract;
193
procedure IgnoreSendNotification(AReason: TSynEditNotifyReason;
194
ReEnable: Boolean); virtual; abstract;
196
procedure SetUpdateState(Updating: Boolean); override;
197
procedure SetUpdateState(Updating: Boolean; Sender: TObject); virtual; abstract;
199
procedure DoGetPhysicalCharWidths(Line: PChar; LineLen, Index: Integer; PWidths: PPhysicalCharWidth); virtual; abstract;
202
destructor Destroy; override;
203
procedure BeginUpdate(Sender: TObject); overload;
204
procedure EndUpdate(Sender: TObject); overload;
205
function IsUpdating: Boolean;
206
procedure DeleteLines(Index, NumLines: integer); virtual; abstract;
207
procedure InsertLines(Index, NumLines: integer); virtual; abstract;
208
procedure InsertStrings(Index: integer; NewStrings: TStrings); virtual; abstract;
210
procedure AddGenericHandler(AReason: TSynEditNotifyReason;
211
AHandler: TMethod); virtual; abstract;
212
procedure AddChangeHandler(AReason: TSynEditNotifyReason;
213
AHandler: TStringListLineCountEvent);
214
procedure AddNotifyHandler(AReason: TSynEditNotifyReason;
215
AHandler: TNotifyEvent);
217
procedure RemoveGenericHandler(AReason: TSynEditNotifyReason;
218
AHandler: TMethod); virtual; abstract;
219
procedure RemoveChangeHandler(AReason: TSynEditNotifyReason;
220
AHandler: TStringListLineCountEvent);
221
procedure RemoveNotifyHandler(AReason: TSynEditNotifyReason;
222
AHandler: TNotifyEvent);
224
procedure AddEditHandler(AHandler: TStringListLineEditEvent);
225
procedure RemoveEditHandler(AHandler: TStringListLineEditEvent);
226
procedure SendHighlightChanged(aIndex, aCount: Integer); override;
227
procedure SendNotification(AReason: TSynEditNotifyReason;
228
ASender: TSynEditStrings; aIndex, aCount: Integer;
229
aBytePos: Integer = -1; aLen: Integer = 0;
230
aTxt: String = ''); virtual; abstract;
231
procedure SendNotification(AReason: TSynEditNotifyReason;
232
ASender: TObject); virtual; abstract;
233
procedure FlushNotificationCache; virtual; abstract;
235
function GetPhysicalCharWidths(Index: Integer): TPhysicalCharWidths;
236
function GetPhysicalCharWidths(Line: PChar; LineLen, Index: Integer): TPhysicalCharWidths;
238
function LogicalToPhysicalPos(const p: TPoint): TPoint;
239
function LogicalToPhysicalCol(const Line: String;
240
Index, LogicalPos: integer): integer; virtual;
242
function PhysicalToLogicalPos(const p: TPoint): TPoint;
243
function PhysicalToLogicalCol(const Line: string;
244
Index, PhysicalPos: integer): integer; virtual;
245
property LogPhysConvertor :TSynLogicalPhysicalConvertor read FLogPhysConvertor;
247
procedure EditInsert(LogX, LogY: Integer; AText: String); virtual; abstract;
248
function EditDelete(LogX, LogY, ByteLen: Integer): String; virtual; abstract;
249
procedure EditLineBreak(LogX, LogY: Integer); virtual; abstract;
250
procedure EditLineJoin(LogY: Integer; FillText: String = ''); virtual; abstract;
251
procedure EditLinesInsert(LogY, ACount: Integer; AText: String = ''); virtual; abstract;
252
procedure EditLinesDelete(LogY, ACount: Integer); virtual; abstract;
253
procedure EditUndo(Item: TSynEditUndoItem); virtual; abstract;
254
procedure EditRedo(Item: TSynEditUndoItem); virtual; abstract;
255
property UndoList: TSynEditUndoList read GetUndoList;
256
property RedoList: TSynEditUndoList read GetRedoList;
257
property CurUndoList: TSynEditUndoList read GetCurUndoList; // Re or Undo (Redo while undoing)
258
property IsUndoing: Boolean read GetIsUndoing write SetIsUndoing;
259
property IsRedoing: Boolean read GetIsRedoing write SetIsRedoing;
261
property TextChangeStamp: int64 read GetTextChangeStamp;
262
property ViewChangeStamp: int64 read GetViewChangeStamp; // tabs-size, trailing-spaces, ...
263
property ExpandedStrings[Index: integer]: string read GetExpandedString;
264
property LengthOfLongestLine: integer read GetLengthOfLongestLine;
265
property IsUtf8: Boolean read GetIsUtf8 write SetIsUtf8;
268
{ TSynEditStringsLinked }
270
TSynEditStringsLinked = class(TSynEditStrings)
272
fSynStrings: TSynEditStrings;
274
function GetIsUtf8 : Boolean; override;
275
procedure SetIsUtf8(const AValue : Boolean); override;
276
function GetTextChangeStamp: int64; override;
277
function GetViewChangeStamp: int64; override;
279
function GetRange(Index: Pointer): TSynManagedStorageMem; override;
280
procedure PutRange(Index: Pointer; const ARange: TSynManagedStorageMem); override;
282
function GetExpandedString(Index: integer): string; override;
283
function GetLengthOfLongestLine: integer; override;
285
procedure IgnoreSendNotification(AReason: TSynEditNotifyReason;
286
IncIgnore: Boolean); override;
287
function GetUndoList: TSynEditUndoList; override;
288
function GetRedoList: TSynEditUndoList; override;
289
function GetCurUndoList: TSynEditUndoList; override;
290
procedure SetIsUndoing(const AValue: Boolean); override;
291
function GetIsUndoing: Boolean; override;
292
procedure SetIsRedoing(const AValue: Boolean); override;
293
function GetIsRedoing: Boolean; override;
295
function GetCount: integer; override;
296
function GetCapacity: integer;
297
{$IFDEF SYN_COMPILER_3_UP} override; {$ELSE} virtual; {$ENDIF}
298
procedure SetCapacity(NewCapacity: integer);
299
{$IFDEF SYN_COMPILER_3_UP} override; {$ELSE} virtual; {$ENDIF}
300
function Get(Index: integer): string; override;
301
function GetObject(Index: integer): TObject; override;
302
procedure Put(Index: integer; const S: string); override;
303
procedure PutObject(Index: integer; AObject: TObject); override;
305
procedure SetUpdateState(Updating: Boolean; Sender: TObject); override;
306
procedure DoGetPhysicalCharWidths(Line: PChar; LineLen, Index: Integer; PWidths: PPhysicalCharWidth); override;
308
constructor Create(ASynStringSource: TSynEditStrings);
310
function Add(const S: string): integer; override;
311
procedure AddStrings(AStrings: TStrings); override;
312
procedure Clear; override;
313
procedure Delete(Index: integer); override;
314
procedure DeleteLines(Index, NumLines: integer); override;
315
procedure Insert(Index: integer; const S: string); override;
316
procedure InsertLines(Index, NumLines: integer); override;
317
procedure InsertStrings(Index: integer; NewStrings: TStrings); override;
318
function GetPChar(ALineIndex: Integer; out ALen: Integer): PChar; override; // experimental
320
procedure AddGenericHandler(AReason: TSynEditNotifyReason;
321
AHandler: TMethod); override;
322
procedure RemoveGenericHandler(AReason: TSynEditNotifyReason;
323
AHandler: TMethod); override;
324
procedure SendNotification(AReason: TSynEditNotifyReason;
325
ASender: TSynEditStrings; aIndex, aCount: Integer;
326
aBytePos: Integer = -1; aLen: Integer = 0;
327
aTxt: String = ''); override;
328
procedure SendNotification(AReason: TSynEditNotifyReason;
329
ASender: TObject); override;
330
procedure FlushNotificationCache; override;
332
//function GetPhysicalCharWidths(Line: PChar; LineLen, Index: Integer): TPhysicalCharWidths; override;
333
property NextLines: TSynEditStrings read fSynStrings write fSynStrings;
335
// LogX, LogY are 1-based
336
procedure EditInsert(LogX, LogY: Integer; AText: String); override;
337
function EditDelete(LogX, LogY, ByteLen: Integer): String; override;
338
procedure EditLineBreak(LogX, LogY: Integer); override;
339
procedure EditLineJoin(LogY: Integer; FillText: String = ''); override;
340
procedure EditLinesInsert(LogY, ACount: Integer; AText: String = ''); override;
341
procedure EditLinesDelete(LogY, ACount: Integer); override;
342
procedure EditUndo(Item: TSynEditUndoItem); override;
343
procedure EditRedo(Item: TSynEditUndoItem); override;
346
124
{ TSynEditUndoItem }
348
126
TSynEditUndoItem = class(TObject)
463
247
raise ESynEditStorageMem.CreateFmt(SListIndexOutOfBounds, [Index]);
466
{ TSynLogicalPhysicalConvertor }
468
procedure TSynLogicalPhysicalConvertor.PrepareWidthsForLine(AIndex: Integer;
473
//const dbg_cnt: integer = 0;
475
if (not AForce) and (FCurrentLine = AIndex) and
476
(FLines.TextChangeStamp = FTextChangeStamp) and (FLines.ViewChangeStamp = FViewChangeStamp)
478
//debugln(['**************** RE-USING widths: ', AIndex,' (',dbgs(Pointer(self)),')']);
479
//dbg_cnt := dbg_cnt + 1;
483
if (AIndex < 0) or (AIndex >= FLines.Count) then begin
484
FCurrentWidthsLen := 0;
485
FViewChangeStamp := FLines.ViewChangeStamp;
486
FTextChangeStamp := FLines.TextChangeStamp;
490
Line := FLines.GetPChar(AIndex, LineLen);
491
if LineLen > FCurrentWidthsAlloc then begin
492
//debugln(['**************** COMPUTING widths (grow): ', AIndex,' (',dbgs(Pointer(self)),') old-alloc=', FCurrentWidthsAlloc, ' new-len=',LineLen]);
493
SetLength(FCurrentWidths, LineLen);
494
FCurrentWidthsAlloc := LineLen;
496
else if FCurrentWidthsAlloc > Max(Max(LineLen, FCurrentWidthsLen)*4, SYN_LP_MIN_ALLOC) then begin
497
//debugln(['**************** COMPUTING widths (shrink): ', AIndex,' (',dbgs(Pointer(self)),') old-alloc=', FCurrentWidthsAlloc, ' new-len=',LineLen]);
498
FCurrentWidthsAlloc := Max(Max(LineLen, FCurrentWidthsLen), SYN_LP_MIN_ALLOC) ;
499
SetLength(FCurrentWidths, FCurrentWidthsAlloc);
502
// debugln(['**************** COMPUTING widths: ', AIndex,' (',dbgs(Pointer(self)),') alloc=',FCurrentWidthsAlloc]);
504
//debugln(['**************** NEW for index:: ', AIndex,' (',dbgs(Pointer(self)),') after index: ', FCurrentLine, ' used ', dbg_cnt,' times // old-alloc=', FCurrentWidthsAlloc, ' new-len=',LineLen, ' viewchg:',dbgs(not(FViewChangeStamp=FLines.ViewChangeStamp)),' txtchg:',dbgs(not(FTextChangeStamp=FLines.TextChangeStamp))]); dbg_cnt := 0;
506
FCurrentWidthsLen := LineLen;
508
FLines.DoGetPhysicalCharWidths(Line, LineLen, AIndex, @FCurrentWidths[0]);
509
FViewChangeStamp := FLines.ViewChangeStamp;
510
FTextChangeStamp := FLines.TextChangeStamp;
511
FCurrentLine := AIndex;
514
constructor TSynLogicalPhysicalConvertor.Create(ALines: TSynEditStrings);
518
FCurrentWidths := nil;
519
FCurrentWidthsLen := 0;
520
FCurrentWidthsAlloc := 0;
523
destructor TSynLogicalPhysicalConvertor.Destroy;
525
SetLength(FCurrentWidths, 0);
529
function TSynLogicalPhysicalConvertor.PhysicalToLogical(AIndex,
530
AColumn: Integer): Integer;
534
Result := PhysicalToLogical(AIndex, AColumn, ColOffs);
537
function TSynLogicalPhysicalConvertor.PhysicalToLogical(AIndex, AColumn: Integer;
538
out AColOffset: Integer): Integer;
540
BytePos, ScreenPos, ScreenPosOld: integer;
542
PrepareWidthsForLine(AIndex);
546
while BytePos < FCurrentWidthsLen do begin
547
ScreenPosOld := ScreenPos;
548
ScreenPos := ScreenPos + FCurrentWidths[BytePos];
550
if ScreenPos > AColumn then begin
551
AColOffset := AColumn - ScreenPosOld;
556
// Column at/past end of line
558
Result := BytePos + 1 + AColumn - ScreenPos;
561
function TSynLogicalPhysicalConvertor.LogicalToPhysical(AIndex,
562
ABytePos: Integer): Integer;
567
Result := LogicalToPhysical(AIndex, ABytePos, ColOffs);
570
function TSynLogicalPhysicalConvertor.LogicalToPhysical(AIndex, ABytePos: Integer;
571
var AColOffset: Integer): Integer;
574
CharWidths: TPhysicalCharWidths;
576
{$IFDEF AssertSynMemIndex}
577
if (ABytePos <= 0) then
578
raise Exception.Create(Format('Bad Bytpos for PhystoLogical BytePos=%d ColOffs= %d idx= %d',[ABytePos, AColOffset, AIndex]));
580
if (ABytePos = 0) or ((ABytePos = 1) and (AColOffset=0)) then
582
PrepareWidthsForLine(AIndex);
585
if ABytePos >= FCurrentWidthsLen then begin
586
Result := 1 + ABytePos - FCurrentWidthsLen;
587
ABytePos := FCurrentWidthsLen;
591
AColOffset := Min(AColOffset, FCurrentWidths[ABytePos]-1);
592
Result := 1 + AColOffset;
595
for i := 0 to ABytePos - 1 do
596
Result := Result + FCurrentWidths[i];
599
250
{ TSynEditStringsBase }
601
252
function TSynEditStringsBase.GetPChar(ALineIndex: Integer): PChar;
605
256
Result := GetPChar(ALineIndex, l);
610
constructor TSynEditStrings.Create;
612
FLogPhysConvertor := TSynLogicalPhysicalConvertor.Create(self);
617
destructor TSynEditStrings.Destroy;
619
FreeAndNil(FLogPhysConvertor);
623
procedure TSynEditStrings.BeginUpdate(Sender: TObject);
625
if FSenderUpdateCount = 0 then
626
SetUpdateState(true, Sender);
627
inc(FSenderUpdateCount);
630
procedure TSynEditStrings.EndUpdate(Sender: TObject);
632
If FSenderUpdateCount>0 then
633
Dec(FSenderUpdateCount);
634
if FSenderUpdateCount=0 then
635
SetUpdateState(False, Sender);
638
function TSynEditStrings.IsUpdating: Boolean;
640
Result := (FSenderUpdateCount > 0) or (UpdateCount > 0);
643
procedure TSynEditStrings.AddChangeHandler(AReason: TSynEditNotifyReason;
644
AHandler: TStringListLineCountEvent);
646
AddGenericHandler(AReason, TMethod(AHandler));
649
procedure TSynEditStrings.AddNotifyHandler(AReason: TSynEditNotifyReason;
650
AHandler: TNotifyEvent);
652
AddGenericHandler(AReason, TMethod(AHandler));
655
procedure TSynEditStrings.RemoveChangeHandler(AReason: TSynEditNotifyReason;
656
AHandler: TStringListLineCountEvent);
658
RemoveGenericHandler(AReason, TMethod(AHandler));
661
procedure TSynEditStrings.RemoveNotifyHandler(AReason: TSynEditNotifyReason;
662
AHandler: TNotifyEvent);
664
RemoveGenericHandler(AReason, TMethod(AHandler));
667
procedure TSynEditStrings.AddEditHandler(AHandler: TStringListLineEditEvent);
669
AddGenericHandler(senrEditAction, TMethod(AHandler));
672
procedure TSynEditStrings.RemoveEditHandler(AHandler: TStringListLineEditEvent);
674
RemoveGenericHandler(senrEditAction, TMethod(AHandler));
677
procedure TSynEditStrings.SendHighlightChanged(aIndex, aCount: Integer);
679
SendNotification(senrHighlightChanged, Self, aIndex, aCount);
682
function TSynEditStrings.GetPhysicalCharWidths(Index: Integer): TPhysicalCharWidths;
687
Result := GetPhysicalCharWidths(PChar(s), length(s), Index);
690
function TSynEditStrings.GetPhysicalCharWidths(Line: PChar; LineLen,
691
Index: Integer): TPhysicalCharWidths;
693
SetLength(Result, LineLen);
696
DoGetPhysicalCharWidths(Line, LineLen, Index, @Result[0]);
699
function TSynEditStrings.GetIsUtf8 : Boolean;
704
procedure TSynEditStrings.SetIsUtf8(const AValue : Boolean);
709
procedure TSynEditStrings.SetTextStr(const Value : string);
717
if Value='' then begin
722
sl:=TStringList.Create;
727
Last:=p+length(Value);
728
while p<Last do begin
729
if not (p^ in [#10,#13]) then begin
732
SetLength(s,p-StartPos);
734
System.Move(StartPos^,s[1],length(s));
736
if (p[1] in [#10,#13]) and (p[1]<>p^) then
742
if StartPos<Last then begin
743
SetLength(s,Last-StartPos);
745
System.Move(StartPos^,s[1],length(s));
755
function TSynEditStrings.GetViewChangeStamp: int64;
760
procedure TSynEditStrings.SetUpdateState(Updating: Boolean);
762
// Update/check "FSenderUpdateCount", to avoid extra locking/unlocking
769
function TSynEditStrings.LogicalToPhysicalPos(const p : TPoint) : TPoint;
772
Result.X := FLogPhysConvertor.LogicalToPhysical(p.y - 1, p.x);
773
// if Result.Y - 1 < Count then
774
// Result.X:=LogicalToPhysicalCol(self[Result.Y - 1], Result.Y, Result.X);
777
function TSynEditStrings.LogicalToPhysicalCol(const Line : String;
778
Index, LogicalPos: integer) : integer;
781
CharWidths: TPhysicalCharWidths;
783
CharWidths := GetPhysicalCharWidths(Pchar(Line), length(Line), Index);
784
ByteLen := length(Line);
787
if LogicalPos > ByteLen then begin
788
Result := 1 + LogicalPos - ByteLen;
789
LogicalPos := ByteLen;
794
for i := 0 to LogicalPos - 1 do
795
Result := Result + CharWidths[i];
798
function TSynEditStrings.PhysicalToLogicalPos(const p : TPoint) : TPoint;
801
Result.X := FLogPhysConvertor.PhysicalToLogical(p.y - 1, p.x);
802
// if (Result.Y>=1) and (Result.Y <= Count) then
803
// Result.X:=PhysicalToLogicalCol(self[Result.Y - 1], Result.Y - 1, Result.X);
806
function TSynEditStrings.PhysicalToLogicalCol(const Line : string;
807
Index, PhysicalPos : integer) : integer;
809
BytePos, ByteLen: integer;
811
CharWidths: TPhysicalCharWidths;
813
CharWidths := GetPhysicalCharWidths(PChar(Line), length(Line), Index);
814
ByteLen := Length(Line);
818
while BytePos < ByteLen do begin
819
if ScreenPos + CharWidths[BytePos] > PhysicalPos then
821
ScreenPos := ScreenPos + CharWidths[BytePos];
825
Result := BytePos + 1 + PhysicalPos - ScreenPos;
828
{ TSynEditStringsLinked }
830
constructor TSynEditStringsLinked.Create(ASynStringSource: TSynEditStrings);
832
fSynStrings := ASynStringSource;
836
function TSynEditStringsLinked.Add(const S: string): integer;
838
Result := fSynStrings.Add(S);
841
procedure TSynEditStringsLinked.AddStrings(AStrings: TStrings);
843
fSynStrings.AddStrings(AStrings);
846
procedure TSynEditStringsLinked.Clear;
851
procedure TSynEditStringsLinked.Delete(Index: integer);
853
fSynStrings.Delete(Index);
856
procedure TSynEditStringsLinked.DeleteLines(Index, NumLines: integer);
858
fSynStrings.DeleteLines(Index, NumLines);
861
procedure TSynEditStringsLinked.Insert(Index: integer; const S: string);
863
fSynStrings.Insert(Index, S);
866
procedure TSynEditStringsLinked.InsertLines(Index, NumLines: integer);
868
fSynStrings.InsertLines(Index, NumLines);
871
procedure TSynEditStringsLinked.InsertStrings(Index: integer; NewStrings: TStrings);
873
fSynStrings.InsertStrings(Index, NewStrings);
876
function TSynEditStringsLinked.GetPChar(ALineIndex: Integer; out ALen: Integer): PChar;
878
Result := fSynStrings.GetPChar(ALineIndex, ALen);
881
procedure TSynEditStringsLinked.SetIsUndoing(const AValue: Boolean);
883
fSynStrings.IsUndoing := AValue;
886
function TSynEditStringsLinked.GetIsUndoing: Boolean;
888
Result := fSynStrings.IsUndoing;
891
procedure TSynEditStringsLinked.SetIsRedoing(const AValue: Boolean);
893
fSynStrings.IsRedoing := AValue;
896
function TSynEditStringsLinked.GetIsRedoing: Boolean;
898
Result := fSynStrings.IsRedoing;
901
function TSynEditStringsLinked.GetIsUtf8: Boolean;
903
Result := FSynStrings.IsUtf8;
906
procedure TSynEditStringsLinked.SetIsUtf8(const AValue: Boolean);
908
FSynStrings.IsUtf8 := AValue;
911
function TSynEditStringsLinked.GetTextChangeStamp: int64;
913
Result := fSynStrings.GetTextChangeStamp;
916
function TSynEditStringsLinked.GetViewChangeStamp: int64;
918
Result := fSynStrings.GetViewChangeStamp;
922
function TSynEditStringsLinked.GetRange(Index: Pointer): TSynManagedStorageMem;
924
Result:= fSynStrings.Ranges[Index];
927
procedure TSynEditStringsLinked.PutRange(Index: Pointer; const ARange: TSynManagedStorageMem);
929
fSynStrings.Ranges[Index] := ARange;
932
function TSynEditStringsLinked.GetExpandedString(Index: integer): string;
934
Result:= fSynStrings.GetExpandedString(Index);
937
function TSynEditStringsLinked.GetLengthOfLongestLine: integer;
939
Result:= fSynStrings.GetLengthOfLongestLine;
942
function TSynEditStringsLinked.GetRedoList: TSynEditUndoList;
944
Result := fSynStrings.GetRedoList;
947
function TSynEditStringsLinked.GetUndoList: TSynEditUndoList;
949
Result := fSynStrings.GetUndoList;
952
function TSynEditStringsLinked.GetCurUndoList: TSynEditUndoList;
954
Result := fSynStrings.GetCurUndoList;
957
procedure TSynEditStringsLinked.AddGenericHandler(AReason: TSynEditNotifyReason; AHandler: TMethod);
959
fSynStrings.AddGenericHandler(AReason, AHandler);
962
procedure TSynEditStringsLinked.RemoveGenericHandler(AReason: TSynEditNotifyReason; AHandler: TMethod);
964
fSynStrings.RemoveGenericHandler(AReason, AHandler);
968
function TSynEditStringsLinked.GetCount: integer;
970
Result:= fSynStrings.Count;
973
function TSynEditStringsLinked.GetCapacity: integer;
975
Result:= fSynStrings.Capacity;
978
procedure TSynEditStringsLinked.SetCapacity(NewCapacity: integer);
980
fSynStrings.Capacity := NewCapacity;
983
function TSynEditStringsLinked.Get(Index: integer): string;
985
Result:= fSynStrings.Get(Index);
988
function TSynEditStringsLinked.GetObject(Index: integer): TObject;
990
Result:= fSynStrings.GetObject(Index);
993
procedure TSynEditStringsLinked.Put(Index: integer; const S: string);
995
fSynStrings.Put(Index, S);
998
procedure TSynEditStringsLinked.PutObject(Index: integer; AObject: TObject);
1000
fSynStrings.PutObject(Index, AObject);
1003
//function TSynEditStringsLinked.GetPhysicalCharWidths(Line: PChar; LineLen, Index: Integer): TPhysicalCharWidths;
1005
// Result := fSynStrings.GetPhysicalCharWidths(Line, LineLen, Index);
1008
procedure TSynEditStringsLinked.SetUpdateState(Updating: Boolean; Sender: TObject);
1010
// Update/check "FSenderUpdateCount" in linked lists too (avoid extra locking/unlocking)
1012
fSynStrings.BeginUpdate(Sender)
1014
fSynStrings.EndUpdate(Sender);
1017
procedure TSynEditStringsLinked.DoGetPhysicalCharWidths(Line: PChar;
1018
LineLen, Index: Integer; PWidths: PPhysicalCharWidth);
1020
fSynStrings.DoGetPhysicalCharWidths(Line, LineLen, Index, PWidths);
1023
procedure TSynEditStringsLinked.EditInsert(LogX, LogY: Integer; AText: String);
1025
fSynStrings.EditInsert(LogX, LogY, AText);
1028
function TSynEditStringsLinked.EditDelete(LogX, LogY, ByteLen: Integer): String;
1030
Result := fSynStrings.EditDelete(LogX, LogY, ByteLen);
1033
procedure TSynEditStringsLinked.EditLineBreak(LogX, LogY: Integer);
1035
fSynStrings.EditLineBreak(LogX, LogY);
1038
procedure TSynEditStringsLinked.EditLineJoin(LogY: Integer;
1039
FillText: String = '');
1041
fSynStrings.EditLineJoin(LogY, FillText);
1044
procedure TSynEditStringsLinked.EditLinesInsert(LogY, ACount: Integer; AText: String = '');
1046
fSynStrings.EditLinesInsert(LogY, ACount, AText);
1049
procedure TSynEditStringsLinked.EditLinesDelete(LogY, ACount: Integer);
1051
fSynStrings.EditLinesDelete(LogY, ACount);
1054
procedure TSynEditStringsLinked.EditUndo(Item: TSynEditUndoItem);
1056
fSynStrings.EditUndo(Item);
1059
procedure TSynEditStringsLinked.EditRedo(Item: TSynEditUndoItem);
1061
fSynStrings.EditRedo(Item);
1064
procedure TSynEditStringsLinked.SendNotification(AReason: TSynEditNotifyReason;
1065
ASender: TSynEditStrings; aIndex, aCount: Integer;
1066
aBytePos: Integer = -1; aLen: Integer = 0; aTxt: String = '');
1068
fSynStrings.SendNotification(AReason, ASender, aIndex, aCount, aBytePos, aLen, aTxt);
1071
procedure TSynEditStringsLinked.SendNotification(AReason: TSynEditNotifyReason;
1074
fSynStrings.SendNotification(AReason, ASender);
1077
procedure TSynEditStringsLinked.FlushNotificationCache;
1079
fSynStrings.FlushNotificationCache;
1082
procedure TSynEditStringsLinked.IgnoreSendNotification(AReason: TSynEditNotifyReason;
1083
IncIgnore: Boolean);
1085
fSynStrings.IgnoreSendNotification(AReason, IncIgnore);
1088
259
{ TSynEditUndoList }
1090
261
constructor TSynEditUndoList.Create;