diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs
index acf5d7db90..7f9dec3564 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs
@@ -44,6 +44,15 @@ namespace ICSharpCode.Core
}
}
+ static CSharpAmbience instance;
+
+ public static CSharpAmbience Instance {
+ get {
+ if (instance == null) instance = new CSharpAmbience();
+ return instance;
+ }
+ }
+
static CSharpAmbience()
{
for (int i = 0; i < typeConversionList.GetLength(0); ++i) {
@@ -507,35 +516,35 @@ namespace ICSharpCode.Core
}
StringBuilder builder = new StringBuilder();
- bool linkSet = false;
-
- if (UseLinkArrayList) {
-// TODO: #Assembly dependance:
-// SharpAssemblyReturnType ret = returnType as SharpAssemblyReturnType;
-// if (ret != null) {
-// if (ret.UnderlyingClass != null) {
-// builder.Append("");
-// linkSet = true;
-// }
-// }
- }
-
- if (returnType.FullyQualifiedName != null && typeConversionTable[returnType.FullyQualifiedName] != null) {
- builder.Append(typeConversionTable[returnType.FullyQualifiedName].ToString());
+ string fullName = returnType.FullyQualifiedName;
+ if (fullName != null && typeConversionTable[fullName] != null) {
+ builder.Append(typeConversionTable[fullName].ToString());
} else {
if (UseFullyQualifiedNames) {
- builder.Append(returnType.FullyQualifiedName);
+ builder.Append(fullName);
} else {
builder.Append(returnType.Name);
}
}
- if (linkSet) {
- builder.Append("");
- }
+ UnpackNestedType(builder, returnType);
- if (returnType is SpecificReturnType) {
+ return builder.ToString();
+ }
+
+ void UnpackNestedType(StringBuilder builder, IReturnType returnType)
+ {
+ ArrayReturnType art = returnType as ArrayReturnType;
+ if (art != null) {
+ builder.Append('[');
+ for (int i = 1; i < art.ArrayDimensions; ++i) {
+ builder.Append(',');
+ }
+ builder.Append(']');
+ UnpackNestedType(builder, art.ElementType);
+ } else if (returnType is SpecificReturnType) {
SpecificReturnType rt = (SpecificReturnType)returnType;
+ UnpackNestedType(builder, rt.BaseType);
builder.Append('<');
for (int i = 0; i < rt.TypeParameters.Count; ++i) {
if (i > 0) builder.Append(", ");
@@ -543,8 +552,6 @@ namespace ICSharpCode.Core
}
builder.Append('>');
}
-
- return builder.ToString();
}
public override string Convert(IParameter param)
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs
index 1f05459433..55eeb40597 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs
@@ -38,6 +38,13 @@ namespace CSharpBinding
}
}
+ [Browsable(false)]
+ public override IAmbience Ambience {
+ get {
+ return CSharpAmbience.Instance;
+ }
+ }
+
public bool GetDebugSymbols(string configurationName, string platform)
{
return GetConfiguration(configurationName, platform).Get("DebugSymbols", false);
diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs
index 0dd6859bbe..a4c8c3e7f9 100644
--- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs
+++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs
@@ -39,6 +39,13 @@ namespace VBNetBinding
}
}
+ [Browsable(false)]
+ public override IAmbience Ambience {
+ get {
+ return VBNetAmbience.Instance;
+ }
+ }
+
public bool GetDebugSymbols(string configurationName, string platform)
{
return GetConfiguration(configurationName, platform).Get("DebugSymbols", false);
diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetAmbience.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetAmbience.cs
index 8be8c118d5..9da989d441 100644
--- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetAmbience.cs
+++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetAmbience.cs
@@ -41,6 +41,15 @@ namespace VBNetBinding
}
}
+ static VBNetAmbience instance;
+
+ public static VBNetAmbience Instance {
+ get {
+ if (instance == null) instance = new VBNetAmbience();
+ return instance;
+ }
+ }
+
string GetModifier(IDecoration decoration)
{
StringBuilder builder = new StringBuilder();
@@ -117,37 +126,39 @@ namespace VBNetBinding
builder.Append("");
}
- switch (c.ClassType) {
- case ClassType.Delegate:
- builder.Append("Delegate ");
- if (ShowReturnType) {
- foreach (IMethod m in c.Methods) {
- if (m.Name != "Invoke") {
- continue;
- }
-
- if (m.ReturnType == null || m.ReturnType.FullyQualifiedName == "System.Void") {
- builder.Append("Sub");
- } else {
- builder.Append("Function");
+ if (ShowModifiers) {
+ switch (c.ClassType) {
+ case ClassType.Delegate:
+ builder.Append("Delegate ");
+ if (ShowReturnType) {
+ foreach (IMethod m in c.Methods) {
+ if (m.Name != "Invoke") {
+ continue;
+ }
+
+ if (m.ReturnType == null || m.ReturnType.FullyQualifiedName == "System.Void") {
+ builder.Append("Sub");
+ } else {
+ builder.Append("Function");
+ }
}
}
- }
- break;
- case ClassType.Class:
- builder.Append("Class");
- break;
- case ClassType.Struct:
- builder.Append("Structure");
- break;
- case ClassType.Interface:
- builder.Append("Interface");
- break;
- case ClassType.Enum:
- builder.Append("Enum");
- break;
+ break;
+ case ClassType.Class:
+ builder.Append("Class");
+ break;
+ case ClassType.Struct:
+ builder.Append("Structure");
+ break;
+ case ClassType.Interface:
+ builder.Append("Interface");
+ break;
+ case ClassType.Enum:
+ builder.Append("Enum");
+ break;
+ }
+ builder.Append(' ');
}
- builder.Append(' ');
if (IncludeHTMLMarkup) {
builder.Append("");
@@ -481,31 +492,35 @@ namespace VBNetBinding
}
StringBuilder builder = new StringBuilder();
- bool linkSet = false;
-// TODO: #Assembly dependance:
-
-// if (UseLinkArrayList) {
-// SharpAssemblyReturnType ret = returnType as SharpAssemblyReturnType;
-// if (ret != null) {
-// if (ret.UnderlyingClass != null) {
-// builder.Append("");
-// linkSet = true;
-// }
-// }
-// }
-
- if (returnType.FullyQualifiedName != null && typeConversionTable[returnType.FullyQualifiedName] != null) {
- builder.Append(typeConversionTable[returnType.FullyQualifiedName].ToString());
+ string fullName = returnType.FullyQualifiedName;
+ if (fullName != null && typeConversionTable[fullName] != null) {
+ builder.Append(typeConversionTable[fullName].ToString());
} else {
- builder.Append(UseFullyQualifiedNames ? returnType.FullyQualifiedName : returnType.Name);
+ if (UseFullyQualifiedNames) {
+ builder.Append(fullName);
+ } else {
+ builder.Append(returnType.Name);
+ }
}
- if (linkSet) {
- builder.Append("");
- }
+ UnpackNestedType(builder, returnType);
- if (returnType is SpecificReturnType) {
+ return builder.ToString();
+ }
+
+ void UnpackNestedType(StringBuilder builder, IReturnType returnType)
+ {
+ ArrayReturnType art = returnType as ArrayReturnType;
+ if (art != null) {
+ builder.Append('(');
+ for (int i = 1; i < art.ArrayDimensions; ++i) {
+ builder.Append(',');
+ }
+ builder.Append(')');
+ UnpackNestedType(builder, art.ElementType);
+ } else if (returnType is SpecificReturnType) {
SpecificReturnType rt = (SpecificReturnType)returnType;
+ UnpackNestedType(builder, rt.BaseType);
builder.Append("(Of");
for (int i = 0; i < rt.TypeParameters.Count; ++i) {
if (i > 0) builder.Append(", ");
@@ -513,8 +528,6 @@ namespace VBNetBinding
}
builder.Append(')');
}
-
- return builder.ToString();
}
public override string Convert(IParameter param)
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs
index 8fd47a48d4..2e80cbb913 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs
@@ -41,13 +41,13 @@ namespace ICSharpCode.SharpDevelop.Dom
public override string FullyQualifiedName {
get {
- return AppendArrayString(elementType.FullyQualifiedName);
+ return elementType.FullyQualifiedName;
}
}
public override string Name {
get {
- return AppendArrayString(elementType.Name);
+ return elementType.Name;
}
}
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs
index 7fda69507d..fc6356b388 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs
@@ -101,7 +101,7 @@ namespace ICSharpCode.SharpDevelop.Dom
return c.FullyQualifiedName;
}
set {
-
+ throw new NotSupportedException();
}
}
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/LazyReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/LazyReturnType.cs
index 37f497d334..5bb946615a 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/LazyReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/LazyReturnType.cs
@@ -19,11 +19,17 @@ namespace ICSharpCode.SharpDevelop.Dom
{
IProjectContent content;
string fullName;
+ string shortName;
public GetClassReturnType(IProjectContent content, string fullName)
{
this.content = content;
this.fullName = fullName;
+ int pos = fullName.LastIndexOf('.');
+ if (pos < 0)
+ shortName = fullName;
+ else
+ shortName = fullName.Substring(pos + 1);
}
public override bool Equals(object o)
@@ -53,8 +59,7 @@ namespace ICSharpCode.SharpDevelop.Dom
public override string Name {
get {
- IReturnType baseType = BaseType;
- return (baseType != null) ? baseType.Name : fullName.Substring(fullName.LastIndexOf('.') + 1);
+ return shortName;
}
}
@@ -88,6 +93,7 @@ namespace ICSharpCode.SharpDevelop.Dom
int caretLine;
int caretColumn;
string name;
+ string shortName;
public SearchClassReturnType(IClass declaringClass, int caretLine, int caretColumn, string name)
{
@@ -95,6 +101,11 @@ namespace ICSharpCode.SharpDevelop.Dom
this.caretLine = caretLine;
this.caretColumn = caretColumn;
this.name = name;
+ int pos = name.LastIndexOf('.');
+ if (pos < 0)
+ shortName = name;
+ else
+ shortName = name.Substring(pos + 1);
}
public override bool Equals(object o)
@@ -126,7 +137,7 @@ namespace ICSharpCode.SharpDevelop.Dom
public override string Name {
get {
- return name;
+ return shortName;
}
}
diff --git a/src/Main/Base/Project/Src/Gui/Components/StatusBar/SdStatusBar.cs b/src/Main/Base/Project/Src/Gui/Components/StatusBar/SdStatusBar.cs
index e55edf8fd7..0dce090918 100644
--- a/src/Main/Base/Project/Src/Gui/Components/StatusBar/SdStatusBar.cs
+++ b/src/Main/Base/Project/Src/Gui/Components/StatusBar/SdStatusBar.cs
@@ -71,9 +71,9 @@ namespace ICSharpCode.SharpDevelop.Gui
springLabel.Spring = true;
cursorStatusBarPanel.AutoSize = false;
- cursorStatusBarPanel.Width = 160;
+ cursorStatusBarPanel.Width = 150;
modeStatusBarPanel.AutoSize = false;
- modeStatusBarPanel.Width = 35;
+ modeStatusBarPanel.Width = 25;
statusProgressBar.Visible = false;
statusProgressBar.Width = 100;
diff --git a/src/Main/Base/Project/Src/Project/AbstractProject.cs b/src/Main/Base/Project/Src/Project/AbstractProject.cs
index f672fd7703..8e15c484d5 100644
--- a/src/Main/Base/Project/Src/Project/AbstractProject.cs
+++ b/src/Main/Base/Project/Src/Project/AbstractProject.cs
@@ -133,6 +133,13 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
+ [Browsable(false)]
+ public virtual IAmbience Ambience {
+ get {
+ return null;
+ }
+ }
+
[Browsable(false)]
public string Configuration {
get {
diff --git a/src/Main/Base/Project/Src/Project/IProject.cs b/src/Main/Base/Project/Src/Project/IProject.cs
index 0b7a4131cc..1485c5f140 100644
--- a/src/Main/Base/Project/Src/Project/IProject.cs
+++ b/src/Main/Base/Project/Src/Project/IProject.cs
@@ -36,6 +36,10 @@ namespace ICSharpCode.SharpDevelop.Project
get;
}
+ ICSharpCode.Core.IAmbience Ambience {
+ get;
+ }
+
string FileName {
get;
}
diff --git a/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs b/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs
index 81204e280a..dc0355b57d 100644
--- a/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs
+++ b/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs
@@ -38,22 +38,34 @@ namespace ICSharpCode.Core
}
}
+ static AmbienceReflectionDecorator defaultAmbience;
+
public static AmbienceReflectionDecorator CurrentAmbience {
get {
-
- string language = PropertyService.Get(ambienceProperty, "C#");
- IAmbience ambience = (IAmbience)AddInTree.GetTreeNode("/SharpDevelop/Workbench/Ambiences").BuildChildItem(language, null);
- if (ambience == null) {
- MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Services.AmbienceService.AmbienceNotFoundError}");
- return null;
+ ICSharpCode.SharpDevelop.Project.IProject p = ICSharpCode.SharpDevelop.Project.ProjectService.CurrentProject;
+ if (p != null) {
+ IAmbience ambience = p.Ambience;
+ if (ambience != null) {
+ return new AmbienceReflectionDecorator(ambience);
+ }
+ }
+ if (defaultAmbience == null) {
+ string language = PropertyService.Get(ambienceProperty, "C#");
+ IAmbience ambience = (IAmbience)AddInTree.GetTreeNode("/SharpDevelop/Workbench/Ambiences").BuildChildItem(language, null);
+ if (ambience == null) {
+ MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Services.AmbienceService.AmbienceNotFoundError}");
+ return null;
+ }
+ defaultAmbience = new AmbienceReflectionDecorator(ambience);
}
- return new AmbienceReflectionDecorator(ambience);
+ return defaultAmbience;
}
}
static void PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.Key == ambienceProperty) {
+ defaultAmbience = null;
OnAmbienceChanged(EventArgs.Empty);
}
}