Skip to content

Instantly share code, notes, and snippets.

@mkrueger
Created March 19, 2019 13:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mkrueger/ff1dd50b183d6454bf90db168daed3b7 to your computer and use it in GitHub Desktop.
Save mkrueger/ff1dd50b183d6454bf90db168daed3b7 to your computer and use it in GitHub Desktop.
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs
index e4dda73ec2..020899f643 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs
@@ -186,7 +186,19 @@ namespace MonoDevelop.CodeActions
{
Runtime.AssertMainThread ();
var caretOffset = Editor.CaretOffset;
- return collections.Select (c => FilterOnUIThread (c, workspace)).Where(x => x != null).OrderBy(x => GetDistance (x, caretOffset)).ToImmutableArray ();
+ var builder = ImmutableArray.CreateBuilder<CodeFixCollection> (collections.Length);
+ var ids = new HashSet<string> ();
+ foreach (var c in collections) {
+ if (ids.Contains (c.FirstDiagnostic.Id))
+ continue;
+ ids.Add (c.FirstDiagnostic.Id);
+ var filtered = FilterOnUIThread (c, workspace);
+ if (filtered == null)
+ continue;
+ builder.Add (filtered);
+ }
+ builder.Sort ((x, y) => GetDistance (x, caretOffset).CompareTo (GetDistance (y, caretOffset)));
+ return builder.ToImmutableArray ();
}
static int GetDistance (CodeFixCollection fixCollection, int caretOffset)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment