diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
index 55d9ea0786..d744d75ac6 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
@@ -62,6 +62,7 @@
+
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooLanguageProperties.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooLanguageProperties.cs
new file mode 100644
index 0000000000..6fb5b1a59f
--- /dev/null
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooLanguageProperties.cs
@@ -0,0 +1,37 @@
+//
+// 2002-2005 AlphaSierraPapa
+// GNU General Public License
+//
+// $Revision$
+//
+
+using System;
+using ICSharpCode.SharpDevelop.Dom;
+
+namespace Grunwald.BooBinding
+{
+ public class BooLanguageProperties : LanguageProperties
+ {
+ public readonly static BooLanguageProperties Instance = new BooLanguageProperties();
+
+ public BooLanguageProperties() : base(StringComparer.InvariantCulture) {}
+
+ public override bool ImportNamespaces {
+ get {
+ return true;
+ }
+ }
+
+ public override bool ImportModules {
+ get {
+ return true;
+ }
+ }
+
+ public override bool CanImportClasses {
+ get {
+ return true;
+ }
+ }
+ }
+}
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
index d7c5caf28c..999b6cbf30 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
@@ -7,6 +7,7 @@
using System;
using System.ComponentModel;
+using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.Core;
@@ -19,6 +20,7 @@ namespace Grunwald.BooBinding
{
this.Name = projectName;
Language = "Boo";
+ LanguageProperties = BooLanguageProperties.Instance;
SetupProject(fileName);
IdGuid = BaseConfiguration["ProjectGuid"];
}
@@ -26,6 +28,7 @@ namespace Grunwald.BooBinding
public BooProject(ProjectCreateInformation info)
{
Language = "Boo";
+ LanguageProperties = BooLanguageProperties.Instance;
Create(info);
imports.Add("$(BooBinPath)\\MsBuild.Boo.Targets");
}
@@ -35,6 +38,18 @@ namespace Grunwald.BooBinding
return new BooLanguageBinding().CanCompile(fileName);
}
+ public override ParseProjectContent CreateProjectContent()
+ {
+ ParseProjectContent pc = base.CreateProjectContent();
+ ReferenceProjectItem systemItem = new ReferenceProjectItem(this, "System");
+ pc.ReferencedContents.Add(ProjectContentRegistry.GetProjectContentForReference(systemItem));
+ ReferenceProjectItem booLangItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Builtins).Assembly.Location);
+ pc.ReferencedContents.Add(ProjectContentRegistry.GetProjectContentForReference(booLangItem));
+ pc.DefaultImports = new DefaultUsing(pc);
+ pc.DefaultImports.Usings.Add("Boo.Lang.Builtins");
+ return pc;
+ }
+
[Browsable(false)]
public override IAmbience Ambience {
get {
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs
index 7140a79315..c91d2e5a21 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs
@@ -157,6 +157,7 @@ namespace Grunwald.BooBinding.CodeCompletion
{
if (!Initialize(fileName, caretLine, caretColumn))
return null;
+
ArrayList result = GetImportedNamespaceContents();
NRResolver.AddContentsFromCalling(result, callingClass, callingMember);
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs
index 0eb747c704..97d6c70330 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs
@@ -203,7 +203,7 @@ namespace Grunwald.BooBinding.CodeCompletion
} else if (reference is AST.SimpleTypeReference) {
string name = ((AST.SimpleTypeReference)reference).Name;
if (BooAmbience.ReverseTypeConversionTable.ContainsKey(name))
- return new GetClassReturnType(ProjectContentRegistry.Mscorlib, BooAmbience.ReverseTypeConversionTable[name], 0);
+ return new GetClassReturnType(projectContent, BooAmbience.ReverseTypeConversionTable[name], 0);
return new SearchClassReturnType(projectContent, callingClass, caretLine, caretColumn,
name, 0);
} else if (reference is AST.CallableTypeReference) {
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs
index 507dc29cc0..c701ca81b9 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs
@@ -168,17 +168,7 @@ namespace Grunwald.BooBinding.CodeCompletion
return true;
}
- // Boo can import classes:
- foreach (IUsing @using in cu.Usings) {
- foreach (string import in @using.Usings) {
- IClass c = projectContent.GetClass(import);
- if (c != null) {
- if (ResolveMember(c.DefaultReturnType, identifier))
- return true;
- }
- }
- }
- // Boo can import modules:
+ // Boo can import classes+modules:
foreach (object o in resolver.GetImportedNamespaceContents()) {
IClass c = o as IClass;
if (c != null && IsSameName(identifier, c.Name)) {
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/ConsoleProject.xpt b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/ConsoleProject.xpt
index 317a100834..65d821e43f 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/ConsoleProject.xpt
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/ConsoleProject.xpt
@@ -21,7 +21,6 @@
-
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/FormsProject.xpt b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/FormsProject.xpt
index da0c8403ad..2ed459f472 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/FormsProject.xpt
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/FormsProject.xpt
@@ -21,7 +21,6 @@
-
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/Library.xpt b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/Library.xpt
index 3634404633..25481edcbd 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/Library.xpt
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/Library.xpt
@@ -21,7 +21,6 @@
-
diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
index a6e834cfb3..1d81f86c0a 100644
--- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
+++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
@@ -996,7 +996,25 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return;
}
bool importNamespaces = projectContent.Language.ImportNamespaces;
+ bool importClasses = projectContent.Language.CanImportClasses;
foreach (string name in u.Usings) {
+ if (importClasses) {
+ IClass c = projectContent.GetClass(name, 0);
+ if (c != null) {
+ ArrayList members = new ArrayList();
+ IReturnType t = c.DefaultReturnType;
+ members.AddRange(t.GetMethods());
+ members.AddRange(t.GetFields());
+ members.AddRange(t.GetEvents());
+ members.AddRange(t.GetProperties());
+ foreach (IMember m in members) {
+ if (m.IsStatic && m.IsPublic) {
+ result.Add(m);
+ }
+ }
+ continue;
+ }
+ }
if (importNamespaces) {
projectContent.AddNamespaceContents(result, name, projectContent.Language, true);
} else {
diff --git a/src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs b/src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs
index 3143b9bfbc..5ee1445b68 100644
--- a/src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs
+++ b/src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs
@@ -112,9 +112,20 @@ namespace ICSharpCode.Core
}
}
+ int languageDefaultImportCount = -1;
+
void UpdateDefaultImports(ProjectItem[] items)
{
- DefaultImports = null;
+ if (languageDefaultImportCount < 0) {
+ languageDefaultImportCount = (DefaultImports != null) ? DefaultImports.Usings.Count : 0;
+ }
+ if (languageDefaultImportCount == 0) {
+ DefaultImports = null;
+ } else {
+ while (DefaultImports.Usings.Count > languageDefaultImportCount) {
+ DefaultImports.Usings.RemoveAt(languageDefaultImportCount);
+ }
+ }
foreach (ProjectItem item in items) {
if (item.ItemType == ItemType.Import) {
if (DefaultImports == null) {