Navigation and search improvements in ReSharper 2016.3
Today we’d like to recap the most important changes in navigation and search that were introduced in ReSharper 2016.3.
Find Results window is populated asynchronously
If your solution is large enough, finding references of heavily used symbols can take time, delaying work with your code. To address this issue, we updated the usage search mechanism to make it async. Both Usages of Symbol pop-up and Find Results window are filled asynchronously, allowing you to work with partial search results. If you invoke Usages of Symbol (Shift + Alt + F12) and notice that search is taking a long time, press + on the number pad to open the Find Results window: as a result, you will be able to continue working on the project while search is being completed.
Remembering the last search
We enhanced the Go to… family of search actions with a setting to remember the last search. This behavior is turned off by default and can be enabled on the Environment | Search and Navigation page of the ReSharper options. When this option is selected, ReSharper will also use your selection in the editor as the search string.
Redesigned Recent Files and Recent Edits
We made minor improvements to Recent Files (Ctrl + ,) and Recent Edits (Ctrl + Shift + ,) pop-up windows. They now show the path to the file so that you don’t confuse files with similar names. The list of opened files or recent edits is saved separately for each solution you open and is not cleared when you close it. This means that you can invoke these commands right after opening the solution to get the list of files you worked with or items you modified in your previous working sessions. Any unwanted item can be easily removed from the list by pressing the Delete key.
Recent Edits displays each edit in the same method as a separate entry by default. If you want to merge locations, you can select Merge locations in recent edits on the Environment | Search & Navigation page of ReSharper options. In this case, the most recent edit in the method will be shown.
Advanced matching in SSR
Let’s take a look at a small but powerful update to the ReSharper’s structural search and replace (SSR) that helps you find and replace blocks of code matching a particular pattern. In C#, integer constants can now be matched by value regardless of how they are encoded:
Go to Text supports more file types
Another navigation feature, Go to text, received support for additional file formats. On top of existing file types, it now supports finding text in .less, .hbs, .coffee, .scss, .dart, .as and .styl files. This navigation command works in global scope and you can invoke it by pressing Ctrl+T three times.
Structural navigation in more languages
We do hope that since ReSharper 2016.2 release you’ve been enjoying increased productivity with structural navigation when coding in C#, HTML, XML or XAML. This feature allows you to use Tab and Shift+Tab keys to quickly move between code elements you need to edit without using a mouse cursor. For example, when editing a
for statement, Tab will select the initializer statement, then the terminating condition and then the iterator statement. Shift+Tab will do the same but in reverse.
Go to Implementation works in TypeScript
Go to Implementation now works for TypeScript types too: you can jump from a base type or member to any of its end implementations, bypassing intermediate steps in the inheritance chain. As usual for ReSharper’s contextual navigation actions, Go to Implementation is available from the Navigate To menu. Alternatively, you can invoke the action when you click a base type or member while holding Ctrl+Alt keys.
Get the latest ReSharper
This wraps up the list of most prominent updates to navigation and search in ReSharper 2016.3. Please download the latest ReSharper and try the new features yourself.
If you encounter any issues or have feature suggestions, please let us know!
Subscribe to Blog updates
Thanks, we've got you!
Eager, Lazy and Explicit Loading with Entity Framework Core
Entity Framework Core (EF Core) supports a number of ways to load related data. There’s eager loading, lazy loading, and explicit loading. Each of these approaches have their own advantages and drawbacks. In this post, let’s have a quick look at each of these ways to load data for navigational prope…
OSS Power-Ups: bUnit – Webinar Recording
The recording of our webinar, OSS Power-Ups: bUnit, with Egil Hansen and Steven Giesel, is available. This was the twelfth episode of our OSS Power-Ups series, where we put a spotlight on open-source .NET projects. Subscribe to our community newsletter to receive notifications about future webi…
Accelerating Your Testing Workflow with Unit Test Creation and Navigation
Unit tests play an important role in our daily development workflow. They help us ensure our codebase's correctness when writing new functionality or performing refactorings to improve readability and maintainability. In the process, we often create new test files that accompany the p…
Introducing Predictive Debugging: A Game-Changing Look into the Future
With the introduction of debugging tools, software developers were empowered to interactively investigate the control flow of software programs to find bugs in live environments. At JetBrains, we've always strived to improve the art of debugging. Besides the more standard things you expect from a de…