Mark Miller

IntelliRush Hierarchical Filtering

In CodeRush Classic 15.1 and in CodeRush for Roslyn we added the ability to filter Intellisense members by the class where they are declared.

Here’s how it works. To show this in action, I created a new Windows Universal App, and opened the MainPage.xaml.cs file. Inside the constructor, I typed “this.”

Here’s what I see:

IntelliRush

That’s about 165 entries. That’s a lot to wade through. I can reduce the list if I have an idea of where to look in the hierarchy.

With IntelliRush’s new Hierarchical Filtering, this is easy. I tap the Ctrl key…

IntelliRushCtrlKeyPressed

On the right I see “Hierarchy”.

So I press the letter “h” and I see the class hierarchy listed on the right, from MainPage (the type of the “this” reference) up to Object

IntelliRushHierarchicalMenuUp

Now, if I know the class I want to see members from, I can simply press the number associated with that class. For example, if I only want to see members from the FrameworkElement class shown in this list, I simply press the number 4 from the hint, and my list of 165 members drops to 34:

IntelliRushFrameworkElementEntriesOnly

If I want to slice the class hierarchy to include a range of classes, for example UIElement and up, I can do the following:

  1. Tap Ctrl
  2. Press h

    The Hierarchy hint displays:

    IntelliRushHierarchicalMenu

    UIElement is number 5. So if I want to see members declared in UIElement and all its ancestors, all I need to do is…
  3. Press Shift+5

And with those three keystrokes IntelliRush shows only the entries declared in UIElement and up:

IntelliRushShowingObjectToUIElement

Shift + the class number shows members declared in the specified class and above.
Ctrl + the class number shows members declared in the specified class and below.

On most keyboards the Shift key is above the Ctrl key, so you may find their position (Shift above, Ctrl below) helpful in remembering which modifier key to hit.

The active class is always numbered zero, which allows for some useful shortcuts to keep in mind:

Member Scope To filter, tap Ctrl, press H, and then:
Active class only 0
Parent class only 1
Active & parent classes only Ctrl+1
Parent class and above Shift+1
All classes (resets an active filter) Shift+0

Combining Filters

You can combine a hierarchical filter with a member kind filter. Only want to see events declared in the active class or its ancestor? Easy. First, apply a hierarchical filter to isolate members to only the ancestry you’re interested in. Next, apply the member kind filter you want (e.g., tap Ctrl, then press E, to only see events).

Try it Out

IntelliRush’s Hierarchical Filtering is available in both CodeRush Classic 15.1 and CodeRush for Roslyn 1.0.

Published Jun 09 2015, 01:00 AM by
Bookmark and Share

Comments

Denis Sowa

Great Feature! I like it!

June 10, 2015 2:53 AM

About Mark Miller (DevExpress)

Mark Miller is a C# MVP with strong expertise in decoupled design, plug-in architectures, and great UI. Mark is Chief Architect of the IDE Tools division at Developer Express, and is the visionary force behind productivity tools like CodeRush and Refactor!, as well as the DXCore extensibility layer for Visual Studio. Mark is a popular speaker at conferences around the world and has been writing software for over two decades.
LIVE CHAT

Chat is one of the many ways you can contact members of the DevExpress Team.
We are available Monday-Friday between 7:30am and 4:30pm Pacific Time.

If you need additional product information, write to us at info@devexpress.com or call us at +1 (818) 844-3383

FOLLOW US

DevExpress engineers feature-complete Presentation Controls, IDE Productivity Tools, Business Application Frameworks, and Reporting Systems for Visual Studio, along with high-performance HTML JS Mobile Frameworks for developers targeting iOS, Android and Windows Phone. Whether using WPF, ASP.NET, WinForms, HTML5 or Windows 10, DevExpress tools help you build and deliver your best in the shortest time possible.

Copyright © 1998-2017 Developer Express Inc.
All trademarks or registered trademarks are property of their respective owners