anchor.diff:    else
       GSz := GetClientRect.Left + 1; // gutter size if no gutter panel
   
  -  if I < FLines.Count then
  +  if ALineIndex < FLines.Count then
     begin
       X := -(HPos * FChrW) + GSz;
  -    FormatLine(I, X, Y);
  -  end;
  -end;
  -
  -procedure TfpgBaseTextEdit.FormatLine(const I, X, Y: Integer);
  +    FormatLine(ALineIndex, X, Y);
  +  end;
  +end;
  +
  +procedure TfpgBaseTextEdit.FormatLine(const ALineIndex, X, Y: Integer);
   var
     S, CorrectS, SS: TfpgString;
     TI, Si, Ei, T: Integer;
  
positive.code: begin
    if FLines.Count = 0 then
      Exit; //==>
    if (I < 0) or (I > FLines.Count-1) then
      Exit; //==>
    S := FLines[I];
    if Pos(#9, S) > 0 then
    begin
      CorrectS := '';
  
negative.code:     procedure   HandleKeyChar(var AText: TfpgChar; var shiftstate: TShiftState; var consumed: boolean); override;
      { -- local widget functions -- }
      procedure   DrawVisible; virtual;
      procedure   DrawLine(const ALineIndex, Y: Integer); virtual;
      procedure   FormatLine(const ALineIndex, X, Y: Integer);
      procedure   DrawCaret(const X, Y: Integer); virtual;
      { -- to be published --}
      property    FontDesc: string read GetFontDesc write SetFontDesc;
  