public CSharpFormattingPolicy GetProjectOptions(IProject project)
        {
            if (!initialized)
            {
                return(GlobalOptions);
            }

            var csproject = project as CSharpProject;

            if (csproject != null)
            {
                string key = project.FileName;
                if (!projectOptions.ContainsKey(key))
                {
                    // Lazily create options container for project
                    var projectFormattingPersistence = new CSharpFormattingPolicy(
                        csproject.GlobalPreferences,
                        new CSharpFormattingOptionsContainer((SolutionOptions ?? GlobalOptions).OptionsContainer)
                    {
                        DefaultText = StringParser.Parse("${res:CSharpBinding.Formatting.ProjectOptionReference}")
                    });
                    projectFormattingPersistence.FormattingPolicyUpdated += OnFormattingPolicyUpdated;
                    projectFormattingPersistence.Load();
                    projectOptions[key] = projectFormattingPersistence;
                }

                return(projectOptions[key]);
            }

            return(SolutionOptions ?? GlobalOptions);
        }
 public CSharpFormattingPolicies()
 {
     // Load global settings
     GlobalOptions = new CSharpFormattingPolicy(
         SD.PropertyService.MainPropertiesContainer, new CSharpFormattingOptionsContainer()
     {
         DefaultText = StringParser.Parse("${res:CSharpBinding.Formatting.GlobalOptionReference}")
     });
     GlobalOptions.FormattingPolicyUpdated += OnFormattingPolicyUpdated;
     GlobalOptions.Load();
 }
 void SolutionOpened(object sender, SolutionEventArgs e)
 {
     // Load solution settings
     SolutionOptions = new CSharpFormattingPolicy(
         e.Solution.SDSettings,
         new CSharpFormattingOptionsContainer(GlobalOptions.OptionsContainer)
     {
         DefaultText = StringParser.Parse("${res:CSharpBinding.Formatting.SolutionOptionReference}")
     });
     SolutionOptions.FormattingPolicyUpdated += OnFormattingPolicyUpdated;
     SolutionOptions.Load();
 }
		protected override void Load(ICSharpCode.SharpDevelop.Project.MSBuildBasedProject project, string configuration, string platform)
		{
			base.Load(project, configuration, platform);
			if (formattingPolicy != null) {
				formattingPolicy.OptionsContainer.PropertyChanged -= ContainerPropertyChanged;
			}
			formattingPolicy = CSharpFormattingPolicies.Instance.GetProjectOptions(project);
			formattingEditor.OptionsContainer = formattingPolicy.OptionsContainer;
			formattingEditor.AllowPresets = true;
			formattingEditor.OverrideGlobalIndentation = true;
			formattingPolicy.OptionsContainer.PropertyChanged += ContainerPropertyChanged;
		}
 void SolutionClosed(object sender, SolutionEventArgs e)
 {
     SolutionOptions.FormattingPolicyUpdated -= OnFormattingPolicyUpdated;
     SolutionOptions = null;
     projectOptions.Clear();
 }