anchor.diff:      procedure   miRecentProjectsClick(Sender: TObject; const FileName: String);
       procedure   miProjectSave(Sender: TObject);
       procedure   miProjectSaveAs(Sender: TObject);
  +    procedure   AddUnitToProject(const AUnitName: TfpgString);
       procedure   miProjectAddUnitToProject(Sender: TObject);
       procedure   tvProjectDoubleClick(Sender: TObject; AButton: TMouseButton; AShift: TShiftState; const AMousePos: TPoint);
       procedure   grdMessageKeyPressed(Sender: TObject; var KeyCode: Word; var ShiftState: TShiftState; var Consumed: Boolean);
  
positive.code:   end;
  end;
  
  procedure TMainForm.miProjectAddUnitToProject(Sender: TObject);
  var
    u: TUnit;
    s: TfpgString;
    r: TfpgTreeNode;
    n: TfpgTreeNode;
  begin
    s := pcEditor.ActivePage.Hint;
  //  writeln('adding unit: ', s);
    if s = '' then
      Exit;
    if GProject.UnitList.FileExists(s) then
      Exit;
    u := TUnit.Create;
    u.FileName := s;
    u.Opened := True;
    GProject.UnitList.Add(u);
    // add reference to tabsheet
  
negative.code:   // add reference to treenode
    n.Data := u;
    tvProject.Invalidate;
  end;
  
  procedure TMainForm.miProjectAddUnitToProject(Sender: TObject);
  var
    s: TfpgString;
  begin
    s := pcEditor.ActivePage.Hint;
  //  writeln('adding unit: ', s);
    if s = '' then
      Exit;
    if GProject.UnitList.FileExists(s) then
      Exit;
    AddUnitToProject(s);
  end;
  
  procedure TMainForm.tvProjectDoubleClick(Sender: TObject; AButton: TMouseButton; AShift: TShiftState; const AMousePos: TPoint);
  