anchor.diff:      procedure   UpdateGutterCoords;
       procedure   KeyboardCaretNav(const ShiftState: TShiftState; const AKeyCode: Word);
       procedure   InitMemoObjects;
  +    procedure SetRightEdge(const AValue: Boolean);
  +    procedure SetRightEdgeCol(const AValue: Integer);
     protected
       { -- internal events -- }
       procedure   HandlePaint; override;
  
positive.code:     if cntVis > FVisLines then
        Break;  //==>
    end;
    { todo: implement this }
  {
    if FRightEdge then
    begin
      if not FGutterOpt.Visible then
      begin
        with Canvas do
        begin
          Pen.Color := FEnvironment.RightEdgeColor;
          MoveTo((FRightEdgeCol * FChrW) - (HPos * FChrW), 0);
          LineTo((FRightEdgeCol * FChrW) - (HPos * FChrW), ClientHeight);
        end;
      end else
        with Canvas do
        begin
          Pen.Color := FEnvironment.RightEdgeColor;
          MoveTo((FRightEdgeCol * FChrW) - (HPos * FChrW) + FGutterPan.Width, 0);
          LineTo((FRightEdgeCol * FChrW) - (HPos * FChrW) + FGutterPan.Width, ClientHeight);
        end;
    end;
  }
  end;
  
  procedure TfpgBaseTextEdit.DrawLine(const I, Y: Integer);
  
negative.code:   end;
  end;
  
  procedure TfpgBaseTextEdit.SetRightEdge(const AValue: Boolean);
  begin
    if FRightEdge <> AValue then
    begin
      FRightEdge := AValue;
      Invalidate;
    end;
  end;
  
  procedure TfpgBaseTextEdit.SetRightEdgeCol(const AValue: Integer);
  var
    v: Integer;
  begin
    v := AValue;
    if v < 20 then v := 20;
    if v > 160 then v := 160;
    if FRightEdgeCol <> v then
    begin
      FRightEdgeCol := v;
      if FRightEdge then
        Invalidate;
    end;
  end;
  
  procedure TfpgBaseTextEdit.HandlePaint;
  begin
  //  inherited HandlePaint;
  