|
|
@ -3,6 +3,7 @@ using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Linq; |
|
|
|
using System.Text.RegularExpressions; |
|
|
|
using System.Text.RegularExpressions; |
|
|
|
using System.Windows.Media; |
|
|
|
using System.Windows.Media; |
|
|
|
|
|
|
|
using ICSharpCode.Decompiler.TypeSystem; |
|
|
|
using ICSharpCode.Decompiler.Util; |
|
|
|
using ICSharpCode.Decompiler.Util; |
|
|
|
using ICSharpCode.ILSpy.TreeNodes; |
|
|
|
using ICSharpCode.ILSpy.TreeNodes; |
|
|
|
using Mono.Cecil; |
|
|
|
using Mono.Cecil; |
|
|
@ -36,8 +37,10 @@ namespace ICSharpCode.ILSpy |
|
|
|
searchTerm = terms; |
|
|
|
searchTerm = terms; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected float CalculateFitness(MemberReference member, string text) |
|
|
|
protected float CalculateFitness(MemberReference member) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
string text = member.Name; |
|
|
|
|
|
|
|
|
|
|
|
// Probably compiler generated types without meaningful names, show them last
|
|
|
|
// Probably compiler generated types without meaningful names, show them last
|
|
|
|
if (text.StartsWith("<")) { |
|
|
|
if (text.StartsWith("<")) { |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
@ -45,22 +48,14 @@ namespace ICSharpCode.ILSpy |
|
|
|
|
|
|
|
|
|
|
|
// Constructors always have the same name in IL:
|
|
|
|
// Constructors always have the same name in IL:
|
|
|
|
// Use type name instead
|
|
|
|
// Use type name instead
|
|
|
|
if (text == "..ctor" || text == ".ctor") { |
|
|
|
if (text == ".cctor" || text == ".ctor") { |
|
|
|
text = member.DeclaringType.Name; |
|
|
|
text = member.DeclaringType.Name; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Ignore generic arguments, it not possible to search based on them either
|
|
|
|
// Ignore generic arguments, it not possible to search based on them either
|
|
|
|
int length = 0; |
|
|
|
text = ReflectionHelper.SplitTypeParameterCountFromReflectionName(text); |
|
|
|
int generics = 0; |
|
|
|
|
|
|
|
for (int i = 0; i < text.Length; i++) { |
|
|
|
return 1.0f / text.Length; |
|
|
|
if (text[i] == '<') |
|
|
|
|
|
|
|
generics++; |
|
|
|
|
|
|
|
else if (text[i] == '>') |
|
|
|
|
|
|
|
generics--; |
|
|
|
|
|
|
|
else if (generics == 0) |
|
|
|
|
|
|
|
length++; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return 1.0f / length; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected virtual bool IsMatch(FieldDefinition field, Language language) |
|
|
|
protected virtual bool IsMatch(FieldDefinition field, Language language) |
|
|
@ -151,7 +146,7 @@ namespace ICSharpCode.ILSpy |
|
|
|
addResult(new SearchResult |
|
|
|
addResult(new SearchResult |
|
|
|
{ |
|
|
|
{ |
|
|
|
Member = item, |
|
|
|
Member = item, |
|
|
|
Fitness = CalculateFitness(item, item.Name), |
|
|
|
Fitness = CalculateFitness(item), |
|
|
|
Image = image(item), |
|
|
|
Image = image(item), |
|
|
|
Name = GetLanguageSpecificName(language, (IMemberDefinition)item), |
|
|
|
Name = GetLanguageSpecificName(language, (IMemberDefinition)item), |
|
|
|
LocationImage = TypeTreeNode.GetIcon(type), |
|
|
|
LocationImage = TypeTreeNode.GetIcon(type), |
|
|
@ -423,7 +418,7 @@ namespace ICSharpCode.ILSpy |
|
|
|
string name = language.TypeToString(type, includeNamespace: false); |
|
|
|
string name = language.TypeToString(type, includeNamespace: false); |
|
|
|
addResult(new SearchResult { |
|
|
|
addResult(new SearchResult { |
|
|
|
Member = type, |
|
|
|
Member = type, |
|
|
|
Fitness = CalculateFitness(type, name), |
|
|
|
Fitness = CalculateFitness(type), |
|
|
|
Image = TypeTreeNode.GetIcon(type), |
|
|
|
Image = TypeTreeNode.GetIcon(type), |
|
|
|
Name = name, |
|
|
|
Name = name, |
|
|
|
LocationImage = type.DeclaringType != null ? TypeTreeNode.GetIcon(type.DeclaringType) : Images.Namespace, |
|
|
|
LocationImage = type.DeclaringType != null ? TypeTreeNode.GetIcon(type.DeclaringType) : Images.Namespace, |
|
|
@ -453,7 +448,7 @@ namespace ICSharpCode.ILSpy |
|
|
|
{ |
|
|
|
{ |
|
|
|
Member = type, |
|
|
|
Member = type, |
|
|
|
Image = TypeTreeNode.GetIcon(type), |
|
|
|
Image = TypeTreeNode.GetIcon(type), |
|
|
|
Fitness = CalculateFitness(type, name), |
|
|
|
Fitness = CalculateFitness(type), |
|
|
|
Name = name, |
|
|
|
Name = name, |
|
|
|
LocationImage = type.DeclaringType != null ? TypeTreeNode.GetIcon(type.DeclaringType) : Images.Namespace, |
|
|
|
LocationImage = type.DeclaringType != null ? TypeTreeNode.GetIcon(type.DeclaringType) : Images.Namespace, |
|
|
|
Location = type.DeclaringType != null ? language.TypeToString(type.DeclaringType, includeNamespace: true) : type.Namespace |
|
|
|
Location = type.DeclaringType != null ? language.TypeToString(type.DeclaringType, includeNamespace: true) : type.Namespace |
|
|
|