We’re doing a refresh on the search functionality; below you can see the old search pane. One of the main problems with this is that when you open it up, it eats up the space you would normally use to look at code.
So to try to address this we started working on a filtering solution for the assembly tree. We got some way into development and put it out in a beta. We also got straight into user testing with a number of volunteers.
During our user trials we found that people generally wanted two things. First, people wanted to get to the code they wanted faster. Previously we’d wait a couple of seconds after you’d finish typing to try and make sure you were actually done before kicking off the search. After the feedback we dropped this delay down to half a second after you finish typing and allowed you to kick off the search even faster if you hit return. We also added some more immediate feedback so you can see that reflector is actually doing something.
The second thing users wanted was to be able to scope the search, and so we’ve made some improvements in this area too. Previously trying to search something in the format
foo.bar wouldn’t yield any results. We’ve gone some way to implementing scoping so if you search for
foo.bar, Reflector will look for everything ending with
foo in it in the assembly hierarchy, then look for everything containing
bar within that. You can see an example of this below:
First beta build – no scoping:
Now with scoping:
It’s not perfect but it goes some way towards providing flexibility in the filter. We’ve added a few other visual enhancements like borders and icons so the whole thing should feel a little more polished.
In addition to this, a few people have reported problems with the Derived Types functionality. Looking at interfaces in Reflector usually isn’t that informative, so you normally have to expand the Derived Types node to look at which classes implement that interface:
In earlier versions this could sometimes be pretty slow, especially if you had lots of assemblies loaded in the current assembly list. This was because Reflector would look for the derived types in all the assemblies loaded. Now we first look for every assembly that could be related to what you’re looking for and search through that (usually smaller) subset of assemblies.