Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@xamarin.com>2015-01-21 21:12:34 +0300
committerMike Krüger <mkrueger@xamarin.com>2015-01-21 21:12:34 +0300
commit6f3305dfa10ea781f12041939bbfff4d20dc8006 (patch)
tree8c26c431e3d77a9716325599d4f830a670e5cfca /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem
parent3927c768e2cf698e7a748d324aeafaf0bd4695b3 (diff)
[Ide] Output tracking can now be done via language name as well.
Needed for the F# binding.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemParserNode.cs12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs21
2 files changed, 28 insertions, 5 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemParserNode.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemParserNode.cs
index 152140597b..1cb27e418a 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemParserNode.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemParserNode.cs
@@ -100,6 +100,18 @@ namespace MonoDevelop.Ide.TypeSystem
projectType = value;
}
}
+
+ [NodeAttribute (Description="The language name.")]
+ string languageName;
+
+ public string LanguageName {
+ get {
+ return languageName;
+ }
+ set {
+ languageName = value;
+ }
+ }
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
index 9ebc85454a..3b4087156a 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
@@ -49,6 +49,7 @@ using ICSharpCode.NRefactory.Completion;
using System.Diagnostics;
using MonoDevelop.Projects.SharedAssetsProjects;
using Mono.CSharp.Nullable;
+using MonoDevelop.Ide.Templates;
namespace MonoDevelop.Ide.TypeSystem
{
@@ -197,13 +198,13 @@ namespace MonoDevelop.Ide.TypeSystem
});
AddinManager.AddExtensionNodeHandler ("/MonoDevelop/TypeSystem/OutputTracking", delegate (object sender, ExtensionNodeEventArgs args) {
- var projectType = ((TypeSystemOutputTrackingNode)args.ExtensionNode).ProjectType;
+ var node = (TypeSystemOutputTrackingNode)args.ExtensionNode;
switch (args.Change) {
case ExtensionChange.Add:
- outputTrackedProjects.Add (projectType);
+ outputTrackedProjects.Add (node);
break;
case ExtensionChange.Remove:
- outputTrackedProjects.Remove (projectType);
+ outputTrackedProjects.Remove (node);
break;
}
});
@@ -260,13 +261,23 @@ namespace MonoDevelop.Ide.TypeSystem
}
}
- static readonly List<string> outputTrackedProjects = new List<string> ();
+ static readonly List<TypeSystemOutputTrackingNode> outputTrackedProjects = new List<TypeSystemOutputTrackingNode> ();
+
+ static bool IsOutputTracked (DotNetProject project)
+ {
+ foreach (var projectType in project.GetProjectTypes ()) {
+ if (outputTrackedProjects.Any (otp => otp.ProjectType != null && string.Equals (otp.ProjectType, projectType, StringComparison.OrdinalIgnoreCase))) {
+ return true;
+ }
+ }
+ return outputTrackedProjects.Any (otp => otp.LanguageName != null && string.Equals (otp.LanguageName, project.LanguageName, StringComparison.OrdinalIgnoreCase));
+ }
static void CheckProjectOutput (DotNetProject project, bool autoUpdate)
{
if (project == null)
throw new ArgumentNullException ("project");
- if (project.GetProjectTypes ().Any (p => outputTrackedProjects.Contains (p, StringComparer.OrdinalIgnoreCase))) {
+ if (IsOutputTracked (project)) {
var fileName = project.GetOutputFileName (IdeApp.Workspace.ActiveConfiguration);
var wrapper = GetProjectContentWrapper (project);