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:   AllowDraw := True;
    { end-user can hook in here to do syntax highlighting and other custom drawing }
    if Assigned(FOnDrawLine) then
      FOnDrawLine(self, S, ALineIndex, Canvas, R, AllowDraw);
    { Draw simple text line... }
    if AllowDraw then
    begin
      Canvas.DrawText(R, S);
      if FSelected then
      begin
        if (ALineIndex > StartNo) and (ALineIndex < EndNo) then     // whole line is selected
        begin
          R.SetRect(X, Y, UTF8Length(S) * FChrW, FChrH);
          Canvas.XORFillRectangle(fpgColorToRGB(clSelection) xor $FFFFFF, R);
  