Browse Source

Allow dotted names (or parts) in search

pull/728/merge
Siegfried Pammer 10 years ago
parent
commit
51e4577c0a
  1. 6
      ILSpy/SearchPane.cs
  2. 43
      ILSpy/SearchStrategies.cs

6
ILSpy/SearchPane.cs

@ -17,23 +17,19 @@ @@ -17,23 +17,19 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Threading;
using ICSharpCode.ILSpy.TreeNodes;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.Utils;
using Mono.Cecil;
using Mono.Cecil.Cil;
namespace ICSharpCode.ILSpy
{

43
ILSpy/SearchStrategies.cs

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Media;
using ICSharpCode.ILSpy.TreeNodes;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.Utils;
using Mono.Cecil;
using Mono.Cecil.Cil;
@ -90,6 +90,27 @@ namespace ICSharpCode.ILSpy @@ -90,6 +90,27 @@ namespace ICSharpCode.ILSpy
{
return false;
}
protected virtual bool MatchName(MemberReference m)
{
if (m.DeclaringType == null)
return IsMatch(m.Name);
return IsMatch(m.Name) || IsMatch(GetLanguageSpecificFullName(m));
}
string GetLanguageSpecificFullName(MemberReference m, string nestedTypeSeparator = ".", string memberSeparator = ".")
{
if (m.DeclaringType != null)
return GetLanguageSpecificFullName(m.DeclaringType, nestedTypeSeparator) + memberSeparator + m.Name;
return m.Name;
}
string GetLanguageSpecificFullName(TypeReference t, string nestedTypeSeparator = ".")
{
if (t.DeclaringType != null)
return GetLanguageSpecificFullName(t.DeclaringType, nestedTypeSeparator) + nestedTypeSeparator + t.Name;
return t.Namespace + "." + t.Name;
}
void Add<T>(IEnumerable<T> items, TypeDefinition type, Language language, Action<SearchResult> addResult, Func<T, bool> matcher, Func<T, ImageSource> image) where T : MemberReference
{
@ -333,22 +354,22 @@ namespace ICSharpCode.ILSpy @@ -333,22 +354,22 @@ namespace ICSharpCode.ILSpy
protected override bool IsMatch(FieldDefinition field)
{
return (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Field) && IsMatch(field.Name);
return (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Field) && MatchName(field);
}
protected override bool IsMatch(PropertyDefinition property)
{
return (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Property) && IsMatch(property.Name);
return (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Property) && MatchName(property);
}
protected override bool IsMatch(EventDefinition ev)
{
return (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Event) && IsMatch(ev.Name);
return (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Event) && MatchName(ev);
}
protected override bool IsMatch(MethodDefinition m)
{
return (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Method) && IsMatch(m.Name);
return (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Method) && MatchName(m);
}
}
@ -361,7 +382,7 @@ namespace ICSharpCode.ILSpy @@ -361,7 +382,7 @@ namespace ICSharpCode.ILSpy
public override void Search(TypeDefinition type, Language language, Action<SearchResult> addResult)
{
if (IsMatch(type.Name) || IsMatch(type.FullName)) {
if (MatchName(type)) {
addResult(new SearchResult {
Member = type,
Image = TypeTreeNode.GetIcon(type),
@ -386,7 +407,7 @@ namespace ICSharpCode.ILSpy @@ -386,7 +407,7 @@ namespace ICSharpCode.ILSpy
public override void Search(TypeDefinition type, Language language, Action<SearchResult> addResult)
{
if (IsMatch(type.Name) || IsMatch(type.FullName))
if (MatchName(type))
{
addResult(new SearchResult
{
@ -408,22 +429,22 @@ namespace ICSharpCode.ILSpy @@ -408,22 +429,22 @@ namespace ICSharpCode.ILSpy
protected override bool IsMatch(FieldDefinition field)
{
return IsMatch(field.Name);
return MatchName(field);
}
protected override bool IsMatch(PropertyDefinition property)
{
return IsMatch(property.Name);
return MatchName(property);
}
protected override bool IsMatch(EventDefinition ev)
{
return IsMatch(ev.Name);
return MatchName(ev);
}
protected override bool IsMatch(MethodDefinition m)
{
return IsMatch(m.Name);
return MatchName(m);
}
}
}

Loading…
Cancel
Save