Browse Source

Resolved #353: Ctrl+G should display extension methods

pull/567/head
Andreas Weizel 11 years ago
parent
commit
4f0a5685b9
  1. 26
      src/Main/Base/Project/Src/Gui/Dialogs/GotoDialog.cs

26
src/Main/Base/Project/Src/Gui/Dialogs/GotoDialog.cs

@ -28,6 +28,7 @@ using System.Windows.Media; @@ -28,6 +28,7 @@ using System.Windows.Media;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using ICSharpCode.SharpDevelop.Parser;
@ -242,6 +243,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -242,6 +243,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
AddAllMembersMatchingText(text);
AddAllExtensionMethodsMatchingText(text);
}
newItems.Sort();
listBox.ItemsSource = newItems;
@ -250,6 +252,30 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -250,6 +252,30 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
void AddAllExtensionMethodsMatchingText(string text)
{
List<IUnresolvedTypeDefinition> list = new List<IUnresolvedTypeDefinition>();
if (ProjectService.OpenSolution != null) {
foreach (IProject project in ProjectService.OpenSolution.Projects) {
IProjectContent projectContent = project.ProjectContent;
if (projectContent != null) {
foreach (IUnresolvedTypeDefinition c in projectContent.GetAllTypeDefinitions()) {
AddAllExtensionMethodsMatchingText(c, text);
}
}
}
}
}
void AddAllExtensionMethodsMatchingText(IUnresolvedTypeDefinition c, string text)
{
foreach (IUnresolvedMember m in c.Members) {
var defMethod = m as DefaultUnresolvedMethod;
if ((defMethod != null) && defMethod.IsExtensionMethod)
AddItemIfMatchText(text, m, ClassBrowserIconService.GetIcon(m), false);
}
}
void AddAllMembersMatchingText(string text)
{
ITextEditor editor = GetEditor();

Loading…
Cancel
Save