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); } }