diff options
author | Mike Krüger <mkrueger@xamarin.com> | 2015-01-21 21:12:34 +0300 |
---|---|---|
committer | Mike Krüger <mkrueger@xamarin.com> | 2015-01-21 21:12:34 +0300 |
commit | 6f3305dfa10ea781f12041939bbfff4d20dc8006 (patch) | |
tree | 8c26c431e3d77a9716325599d4f830a670e5cfca /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem | |
parent | 3927c768e2cf698e7a748d324aeafaf0bd4695b3 (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.cs | 12 | ||||
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs | 21 |
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); |