anchor.diff:    inherited;
     fAutomatic := true;
     fCompletor := TSynAutoComplete.Create(self);
  +  fCompletor.ShortCut := 8224; // SHIFT + SPACE
     fMacros := TStringList.Create;
     fMacros.Delimiter := '=';
  -  assert(fCompletor.ShortCut <> 0);
  +  addDefaults;
     //
  -  fname := getCoeditDocPath + macFname;
  -  if fileExists(fname) then loadFromFile(fname);
  -  addDefaults;
  +  fOptions := TStaticMacrosOptions.create(self);
  +  fOptionBackup := TStaticMacrosOptions.create(self);
  +  fname := getCoeditDocPath + OptFname;
  +  if fileExists(fname) then
  +  begin
  +    fOptions.loadFromFile(fname);
  +    // old option file will create a streaming error.
  +    if fOptions.hasLoaded then
  +    	fOptions.AssignTo(self)
  +    else
  +    	fOptions.Assign(self);
  +  end
  +  else fOptions.Assign(self);
     //
     sanitize;
     updateCompletor;
  
positive.code:   if aDoc <> fDoc then
      exit;
    fDoc := nil;
  end;
  {$ENDREGION}
  
  
negative.code: 
  destructor TCEStaticEditorMacro.destroy;
  begin
    fOptions.saveToFile(getCoeditDocPath + OptFname);
    EntitiesConnector.removeObserver(Self);
    //
    fMacros.Free;
  