anchor.diff:    fClient.ShowWindow := swoHIDE;
     {$ENDIF}
     //
  -  fServer := TProcess.Create(self);
  -  fServer.Executable := serverName;
  -  fServer.Options := [{$IFDEF WINDOWS} poNewConsole{$ENDIF}];
  -  {$IFNDEF DEBUG}
  -  fServer.ShowWindow := swoHIDE;
  -  {$ENDIF}
  +  // TODO-ctest: test this feature on linux.
  +  fServerWasRunning := AppIsRunning((serverName));
  +  if not fServerWasRunning then begin
  +    fServer := TProcess.Create(self);
  +    fServer.Executable := serverName;
  +    fServer.Options := [{$IFDEF WINDOWS} poNewConsole{$ENDIF}];
  +    {$IFNDEF DEBUG}
  +    fServer.ShowWindow := swoHIDE;
  +    {$ENDIF}
  +  end;
     fTempLines := TStringList.Create;
  -  fServer.Execute;
  +
  +  if (fServer <> nil) then
  +    fServer.Execute;
     //
     EntitiesConnector.addObserver(self);
   end;
  
positive.code:   EntitiesConnector.removeObserver(self);
    if fTempLines <> nil then
      fTempLines.Free;
    killServer;
    fServer.Free;
    fClient.Free;
    inherited;
  end;
  
negative.code: interface
  
  uses
    Classes, SysUtils, process, forms, strutils, windows,
    ce_common, ce_writableComponent, ce_interfaces, ce_observer, ce_synmemo, ce_project;
  
  type
  