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
path: root/main
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@xamarin.com>2013-08-29 22:17:52 +0400
committerMike Krüger <mkrueger@xamarin.com>2013-08-29 22:18:32 +0400
commit1b91d1aeeb350eff4f10cc5f263ec7f6553888b6 (patch)
treea92997fe58e711885f82ecbcce1edd47ce64b527 /main
parent3f593b27461ce6f5283a8c9389bfe779e79d1106 (diff)
Fixed 'Bug 14303 - Fixes should be listed before actions '.
Diffstat (limited to 'main')
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/NRefactoryCodeAction.cs1
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeAction.cs9
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionWidget.cs20
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs10
4 files changed, 35 insertions, 5 deletions
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/NRefactoryCodeAction.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/NRefactoryCodeAction.cs
index d6efe363f0..183501f893 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/NRefactoryCodeAction.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/NRefactoryCodeAction.cs
@@ -45,6 +45,7 @@ namespace MonoDevelop.CSharp.Refactoring.CodeActions
this.Title = title;
this.act = act;
this.SiblingKey = siblingKey;
+ this.Severity = act.Severity;
this.DocumentRegion = new Mono.TextEditor.DocumentRegion (act.Start, act.End);
}
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeAction.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeAction.cs
index 288afeeda5..7824ed044a 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeAction.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeAction.cs
@@ -27,6 +27,7 @@ using ICSharpCode.NRefactory;
using System;
using Mono.TextEditor;
using ICSharpCode.NRefactory.CSharp.Refactoring;
+using ICSharpCode.NRefactory.Refactoring;
namespace MonoDevelop.CodeActions
{
@@ -73,7 +74,13 @@ namespace MonoDevelop.CodeActions
/// <value>The sibling key.</value>
public object SiblingKey { get; set; }
- public CodeAction ()
+ /// <summary>
+ /// Gets or sets the severity of the code action.
+ /// </summary>
+ /// <value>The severity.</value>
+ public Severity Severity { get; set; }
+
+ protected CodeAction ()
{
IdString = GetType ().FullName;
}
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionWidget.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionWidget.cs
index 859127bd6c..5dba323203 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionWidget.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionWidget.cs
@@ -109,7 +109,7 @@ namespace MonoDevelop.CodeActions
usages.Set (id, CodeActionUsages [id]);
}
- int GetUsage (string id)
+ internal static int GetUsage (string id)
{
int result;
if (!CodeActionUsages.TryGetValue (id, out result))
@@ -117,10 +117,23 @@ namespace MonoDevelop.CodeActions
return result;
}
+ internal static bool IsAnalysisOrErrorFix (CodeAction act)
+ {
+ return act is AnalysisContextActionProvider.AnalysisCodeAction || act.Severity == Severity.Error;
+ }
+
public void PopulateFixes (Gtk.Menu menu, ref int items)
{
int mnemonic = 1;
- foreach (var fix_ in fixes.OrderByDescending (i => GetUsage (i.IdString))) {
+ bool gotImportantFix = false, addedSeparator = false;
+ foreach (var fix_ in fixes.OrderByDescending (i => Tuple.Create (IsAnalysisOrErrorFix(i), (int)i.Severity, GetUsage (i.IdString)))) {
+ if (IsAnalysisOrErrorFix (fix_))
+ gotImportantFix = true;
+ if (!addedSeparator && gotImportantFix && !IsAnalysisOrErrorFix(fix_)) {
+ menu.Add (new Gtk.SeparatorMenuItem ());
+ addedSeparator = true;
+ }
+
var fix = fix_;
var escapedLabel = fix.Title.Replace ("_", "__");
var label = (mnemonic <= 10)
@@ -135,7 +148,8 @@ namespace MonoDevelop.CodeActions
menu.Add (thisInstanceMenuItem);
items++;
}
- var first = true;
+
+ bool first = true;
var alreadyInserted = new HashSet<BaseCodeIssueProvider> ();
foreach (var analysisFix_ in fixes.OfType <AnalysisContextActionProvider.AnalysisCodeAction>().Where (f => f.Result is InspectorResults)) {
var analysisFix = analysisFix_;
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs
index bf11b98f2c..2817ad7e7f 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs
@@ -286,13 +286,21 @@ namespace MonoDevelop.Refactoring
}
if (refactoringInfo.validActions != null) {
var context = refactoringInfo.lastDocument.CreateRefactoringContext (doc, CancellationToken.None);
- foreach (var fix_ in refactoringInfo.validActions) {
+ bool gotImportantFix = false, addedSeparator = false;
+
+ foreach (var fix_ in refactoringInfo.validActions.OrderByDescending (i => Tuple.Create (CodeActionWidget.IsAnalysisOrErrorFix(i), (int)i.Severity, CodeActionWidget.GetUsage (i.IdString)))) {
var fix = fix_;
if (first) {
first = false;
if (ciset.CommandInfos.Count > 0)
ciset.CommandInfos.AddSeparator ();
}
+ if (CodeActionWidget.IsAnalysisOrErrorFix (fix_))
+ gotImportantFix = true;
+ if (!addedSeparator && gotImportantFix && !CodeActionWidget.IsAnalysisOrErrorFix(fix_)) {
+ ciset.CommandInfos.AddSeparator ();
+ addedSeparator = true;
+ }
ciset.CommandInfos.Add (fix.Title, new Action (() => RefactoringService.ApplyFix (fix, context)));
}
}