Browse Source

Fixed SD2-1348: "Find missing resource keys" exception when run before AmbienceService is used.

CodeGenerator constructor now requests initialization of the code generator options through the HostCallback.
AmbienceService keeps track of instantiated code generators to update the options when changed.
Code generator options are now also applied to code generators defined in addins.
Made default code generator options valid.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2500 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Christian Hornung 18 years ago
parent
commit
86d3fdcc78
  1. 29
      src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs
  2. 2
      src/Main/Base/Project/Src/Services/ParserService/DomHostCallback.cs
  3. 7
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/HostCallback.cs
  4. 5
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Refactoring/CodeGenerator.cs
  5. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Refactoring/CodeGeneratorOptions.cs

29
src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs

@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
// </file>
using System;
using System.Collections.Generic;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.Refactoring;
@ -22,7 +23,6 @@ namespace ICSharpCode.SharpDevelop @@ -22,7 +23,6 @@ namespace ICSharpCode.SharpDevelop
static AmbienceService()
{
PropertyService.PropertyChanged += new PropertyChangedEventHandler(PropertyChanged);
ApplyCodeGenerationPropertiesToNRefactory();
}
public static Properties CodeGenerationProperties {
@ -31,21 +31,22 @@ namespace ICSharpCode.SharpDevelop @@ -31,21 +31,22 @@ namespace ICSharpCode.SharpDevelop
}
}
static void ApplyCodeGenerationPropertiesToNRefactory()
static List<CodeGenerator> codeGenerators = new List<CodeGenerator>();
static void ApplyCodeGenerationProperties(CodeGenerator generator)
{
CodeGeneratorOptions csharpOptions = LanguageProperties.CSharp.CodeGenerator.Options;
CodeGeneratorOptions vbOptions = LanguageProperties.VBNet.CodeGenerator.Options;
CodeGeneratorOptions options = generator.Options;
System.CodeDom.Compiler.CodeGeneratorOptions cdo = new CodeDOMGeneratorUtility().CreateCodeGeneratorOptions;
csharpOptions.EmptyLinesBetweenMembers = cdo.BlankLinesBetweenMembers;
vbOptions.EmptyLinesBetweenMembers = cdo.BlankLinesBetweenMembers;
bool startBlockOnSameLine = CodeGenerationProperties.Get("StartBlockOnSameLine", true);
csharpOptions.BracesOnSameLine = startBlockOnSameLine;
vbOptions.BracesOnSameLine = startBlockOnSameLine;
csharpOptions.IndentString = cdo.IndentString;
vbOptions.IndentString = cdo.IndentString;
options.EmptyLinesBetweenMembers = cdo.BlankLinesBetweenMembers;
options.BracesOnSameLine = CodeGenerationProperties.Get("StartBlockOnSameLine", true);;
options.IndentString = cdo.IndentString;
}
internal static void InitializeCodeGeneratorOptions(CodeGenerator generator)
{
codeGenerators.Add(generator);
ApplyCodeGenerationProperties(generator);
}
public static bool GenerateDocumentComments {
@ -117,7 +118,7 @@ namespace ICSharpCode.SharpDevelop @@ -117,7 +118,7 @@ namespace ICSharpCode.SharpDevelop
OnAmbienceChanged(EventArgs.Empty);
}
if (e.Key == codeGenerationProperty || e.Key == textEditorProperty) {
ApplyCodeGenerationPropertiesToNRefactory();
codeGenerators.ForEach(ApplyCodeGenerationProperties);
}
}

2
src/Main/Base/Project/Src/Services/ParserService/DomHostCallback.cs

@ -43,6 +43,8 @@ namespace ICSharpCode.SharpDevelop @@ -43,6 +43,8 @@ namespace ICSharpCode.SharpDevelop
WorkbenchSingleton.SafeThreadAsyncCall(ShowAssemblyLoadError,
fileName, include, message);
};
HostCallback.InitializeCodeGeneratorOptions = AmbienceService.InitializeCodeGeneratorOptions;
}
static void ShowAssemblyLoadError(string fileName, string include, string message)

7
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/HostCallback.cs

@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
// </file>
using System;
using ICSharpCode.SharpDevelop.Dom.Refactoring;
namespace ICSharpCode.SharpDevelop.Dom
{
@ -65,5 +66,11 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -65,5 +66,11 @@ namespace ICSharpCode.SharpDevelop.Dom
+ ":\r\n" + message + "\r\n");
ShowAssemblyLoadError(fileName, include, message);
}
/// <summary>
/// Initialize the code generator options of the passed CodeGenerator.
/// Invoked exactly once for each created instance of a class derived from CodeGenerator.
/// </summary>
public static Action<CodeGenerator> InitializeCodeGeneratorOptions = delegate {};
}
}

5
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Refactoring/CodeGenerator.cs

@ -19,6 +19,11 @@ namespace ICSharpCode.SharpDevelop.Dom.Refactoring @@ -19,6 +19,11 @@ namespace ICSharpCode.SharpDevelop.Dom.Refactoring
/// </summary>
public abstract class CodeGenerator
{
protected CodeGenerator()
{
HostCallback.InitializeCodeGeneratorOptions(this);
}
#region Dummy Code Generator
public static readonly CodeGenerator DummyCodeGenerator = new DummyCodeGeneratorClass();

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Refactoring/CodeGeneratorOptions.cs

@ -13,7 +13,7 @@ namespace ICSharpCode.SharpDevelop.Dom.Refactoring @@ -13,7 +13,7 @@ namespace ICSharpCode.SharpDevelop.Dom.Refactoring
{
public bool BracesOnSameLine = true;
public bool EmptyLinesBetweenMembers = true;
string indentString;
string indentString = "\t";
public string IndentString {
get { return indentString; }

Loading…
Cancel
Save