anchor.diff:      ModeReadOnly:= false;
       while Strings.Count>cPyConsoleMaxLines do
         Strings.LineDelete(0);
  -    Strings.LineAdd(Utf8Decode(Str));
  +    Strings.LineAddRaw_UTF8_NoUndo(Str, cEndUnix);
       ModeReadOnly:= true;
   
       Update(true);
  
positive.code: 
  procedure TfmConsole.DoNavigate(Sender: TObject);
  var
    S: atString;
    N: integer;
  begin
    if Assigned(FOnNavigate) then
    begin
      N:= Memo.Carets[0].PosY;
      if not Memo.Strings.IsIndexValid(N) then exit;
      S:= Memo.Strings.Lines[N];
      FOnNavigate(Utf8Encode(S));
    end;
  end;
  
  
negative.code: 
  procedure TfmConsole.MemoClickDbl(Sender: TObject; var AHandled: boolean);
  var
    s: string;
    n: integer;
  begin
    n:= Memo.Carets[0].PosY;
    if Memo.Strings.IsIndexValid(n) then
    begin
      s:= Memo.Strings.LinesUTF8[n];
      if SBeginsWith(s, cPyConsolePrompt) then
      begin
        Delete(s, 1, Length(cPyConsolePrompt));
        DoExecuteConsoleLine(s);
      end
      else
        DoNavigate(Self);
  