Browse Source

Indent engine now initialized with project formatting settings if possible, not only with global settings.

pull/411/head
Andreas Weizel 11 years ago
parent
commit
f07b9ee38b
  1. 1
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
  2. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsPersistence.cs
  3. 9
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs

1
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin

@ -119,7 +119,6 @@
label = "${res:Dialog.ProjectOptions.Publish}" label = "${res:Dialog.ProjectOptions.Publish}"
class = "ICSharpCode.SharpDevelop.Gui.OptionPanels.Publish"/>--> class = "ICSharpCode.SharpDevelop.Gui.OptionPanels.Publish"/>-->
<Include id = "AllManaged" path="/SharpDevelop/BackendBindings/ProjectOptions/AllManaged"/> <Include id = "AllManaged" path="/SharpDevelop/BackendBindings/ProjectOptions/AllManaged"/>
<!-- TODO Localize label! -->
<OptionPanel id = "CSharpProjectFormattingOptions" <OptionPanel id = "CSharpProjectFormattingOptions"
label = "${res:Dialog.ProjectOptions.CodeFormatting}" label = "${res:Dialog.ProjectOptions.CodeFormatting}"
class = "CSharpBinding.OptionPanels.CSharpProjectFormattingOptionPanel"/> class = "CSharpBinding.OptionPanels.CSharpProjectFormattingOptionPanel"/>

4
src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsPersistence.cs

@ -132,12 +132,10 @@ namespace CSharpBinding.FormattingStrategy
/// <param name="initialContainer">Initial (empty) instance of formatting options container.</param> /// <param name="initialContainer">Initial (empty) instance of formatting options container.</param>
public CSharpFormattingOptionsPersistence(Properties propertiesContainer, CSharpFormattingOptionsContainer initialContainer) public CSharpFormattingOptionsPersistence(Properties propertiesContainer, CSharpFormattingOptionsContainer initialContainer)
{ {
if (propertiesContainer == null)
throw new ArgumentNullException("propertiesContainer");
if (initialContainer == null) if (initialContainer == null)
throw new ArgumentNullException("initialContainer"); throw new ArgumentNullException("initialContainer");
this.propertiesContainer = propertiesContainer; this.propertiesContainer = propertiesContainer ?? new Properties();
optionsContainer = initialContainer; optionsContainer = initialContainer;
} }

9
src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs

@ -31,6 +31,7 @@ using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Parser; using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.SharpDevelop.Project;
namespace CSharpBinding.FormattingStrategy namespace CSharpBinding.FormattingStrategy
{ {
@ -73,8 +74,12 @@ namespace CSharpBinding.FormattingStrategy
static CacheIndentEngine CreateIndentEngine(IDocument document, TextEditorOptions options) static CacheIndentEngine CreateIndentEngine(IDocument document, TextEditorOptions options)
{ {
// TODO Use project-specific formatter settings. But how to get a project from here? IProject currentProject = null;
var formattingOptions = CSharpFormattingOptionsPersistence.GlobalOptions; var projectService = SD.GetService<IProjectService>();
if (projectService != null) {
currentProject = projectService.FindProjectContainingFile(new FileName(document.FileName));
}
var formattingOptions = CSharpFormattingOptionsPersistence.GetProjectOptions(currentProject);
var engine = new CSharpIndentEngine(document, options, formattingOptions.OptionsContainer.GetEffectiveOptions()); var engine = new CSharpIndentEngine(document, options, formattingOptions.OptionsContainer.GetEffectiveOptions());
return new CacheIndentEngine(engine); return new CacheIndentEngine(engine);
} }

Loading…
Cancel
Save