anchor.diff:      procedure EditorClickEndSelect(Sender: TObject; APrevPnt, ANewPnt: TPoint);
       procedure EditorClickMoveCaret(Sender: TObject; APrevPnt, ANewPnt: TPoint);
       procedure EditorDrawMicromap(Sender: TObject; C: TCanvas; const ARect: TRect);
  -    procedure EditorOnChange1(Sender: TObject);
  -    procedure EditorOnChange2(Sender: TObject);
  +    procedure EditorOnChange(Sender: TObject);
       procedure EditorOnChangeModified(Sender: TObject);
       procedure EditorOnChangeState(Sender: TObject);
       procedure EditorOnClick(Sender: TObject);
  
positive.code:   ed.OnClickGap:= @EditorOnClickGap;
    ed.OnClickMicromap:= @EditorOnClickMicroMap;
    ed.OnEnter:= @EditorOnEnter;
    ed.OnChangeState:=@EditorOnChangeState;
    ed.OnChangeCaretPos:= @EditorOnChangeCaretPos;
    ed.OnCommand:= @EditorOnCommand;
    ed.OnCommandAfter:= @EditorOnCommandAfter;
  
negative.code:   Ed2.Update(true);
  end;
  
  procedure TEditorFrame.EditorOnChange(Sender: TObject);
  var
    Ed: TATSynEdit;
  begin
    Ed:= Sender as TATSynEdit;
  
    if (Ed=Ed1) and Splitted and EditorsLinked then
    begin
      Ed2.UpdateIncorrectCaretPositions;
      Ed2.Update(true);
    end;
  
    DoPyEvent(Ed, cEventOnChange, []);
  
    TimerChange.Enabled:= false;
    TimerChange.Interval:= UiOps.PyChangeSlow;
    TimerChange.Enabled:= true;
  end;
  
  procedure TEditorFrame.EditorOnChangeModified(Sender: TObject);
  